VB producción del juego de la serpiente
Copie el código en un formulario vacío y presione F5 para ejecutarlo.
Opción explícita
Privado con eventos Timer1 como temporizador
Privado con eventos Label1 como etiqueta
Dim GFangXiang como booleano
Atenuar HWB como único
Atenuar She() como ShenTi
Atenuar X mientras, Y mientras
Atenuar ZhuangTai(23, 23) mientras
Tipo privado ShenTi
F Mientras
X Mientras
Y Mientras
Tipo final
p>
p>
Private Sub Form_KeyDown(KeyCode como entero, Shift como entero)
Atenuar C siempre
Si KeyCode = 27, entonces finaliza
Si KeyCode = 32 Entonces
Si Timer1.Enabled = True Entonces
Timer1.Enabled = False
Label1.Visible = True
Else
Timer1.Enabled = True
Label1.Visible = False
Finalizar si
Fin si
C = UBound(Ella)
Si GFangXiang = Verdadero, entonces salga de Sub
Seleccione el código clave del caso
Caso 37
Si Ella(C) = 2 Luego Salir Sub
Ella(C).F = 0
GFangXiang = Verdadero
Caso 38
Si She(C).F = 3 Entonces Salir Sub
She(C).F = 1
GFangXiang = True
Caso 39 p>
Si She(C).F = 0 Entonces Salir Sub
She(C).F = 2
GFangXiang = True
Caso 40
Si She(C).F = 1 Entonces Salir Sub
She(C).F = 3
GFangXiang = True
Fin de selección
End Sub
Sub privado Form_Load()
Me.AutoRedraw = True
Me.BackColor = amp; HC000amp;
Me.Fi
llColor = 255
Me.FillStyle = 0
Me.ScaleWidth = 24
Me.ScaleHeight = 24
Me.WindowState = 2
Establecer Temporizador1 = Controls.Add("VB.Timer", "Timer1")
Establecer Etiqueta1 = Controls.Add("VB.Label", "Label1")
Label1.AutoSize = True
Label1.BackStyle = 0
Label1 = "Pausa"
Label1.ForeColor = RGB(255, 255, 0)
Label1.FontSize = 50
ChuShiHua
End Sub
Sub privado Form_Resize()
En caso de error, Ir a 1:
Conmigo
Si .WindowState lt;gt 1 Entonces
.Cls
.ScaleMode = 3
HWB = .ScaleHeight / .ScaleWidth
.ScaleWidth = 24
.ScaleHeight = 24
Label1.Move (Me .ScaleWidth - Label1.Width) / 2, (Me.ScaleHeight - Label1.Height) / 2
HuaTu
Me.Line (X, Y)-(X 1, Y 1), RGB(255, 255, 0), BF
Fin si
Fin con
1:
Fin Sub
Private Sub Timer1_Timer()
Atenuar C mientras, I mientras
En caso de error, Ir a 2:
QingChu
C = UBound(Ella)
Seleccione Caso Ella(C).F
Caso 0
Si ZhuangTai(Ella(C).X - 1, Ella(C).Y) = 2 Entonces
C = C 1
ReDim Preservar Ella(C)
Ella(C).F = Ella(C - 1).F
Ella(C).X = Ella(C - 1).X - 1
Ella(C).Y = Ella(C - 1).Y
ChanShengShiWu
Ir a 1:
ElseIf ZhuangTai(She(C).X -
1, Ella(C).Y) = 1 Entonces
Ir a 2:
Finalizar si
Caso 1
Si ZhuangTai( Ella(C).X, Ella(C).Y - 1) = 2 Entonces
C = C 1
ReDim Preservar Ella(C)
Ella(C).F = Ella(C - 1).F
Ella(C).X = Ella(C - 1).X
Ella(C).Y = Ella(C - 1).Y - 1
ChanShengShiWu
Ir a 1:
ElseIf ZhuangTai(Ella(C).X, Ella(C) .Y - 1) = 1 Entonces
Ir a 2:
Finalizar si
Caso 2
Si ZhuangTai(Ella(C) .X 1, Ella(C).Y) = 2 Entonces
C = C 1
ReDim Preservar Ella(C)
Ella(C). F = Ella(C - 1).F
Ella(C).X = Ella(C - 1).X 1
Ella(C).Y = Ella(C - 1).Y
ChanShengShiWu
Ir a 1:
ElseIf ZhuangTai(Ella(C).X 1, Ella(C).Y) = 1 Luego
Ir a 2:
Finalizar si
Caso 3
Si ZhuangTai(Ella(C).X, Ella(C) .Y 1) = 2 Entonces
C = C 1
ReDim Preservar Ella(C)
Ella(C).F = Ella(C - 1 ).F
Ella(C).X = Ella(C - 1).X
Ella(C).Y = Ella(C - 1).Y 1 p>
ChanShengShiWu
Ir a 1:
ElseIf ZhuangTai(Ella(C).X, Ella(C).Y 1) = 1 Entonces
Ir a 2:
Finalizar si
Finalizar selección
ZhuangTai(She(0).X, She(0).Y) = 0
Para I = 0 a C
Seleccione Caso Ella(I).F
Caso 0
Ella(I).X = Ella( I).X-1
Caso 1
Ella(I).Y = Ella(I).Y - 1
Caso 2
Ella(I).X = Ella(I).X 1
Caso 3
Ella(I).Y = Ella(I).Y 1
Selección final
Siguiente
TiaoZheng
1:
GFangXiang = False
ZhuangTai(Ella(C).X, Ella(C ).Y) = 1
HuaTu
Salir Sub
2:
If MsgBox("El juego ha terminado, haz clic en " Sí" Reinicia el juego, haz clic en "No"", vbYesNo, "Snake") = vbYes Entonces
ChuShiHua
De lo contrario
Finalizar
Finalizar si
End Sub
Sub privado ChuShiHua()
Me.Cls
Timer1.Enabled = True
Timer1.Interval = 200
Borrar ZhuangTai
ReDim She(2)
She(0).F = 2
Ella(0).X = 9
Ella(0).Y = 11
ZhuangTai(9, 11) = 1
Ella(1 ).F = 2
Ella(1).X = 10
Ella(1).Y = 11
ZhuangTai(10, 11) = 1
Ella(2).F = 2
Ella(2).X = 11
Ella(2).Y = 11
ZhuangTai(11, 11) = 1
HuaTu
ChanShengShiWu
End Sub
Sub privado QingChu()
Atenuar I mientras
For I = 0 To UBound(She)
Me.Line (She(I).X, She(I).Y)- (Ella(I).X 1, Ella(I).Y 1), Yo.BackColor, BF
Siguiente
Fin Sub
Sub privado HuaTu ()
Dim I As Long
For I = 0 To UBound(She)
Me.Circle (She(I).X 0.5, She( I).Y 0.5), 0.49, RGB(255, 255, 0), , , HWB
Siguiente
End Sub
Sub privado TiaoZheng()
Atenuar I siempre
Para I = 0 a UBou
nd(Ella) - 1
Ella(I).F = Ella(I 1).F
Siguiente
Fin Sub
Privado Sub ChanShengShiWu()
Temporizador aleatorio
1:
X = Int(Rnd * 24)
Y = Int( Rnd * 24)
Si ZhuangTai(X, Y) gt; 0 Entonces Ir a 1:
ZhuangTai(X, Y) = 2
Me.Line (X, Y)-(X 1, Y 1), RGB(255, 255, 0), BF
End Sub
Esto debería ser