Lange Endif Abfrage

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Lange Endif Abfrage

    Hallo und guten Morgen
    Angesteckt von der Dart WM im Fernsehen versuche ich gerade mir eine kleine Dartverwaltung zu schreiben.
    Um zu wissen, wie oft habe ich welches Feld getroffen, habe ich folgenden Weg gewählt:

    VB.NET-Quellcode

    1. If var1_dran_bool = True And Feld1_1 = "S" And zahl1_1 = 1 Then
    2. zaehlen_1_S1 = zaehlen_1_S1 + 1
    3. ElseIf var1_dran_bool = True And Feld2_1 = "S" And zahl2_1 = 1 Then
    4. zaehlen_1_S1 = zaehlen_1_S1 + 1
    5. ElseIf var1_dran_bool = True And Feld3_1 = "S" And zahl3_1 = 1 Then
    6. zaehlen_1_S1 = zaehlen_1_S1 + 1
    7. ' Die doppelte 1
    8. ElseIf var1_dran_bool = True And Feld1_1 = "D" And zahl1_1 = 1 Then
    9. zaehlen_1_D1 = zaehlen_1_D1 + 1
    10. ElseIf var1_dran_bool = True And Feld2_1 = "D" And zahl2_1 = 1 Then
    11. zaehlen_1_D1 = zaehlen_1_D1 + 1
    12. ElseIf var1_dran_bool = True And Feld3_1 = "D" And zahl3_1 = 1 Then
    13. zaehlen_1_D1 = zaehlen_1_D1 + 1
    14. ' Die dreifache 1
    15. ElseIf var1_dran_bool = True And Feld1_1 = "T" And zahl1_1 = 1 Then
    16. zaehlen_1_T1 = zaehlen_1_T1 + 1
    17. ElseIf var1_dran_bool = True And Feld2_1 = "T" And zahl2_1 = 1 Then
    18. zaehlen_1_T1 = zaehlen_1_T1 + 1
    19. ElseIf var1_dran_bool = True And Feld3_1 = "T" And zahl3_1 = 1 Then
    20. zaehlen_1_T1 = zaehlen_1_T1 + 1
    21. ' Die einfache 2
    22. ElseIf var1_dran_bool = True And Feld1_1 = "S" And zahl1_1 = 2 Then
    23. zaehlen_1_S2 = zaehlen_1_S2 + 1
    24. ElseIf var1_dran_bool = True And Feld2_1 = "S" And zahl2_1 = 2 Then
    25. zaehlen_1_S2 = zaehlen_1_S2 + 1
    26. ElseIf var1_dran_bool = True And Feld3_1 = "S" And zahl3_1 = 2 Then
    27. zaehlen_1_S2 = zaehlen_1_S2 + 1
    28. ' Die doppelte 1
    29. ElseIf var1_dran_bool = True And Feld1_1 = "D" And zahl1_1 = 2 Then
    30. zaehlen_1_D2 = zaehlen_1_D2 + 1
    31. ElseIf var1_dran_bool = True And Feld2_1 = "D" And zahl2_1 = 2 Then
    32. zaehlen_1_D2 = zaehlen_1_D2 + 1
    33. ElseIf var1_dran_bool = True And Feld3_1 = "D" And zahl3_1 = 2 Then
    34. zaehlen_1_D2 = zaehlen_1_D2 + 1
    35. ' Die dreifache 1
    36. ElseIf var1_dran_bool = True And Feld1_1 = "T" And zahl1_1 = 2 Then
    37. zaehlen_1_T2 = zaehlen_1_T2 + 1
    38. ElseIf var1_dran_bool = True And Feld2_1 = "T" And zahl2_1 = 2 Then
    39. zaehlen_1_T2 = zaehlen_1_T2 + 1
    40. ElseIf var1_dran_bool = True And Feld3_1 = "T" And zahl3_1 = 2 Then
    41. zaehlen_1_T2 = zaehlen_1_T2 + 1
    42. .... noch bis zum Doppelbull
    43. End If

    Da es ja 22 Felder (1-20 , Singlebull,Doppelbull) sind werden es 64 elseif Abfragen.
    Kann man das eleganter lösen, und wenn ja wie

    trebron57
    Ebenso muss man nicht "bool = True" prüfen ein bool ist entweder True oder False, das benötigt keine Prüfung mehr^^

    Wird bei dir mit einem Random oder so gearbeitet, oder hast du quasi ein kleines Spiel gezeichnet? was passiert wenn ein Pfeil auf die fläche Trifft?
    Wäre es nicht einfacher ein Konstrukt zu bauen, in dem Die Fläche die getroffen wurde, den Zähler verändert, anstatt jegliche Möglichkeit abzufragen?

    ansonsten eben auch das was Manawyrm bereits sagte.

    EaranMaleasi schrieb:

    Wird bei dir mit einem Random oder so gearbeitet, oder hast du quasi ein kleines Spiel gezeichnet? was passiert wenn ein Pfeil auf die fläche Trifft?
    Wäre es nicht einfacher ein Konstrukt zu bauen, in dem Die Fläche die getroffen wurde, den Zähler verändert, anstatt jegliche Möglichkeit abzufragen?


    Ich habe mir einen Dartscheibe als Hintergrund eingefügt. Da kann ich auf das entsprechende Feld klicken. Aber da man ja auch nur ein Mensch ist, kann sich verklicken.
    Dann wäre der "Fehlwurf" aber schon in der Statistik drinne. (Momentaner Zustand)

    trebron57
    offensichtlich kann man auch von einer Dart-Scheibe ein Datenmodell erstellen :D
    Da scheint es verschiedene Felder zu geben, die verschiedenen Gruppen zugeordnet sind, sodass, je nachdem was getroffen wurde, bestimmte Berechnungen auszuführen sind.
    Das sollte iwie enden in einer ganz einfachen Aufruf, wie

    VB.NET-Quellcode

    1. myDartscheibe(x,y).Increment
    oder so, und diese Methode sucht anhand der Indizees den richtigen Datensatz raus, dem der Treffer zugeordnet wird.
    Dabei müssen die Indizees nicht x, y sein, vlt. reicht ein r - Index, der den Abstand vonne Mitte angibt, oder vlt. Idizees r, alpha, also Abstand von Mitte und Winkel, um den Treffer zu lokalisieren.

    trebron57 schrieb:

    Aber da man ja auch nur ein Mensch ist, kann sich verklicken.

    also sind die felder exakt 3 Pixel groß oder wie? ;)

    Du könntest doch einfach, (je nachdem was du als fehlwurf bezeichnest, alles andere als Triple-20?) eine Liste führen, mit allen bisher getroffenen Feldern, in der sich jedes Feld selbst einträgt, sobald es getroffen wurde. so must du weder abfragen ob der Pfeil getroffen hat, noch jedes einzelne Feld abfragen ob es getroffen wurde, und ob es ein Single, Double oder Triple ist. Das ist dann einfach eine List(of DartFeld) und die Klasse DartFeld hat dann eben die properties SingDoubTrip und Wert. dann kannst du später aus den beiden informationen den Wert errechnen welcher getroffen wurde.