Visual Basic: Weiß jemand wie ich diesen Code abändern muss, um vier Spieler spielen zu lassen?
Hallo Leute,
ich soll im Informatikunterricht ein Würfelspiel mit vier Spielern erstellen. Bisher habe ich zwei Spieler, die immer nach dem Speichervorgang des anderen würfeln.
Code:
rivate Sub BtnSpeichern_Click(sender As System.Object, e As System.EventArgs) Handles BtnSpeichern.Click
If TxtSpieler1.BackColor = Color.LightSeaGreen Then
TxtSpieler2.BackColor = Color.LightSeaGreen
TxtSpieler3.BackColor = Color.LightSeaGreen
TxtSpieler4.BackColor = Color.LightSeaGreen
TxtSpieler1.BackColor = Color.Salmon
Punkte1 = Punkte1 + summeAktuell
LblPunkte1.Text = Punkte1
If Punkte1 >= TxtZiel.Text Then
MsgBox(TxtSpieler1.Text & " Hat Gewonnen!")
BtnReset.Enabled = True
PictureBox1.Visible = True
End If
Else
TxtSpieler1.BackColor = Color.LightSeaGreen
TxtSpieler3.BackColor = Color.LightSeaGreen
TxtSpieler4.BackColor = Color.LightSeaGreen
TxtSpieler2.BackColor = Color.Salmon
Punkte2 = Punkte2 + summeAktuell
LblPunkte2.Text = Punkte2
If Punkte2 >= TxtZiel.Text Then
MsgBox(TxtSpieler2.Text & " Hat Gewonnen!")
BtnReset.Enabled = True
PictureBox1.Visible = True
End If
End If
summeAktuell = 0
LblAktuell.Text = 0
Weiß jemand wie ich diesen Code abändern muss, um vier Spieler spielen zu lassen?
Jetzt schon einmal danke für euere Hilfe.
MfG Felix
1 Antwort
So wie es aussieht, wird ein Spieler in deinem Spiel durch verschiedene Eigenschaften definiert (Farbe, Gesamtpunktezahl, ...). Dementsprechend würde ich wohl auch einen eigenen Typ anlegen.
Class Player
Public Property Points As Integer
Public Property TextBox As TextBox
' etc. ...
Für das Spiel könnte man sich ein Array anlegen, welches alle Spieler bündelt.
Private currentPlayer As Integer = 0
Private players(3) As Player
Public Sub New()
For index As Integer = 0 To players.Length - 1
players(index) = New Player
Next
players(0).TextBox = Player1TextBox
players(1).TextBox = Player2TextBox
players(2).TextBox = Player3TextBox
players(3).TextBox = Player4TextBox
End Sub
Der Vorteil dieser beiden Maßnahmen wäre, dass du nicht mehr mit mehreren nummerierten Variablen (Punkte1, Punkte2, u.ä.) arbeitest, sondern nur noch Array und Index bräuchtest, um Eigenschaften für einen Spieler zu definieren.
Beispiel:
players(2).TextBox.BackColor = Color.Salmon
Hier würde vom dritten Spieler die Farbe seiner Textbox gesetzt werden.
Die Tatsache, dass der Index dynamisch berechnet werden kann, hilft beim Spielerwechsel. Das oben definierte Feld currentPlayer dient folgend dazu, bei jedem Zug den aktuellen Spieler zu erhalten.
Dim player As Player = players(currentPlayer)
Am Ende eines jeden Zugs wird dessen Wert um 1 erhöht, sodass bei der nächsten Spielerabfrage das nächste Element aus dem Array gewählt wird. Sollte der Wert über die Arraylänge hinauskommen, muss er wieder auf 0 gesetzt werden.
currentPlayer += 1
If currentPlayer = players.Length Then
currentPlayer = 0
End If