Code nacheinander ausführen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Hafreak.

    Code nacheinander ausführen

    Liebe Community,

    ich habe ein Problem:

    VB.NET-Quellcode

    1. Private Sub AddPlayerBtn_Click(sender As Object, e As EventArgs) Handles AddPlayerBtn.Click
    2. ListBox1.Items.Add(TextBox1.Text)
    3. TextBox1.Text = ""
    4. Button1.Image = Nothing
    5. Button2.Image = Nothing
    6. If My.Settings.gender = "male" Then
    7. My.Settings.Player1 = "male"
    8. ElseIf My.Settings.gender = "female" Then
    9. My.Settings.Player1 = "female"
    10. End If
    11. If My.Settings.gender = "male" Then
    12. My.Settings.Player2 = "male"
    13. ElseIf My.Settings.gender = "female" Then
    14. My.Settings.Player2 = "female"
    15. End If
    16. If My.Settings.gender = "male" Then
    17. My.Settings.Player3 = "male"
    18. ElseIf My.Settings.gender = "female" Then
    19. My.Settings.Player3 = "female"
    20. End If
    21. If My.Settings.gender = "male" Then
    22. My.Settings.Player4 = "male"
    23. ElseIf My.Settings.gender = "female" Then
    24. My.Settings.Player4 = "female"
    25. End If
    26. If My.Settings.gender = "male" Then
    27. My.Settings.Player5 = "male"
    28. ElseIf My.Settings.gender = "female" Then
    29. My.Settings.Player5 = "female"
    30. End If
    31. If My.Settings.gender = "male" Then
    32. My.Settings.Player6 = "male"
    33. ElseIf My.Settings.gender = "female" Then
    34. My.Settings.Player6 = "female"
    35. End If
    36. If My.Settings.gender = "male" Then
    37. My.Settings.Player7 = "male"
    38. ElseIf My.Settings.gender = "female" Then
    39. My.Settings.Player7 = "female"
    40. End If
    41. If My.Settings.gender = "male" Then
    42. My.Settings.Player8 = "male"
    43. ElseIf My.Settings.gender = "female" Then
    44. My.Settings.Player8 = "female"
    45. End If
    46. If My.Settings.gender = "male" Then
    47. My.Settings.Player9 = "male"
    48. ElseIf My.Settings.gender = "female" Then
    49. My.Settings.Player9 = "female"
    50. End If
    51. If My.Settings.gender = "male" Then
    52. My.Settings.Player10 = "male"
    53. ElseIf My.Settings.gender = "female" Then
    54. My.Settings.Player10 = "female"
    55. End If
    56. My.Settings.Save()
    57. End Sub


    Dieser Code soll eigentlich speichern welcher Spieler ein Junge oder Mädchen ist. Wie jedem wahrscheinlich klar ist, bewirkt der Code aber nur, dass alle Spieler entweder Junge oder Mädchen sind. Wie bringe ich den Computer dazu jedesmal den nächsten Spieler zu nehmen?

    Ich wäre sehr dankbar für eure Hilfe.

    liebe Grüße,

    Hafreak

    Hafreak schrieb:

    VB.NET-Quellcode

    1. If My.Settings.gender = "male" Then
    2. My.Settings.Player1 = "male"
    3. ElseIf My.Settings.gender = "female" Then
    4. My.Settings.Player1 = "female"
    5. End If
    What :?:

    VB.NET-Quellcode

    1. My.Settings.Player1 = My.Settings.gender
    und fast feddich.
    Allerdings wird My.Settings.gender nicht geändert, also sind alle gleich.
    Also

    VB.NET-Quellcode

    1. My.Settings.Player1 = MyGender(0)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Eure Ideen sind wahrscheinlich gut, vor allem die Idee mit

    VB.NET-Quellcode

    1. My.Settings.Player1 = My.Settings.gender
    war gut, allerdings komme ich danach nicht mehr ganz mit.
    Wie meinst du das mit der List (of Spieler)? Und das mit dem Index funktioniert auch nicht wirklich weil einfach nur der Buchstabe mit Index 0 zugeordnet wird: bei male wäre das "m".

    Könntet ihr eure Ideen vielleicht ein wenig erläutern? Hab wohl ne lange Leitung... :|
    Also das mit den Settings ist Müll. Wenn man 10 Spieler hat, legt man nicht 10 Settings an, sondern lieber überhaupt keines (weil eine Auflistung in den Settings anzulegen ist bisserl tricky).

    Du mußt dir eine Klasse proggen, namens "Spieler", die genau einen Spieler repräsentiert. Zum Beispiel hat son Spieler-Objekt eine Property IsMale As Boolean, daran erkennt man sein Geschlecht.
    Es gibt nur 2 Möglichkeiten eines Spieler-Geschlechts, deshalb boolean, und nicht "m" oder "w" oder noch sonderbarereres.

    Von dieser Klasse mehrere (meinetwegen 10) instanzieren und in eine List(Of Spieler) packen, aber das kommt erst später.
    Als erstes prog die Klasse Spieler und poste den Code.

    Hafreak schrieb:

    Die Klasse Spieler
    Fein.
    Und wie geht es weiter?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    naja, und davon dann einen Haufen in eine List(Of Spieler)

    VB.NET-Quellcode

    1. private _Spielers As new bindinglist(Of Spieler)
    2. '...
    3. for i=0 to 9
    4. _Spielers.Add(new Spieler with{.Name="Name"&i, .IsMale=(i mod 2) =0}
    5. next
    6. Listbox1.DisplayMember = "IsMale"
    7. Listbox1.DataSource=_Spielers


    Bin neu in VB sry
    glaub recht schnell lernen kannman mit dieses Buch lesen (hingegen das Galileio-Openbook ist Mist)
    Statt der Property IsMale, würde ich ein Enum "Genus" erstellen und eine Property "Geschlecht", sowie die Property "Name" (alle Propertys bis hierhin ReadOnly).
    Mach dir noch 2 Private-Variablen, deren Werte du im Kontruktor festlegst. Am Ende bzw am Ende vom Anfang sieht es dann so aus:

    VB.NET-Quellcode

    1. Public Class Spieler
    2. Public Enum Genus
    3. Mann
    4. Frau
    5. End Enum
    6. Private _genus As Genus
    7. Private _name As String
    8. Public Sub New(ByVal geschlecht As Genus, ByVal name As String)
    9. _genus = geschlecht
    10. _name = name
    11. End Sub
    12. Public ReadOnly Property Geschlecht As Genus 'ReadOnly, da man das Geschlecht während des Spiels nicht ändern können soll
    13. Get
    14. Return _genus
    15. End Get
    16. End Property
    17. Public ReadOnly Property Name As String 'ReadOnly, da man das Geschlecht während des Spiels nicht ändern können soll
    18. Get
    19. Return _name
    20. End Get
    21. End Property
    22. End Class


    Dann in deiner Form-Klasse:

    VB.NET-Quellcode

    1. Private spieler As List(of Spieler)


    Dann weist du in der Form_Load Methode den Spielern die gewünschten Werte zu.
    Guck dir den Code genau an und versuch ihn zu verstehen, du kannst immer fragen, aber Copy & Paste bringt dich nicht weiter.

    //Edit:
    ErfinderDesRades war schneller :D

    was die Leuts immer gegen Copy&Paste haben.
    Natürlich bringt einen das weiter. Vom bloßen Code-Angugge im Forum kannman doch nix kapieren. Ich kann hier auch Briefe an meine Oma einstellen und sagen, dassis Code - nur mit angugge kommste da nicht hinter.
    Man muß das zeug bei sich ins Projekt kopieren, und versuchen ans laufen zu bringen.
    Und dazu halt nachfragen.
    Vor allem wenns grade erstmalig läuft nicht gleich den Denk-Apparat abschalten, sondern grade dann die noch offenen Fragen klären - das bringt ein' weiter!

    ErfinderDesRades schrieb:

    Man muß das zeug bei sich ins Projekt kopieren, und versuchen ans laufen zu bringen.

    Ja, man muss versuchen es ans Laufen zu bringen. Aber C&P ist nicht zum Laufen bringen. Natürlich muss man den Code ausprobieren, aber wenns nicht klappt erst mal selbst probieren, statt zu sagen es geht nicht.