Frage zu meiner Lib

  • VB.NET

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

    Frage zu meiner Lib

    Hallo Leute,
    ich arbeite gerade an einer Lib für den xCox Controller bzw. nen emulierten PS3 Controller. Meine Frage ist nun, wie wäre es besser ? Wenn ich für jeden Stick X und Y angebe oder eine Grad-Zahl und dazu mit welcher Stärke er betätigt wird ?

    mfG Frank

    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Vektor?
    Würde ich zumindest vorziehen, da man da X- und Y-Komponente sowie den Betrag und Winkel herausholen kann und es nur ein einziger Datentyp ist.
    Hö? 8| Nee, ein Vektor. Also ein , der halt neben und noch den Betrag zurückgibt und aus dem man den Winkel herleiten kann. Da gibt's doch, wenn ich mich richtig entsinne in einem Erweiterungsframework von MS extra einen Namespace, der unter anderem(Quaternionen etc.) auch Vektoren bereitstellt. Sowas halt.

    EDIT: Jaa, ich meinte den System.Windows.Media.Media3D-Namespace, aber der hat "nur" 3D-Vektoren. Aber es gibt sonst noch wo 2D-Vektoren.

    EDIT2: Na, geht doch! :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Higlav“ ()

    Sry hab' noch von einem Vector wie du ihn beschreibst in VB.NET gehört xD Kannst du mir ein Tipp geben wie du das meinst ?
    Ich habe jetzt z.B.: X = 300 und Y = 300
    Wie kommt das in die Property ?
    So nicht:

    VB.NET-Quellcode

    1. Dim LeftVector As vector = StickX, StickY
    2. Public Property Vector As Integer
    3. Get
    4. Return LeftVector
    5. End Get
    6. Set(value As Integer)
    7. value = LeftVector
    8. End Set
    9. End Property
    Erstellst dir eine Vektor Klasse und baust alles mögliche ein.
    Kannst dich ja davon inspirieren lassen:
    msdn.microsoft.com/en-us/libra…na.framework.vector2.aspx
    Wie die Funktionen implementiert werden müssen kannst z.B. auf Wikipedia nachgucken. Ist einfaches Mathe. Bei 2D sowieso
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ein Vektor gibt ja einfach nur die Position in einem 2- bzw. 3-dimensionalem Raum an, und bietet noch einige Funktionen, um mit ihm zu rechnen. In dem Fall reichen ja die einfacheren 2D-Vektoren. Ich denke, dass hier dürfte dir auch helfen: frustfrei-lernen.de/mathematik…bene-raum-mathematik.html

    xd-franky-5 schrieb:

    Sry hab' noch von einem Vector wie du ihn beschreibst in VB.NET gehört xD Kannst du mir ein Tipp geben wie du das meinst ?

    Äh.. Ja, klar. So:

    Higlav schrieb:


    EDIT2: Na, geht doch! :D

    Einfach einen Verweis auf "WindowsBase"(bei Assamblies -> Framework -> ganz unten) setzen und schon kannst du die Vektorklasse(System.Windows.Vector) nutzen.
    Eine Eigene zu schreiben ist damit hinfällig... :huh:
    OK habs nun, danke :) Nur habe ich jetzt ein anderes Problem: Kann ich ein Ereignis unter ein Namespace machen ?
    Ich habe ein Namespace mit dem Namen "Controller" und darunter verschiedene Klassen wie "LeftStick", "RightStick" und darunter Events und Properties wie "Location". Wie kann ich also unter die Namespace das machen: "Public Sub Start(Number as integer) ..."
    Dabei wird der z.B. erste Controller gestartet und daraus Folgen dann RaiseEvents etc.
    Ganz ehrlich: Ich verstehe grad wirklich nciht, was du meinst/willst. 8|

    xd-franky-5 schrieb:

    Kann ich ein Ereignis unter ein Namespace machen ?

    Nein, das ist absolut unmöglich. Punkt. Events werden in Klassen definiert, welche dann jeweils unter Namespaces liegen. DAS ist möglich, aber Events direkt in einen Namespace zu platzieren geht schlicht und einfach nicht.

    xd-franky-5 schrieb:

    Ich habe ein Namespace mit dem Namen "Controller" und darunter verschiedene Klassen wie "LeftStick", "RightStick"

    Das finde ich alles andere als handlich. Mache doch eine Klasse Controller, welcher Properties wie LeftStick und RightStick hat(welche dann beide vom Typ Stick sind), die dann die Vektor-Property und was weiss ich noch beinhalten. Dann kannst du alle Events in die Controller-Klasse packen und hast somit alles schön gepackt dabei.

    xd-franky-5 schrieb:

    Wie kann ich also unter die Namespace das machen: "Public Sub Start(Number as integer) ..."
    Dabei wird der z.B. erste Controller gestartet und daraus Folgen dann RaiseEvents etc.

    Das ist wie das Event unter einem Namespace völlig unmöglich. Du kannst die Methode in ein Modul oder eine Klasse packen, aber ganz sicher nicht in einen Namespace. Alles muss seine Ordnung haben und Events und Methoden direkt in einen Namespace zu haben ist wirklich NUR umständlich.
    Zudem erschliesst sich mir nicht der Sinn hinter einer "Public Sub Start(Number as integer) ...". Denn dazu müsstest du zuerst einmal ein Objekt instanzieren, welches die Methode ausführt. Du meinst wahrscheinlich eine statische Methode "Public Shared Sub Start(number as integer) ...".
    Was ich dir raten würde ist, eben eine Controller-klasse anzulegen, welche entweder im Konstruktor oder vorzugsweise in einer statischen Methode, die dann instanziert wird und sich mit dem Controller verbindet.
    Wozu ist eigentlich "Number%" da? Wenn es sich hierbei um Controller Nummer XY handelt, der zum Verbinden eine Nummer braucht, würde cih zuerst mal den Unsigned Integer oder gar Unsinged Byte verwenden, da die Methode ja sowieso nur Zahlen aus annehmen dürfte...
    @ThePlexian Boh. Sollte eigentlich mit beiden gehen. :huh: Ausserdem hab' ich's ja nur formell aufgeschrieben nd da ist's ja eindeutig.
    Joa, also atan2 gibts ja nur in der Informatik, und passt das Ergebnis der Richtung des Vektors an ;)
    --> Wiki
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Deshalb ist er trotzdem auch Teil der Mathematik. Die meisten Mathematiker werden die Definition kennen und die, die es nicht tun, denen gibst du die mathematische Definition. Ansonsten würde da doch Code stehen.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Also ich habe jetzt die Class "Controller" und darin eine Structure?? "LeftStick" und darunter die Property "Location". ist wahrscheinlich falsch aber ich weiß nicht wie du das meinst. aber dabei habe ich auch ein Problem, wenn ich jetzt auf einer Form ein Event Handler haben will gibt es den Handler unter der Structre nicht.
    Darf ich dich mal ganz schamlos fragen, wie gut deine Programmierkenntnisse sind? :huh: Es erscheint mir äussert suspekt, dass wir aneinander vorbeireden. Das Wort Structure hast du als Allererster in den Thread gebracht und stand nie zur Diskussion. Und du kannst nicht einfach einen Handler in eine Structure verbauen, da eine Structure als aus primitiven Datentypen konstruierter Datentyp fungiert, der auf den Stack zu legen ist, weshalb Events in einer Structure sinnfrei sind, da diese beim Feuern Referenzobjekte zurückgeben, wobei das feuernde Objekt ja auch mitkommt, welches ja als Structure geboxt werden würde...
    Ich versuch's mal so:

    Quellcode

    1. [Controller]
    2. -LeftStick(Stick)
    3. -RightStick(Stick)
    4. -ButtonA(XbxButton)
    5. -ButtonB(XbxButton)
    6. -ButtonX(XbxButton)
    7. -ButtonY(XbxButton)
    8. -ControllCross(Cross)
    9. -MainXBoxButton(XbxButton)
    10. -SelectButton(XbxButton)
    11. -StarButton(XbxButton)
    12. -RT
    13. ...
    14. _Events_
    15. ControlTriggered
    16. [Stick]
    17. -Vector(System.Windows.Vector)
    18. -IsPressed(Boolean)
    19. ...
    20. _Events_(Friend)
    21. IsPushed
    22. IsTriggered
    23. [XbxButton]
    24. -IsPressed(Boolean)
    25. ...
    26. _Events_(Friend)
    27. IsPushed

    Und in der Controllerklasse leitest du alle untergeordneten Events nach oben weiter.

    Es wär' übrigens schön, wenn du auf meine angesprochenen Punkte im vorigen Post eingehen könntest.
    Ich arbeite sehr selten mit Libs. Und ich habe seit zwei Monaten überhaupt nicht programmiert. Jetzt fängt die Schule in meinem Bundesland wieder an und deshalb habe ich halt mal wieder ein wenig Lust etwas zu machen. Hab' das mit dem Event unter der Namespace gestrichen und habe nun auch das mit dem Vector etc. gemacht.

    Ein paar Fragen noch:
    - Die in den Brackets geschriebenen Wörter sollen Klassen sein ?
    - Die Wörter mit den Spiegelstrichen davor, sollen was sein ?
    - Wie erstelle ich einen Typ ?
    Ich hab's so hingeschrieben, dass diejenigen in den eckigen Klammern Klassen darstellen und darunter die Properties stehen. Die in den normalen Klammern sind bei den Properties die Typen und bei den Events das Attribut.

    xd-franky-5 schrieb:

    - Wie erstelle ich einen Typ ?

    ;(