Bin gerade dabei ein Spiel " Tetris" zu Programmieren.
Den grundstein habe Ich aus einen Buch und jetzt möchte ich es für meine Bedürfnise änder.
Kann leider nur drei gleiche Panel(Steine) entfernen, möchte aber fünf gleiche entfernen können, als besondere Zusatz von Punkten.
Diese ist der Code, der die Steine entfernen soll, wenn es fünf gleiche sind:
(Meine Idee)
kann mir jemand sagen wo da mein fehler ist, als Meldung bekomme ich immer "Auserhalb des defnierten Bereich"
der orginal Code für drei Steine geht so:
code dazu
Den grundstein habe Ich aus einen Buch und jetzt möchte ich es für meine Bedürfnise änder.
Kann leider nur drei gleiche Panel(Steine) entfernen, möchte aber fünf gleiche entfernen können, als besondere Zusatz von Punkten.
Diese ist der Code, der die Steine entfernen soll, wenn es fünf gleiche sind:
(Meine Idee)
VB.NET-Quellcode
- If F(Z, S) <> Leer And
- F(Z, S + 1) <> Leer And
- F(Z, S - 1) <> Leer And
- F(Z, S - 2) <> Leer Then
- If PL(F(Z, S)).BackColor = PL(F(Z, S + 1)).BackColor And
- PL(F(Z, S)).Backcolor = PL(F(Z, S + 2)).BackColor And
- PL(F(Z, S)).BackColor = PL(F(Z, S - 1)).BackColor And
- PL(F(Z, S)).BackColor = PL(F(Z, S - 2)).BackColor Then
- For SX = S To S + 2
- Controls.Remove(PL(F(Z, SX)))
- F(Z, SX) = Leer
- ZX = Z - 1Do While F(ZX, SX) <> Leer
- PL(F(ZX, SX)).Top = PL(F(ZX, SX)).Top + 20
- F(ZX + 1, SX) = F(ZX, SX)
- F(ZX, SX) = Leer
- ZX = ZX - 1
- Loop
- Next
- '##########
- For SX = S To S - 2
- Controls.Remove(PL(F(Z, SX)))
- F(Z, SX) = Leer
- ZX = Z + 1Do While F(ZX, SX) <> Leer
- PL(F(ZX, SX)).Top = PL(F(ZX, SX)).Top - 20
- F(ZX - 1, SX) = F(ZX, SX)
- F(ZX, SX) = Leer
- ZX = ZX + 1
- Loop
- Next
- NebenPrfen = True
- End If
- End If
kann mir jemand sagen wo da mein fehler ist, als Meldung bekomme ich immer "Auserhalb des defnierten Bereich"
der orginal Code für drei Steine geht so:
VB.NET-Quellcode
- If F(Z, S) <> Leer And
- F(Z, S + 1) <> Leer Then
- If PL(F(Z, S)).BackColor = PL(F(Z, S + 1)).BackColor And
- PL(F(Z, S)).Backcolor = PL(F(Z, S + 2)).BackColor Then
- For SX = S To S + 2
- Controls.Remove(PL(F(Z, SX)))
- F(Z, SX) = Leer
- ZX = Z - 1Do While F(ZX, SX) <> Leer
- PL(F(ZX, SX)).Top = PL(F(ZX, SX)).Top + 20
- F(ZX + 1, SX) = F(ZX, SX)
- F(ZX, SX) = Leer
- ZX = ZX - 1
- Loop
- Next
- 'NebenPruefen = True
- End If
- End If
code dazu
VB.NET-Quellcode
- ' index des aktuellen Panel
- Dim PX As Integer
- ' Spielfeld
- Dim F(14, 9) As Integer
- ' Zeile
- Dim PZ As Integer
- ' Spalte
- Dim PS As Integer
- 'Level/Punkte/Steine
- Dim Level As Integer
- Dim punkte As Integer
- Dim Steine As Integer
- ' Farbenliste
- Dim FarbenFeld() As Color = {Color.Red, Color.Blue, Color.Yellow,
- Color.Pink, Color.Green, Color.Magenta, Color.Brown, Color.Black}
- ' Konstanten fuer Feldpunkte
- Const Rand = -2
- Const Leer = -1
- ' leere liste von Spiel-Panels
- Dim PL As New ArrayList
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Susi“ ()