Visual Basic: Weiß jemand wie ich diesen Code abändern muss, um vier Spieler spielen zu lassen?

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