116 lines
3.3 KiB
Text
116 lines
3.3 KiB
Text
|
|
REM Snake
|
|||
|
|
|
|||
|
|
#define EXTCHAR Chr(255)
|
|||
|
|
|
|||
|
|
Dim Shared As Integer puntos, contar, longitud, posX, posY, oldhi = 0
|
|||
|
|
Dim Shared As Integer x(500), y(500)
|
|||
|
|
For contar = 1 To 500
|
|||
|
|
x(contar) = 0 : y(contar) = 0
|
|||
|
|
Next contar
|
|||
|
|
Dim Shared As Byte fruitX, fruitY, convida
|
|||
|
|
Dim Shared As Single delay
|
|||
|
|
Dim Shared As String direccion, usuario
|
|||
|
|
|
|||
|
|
Sub Intro
|
|||
|
|
Cls
|
|||
|
|
Color 15, 0
|
|||
|
|
Print " _ _ _ _ "
|
|||
|
|
Print " / \ / \ / \ / \ "
|
|||
|
|
Print " ___________/ _\/ _\/ _\/ _\____________ "
|
|||
|
|
Print " __________/ /_/ /_/ /_/ /______________ "
|
|||
|
|
Print " | /\ /\ /\ / \ \___ "
|
|||
|
|
Print " |/ \_/ \_/ \_/ \ "+Chr(248)+"\ "
|
|||
|
|
Print " \___/--< "
|
|||
|
|
Color 14, 0
|
|||
|
|
Locate 10, 28: Print "---SNAKE---"
|
|||
|
|
Locate 12, 4: Print "Para jugar, usa las teclas de flecha para moverte."
|
|||
|
|
Locate 13, 4: Print "Pulsa <1-3> para velocidad, o <Esc> para salir."
|
|||
|
|
If puntos > oldhi Then oldhi = puntos
|
|||
|
|
Locate 14, 4: Print "M xima puntuaci¢n: "; oldhi
|
|||
|
|
usuario = ""
|
|||
|
|
While usuario = ""
|
|||
|
|
usuario = Inkey
|
|||
|
|
Wend
|
|||
|
|
If usuario = Chr(27) Then End 'ESC
|
|||
|
|
delay = .14
|
|||
|
|
If usuario = "1" Then delay = .26
|
|||
|
|
If usuario = "3" Then delay = .08
|
|||
|
|
Cls
|
|||
|
|
longitud = 9
|
|||
|
|
puntos = 0
|
|||
|
|
posX = 40 : posY = 10
|
|||
|
|
direccion = "derecha"
|
|||
|
|
convida = true
|
|||
|
|
fruitX = Int(Rnd * 79) + 1
|
|||
|
|
fruitY = Int(Rnd * 20) + 1
|
|||
|
|
Locate 22, 1
|
|||
|
|
For contar = 1 To 80
|
|||
|
|
Print Chr(196); ''"-";
|
|||
|
|
Next contar
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Sub MenuPrincipal
|
|||
|
|
Dim As Integer num, oldX, oldY
|
|||
|
|
Dim As Single tm, tm2
|
|||
|
|
|
|||
|
|
Color 10
|
|||
|
|
Locate 23, 2: Print "SNAKE - <Esc> salir - Puntos: "; puntos
|
|||
|
|
If posX = fruitX And posY = fruitY Then
|
|||
|
|
longitud += 1
|
|||
|
|
puntos += 1
|
|||
|
|
fruitX = Int(Rnd * 79) + 1
|
|||
|
|
fruitY = Int(Rnd * 21) + 1
|
|||
|
|
End If
|
|||
|
|
Locate fruitY, fruitX : Color 12: Print Chr(01) : Color 10'"@"
|
|||
|
|
x(0) = posX : y(0) = posY
|
|||
|
|
|
|||
|
|
For contar = 1 To 499
|
|||
|
|
num = 500 - contar
|
|||
|
|
x(num) = x(num - 1)
|
|||
|
|
y(num) = y(num - 1)
|
|||
|
|
Next contar
|
|||
|
|
|
|||
|
|
oldX = x(longitud) : oldY = y(longitud)
|
|||
|
|
If oldX > 0 And oldY > 0 Then Locate oldY, oldX : Print " "
|
|||
|
|
|
|||
|
|
Locate posY, posX: Print Chr(219) '"Û"
|
|||
|
|
tm = Timer
|
|||
|
|
tm2 = tm + delay
|
|||
|
|
While tm < tm2
|
|||
|
|
tm = Timer
|
|||
|
|
usuario = Inkey
|
|||
|
|
If usuario = EXTCHAR & "H" Then direccion = "arriba"
|
|||
|
|
If usuario = EXTCHAR & "P" Then direccion = "abajo"
|
|||
|
|
If usuario = EXTCHAR & "K" Then direccion = "izquierda"
|
|||
|
|
If usuario = EXTCHAR & "M" Then direccion = "derecha"
|
|||
|
|
If usuario = Chr(27) Then Intro
|
|||
|
|
Wend
|
|||
|
|
If direccion = "derecha" Then posX += 1
|
|||
|
|
If posX > 80 Then convida = false
|
|||
|
|
If direccion = "izquierda" Then posX -= 1
|
|||
|
|
If posX < 1 Then convida = false
|
|||
|
|
If direccion = "arriba" Then posY -= 1
|
|||
|
|
If posY < 1 Then convida = false
|
|||
|
|
If direccion = "abajo" Then posY += 1
|
|||
|
|
If posY > 21 Then convida = false
|
|||
|
|
|
|||
|
|
For contar = 0 To longitud
|
|||
|
|
If posX = x(contar) And posY = y(contar) Then convida = false
|
|||
|
|
Next contar
|
|||
|
|
|
|||
|
|
If convida = false Then
|
|||
|
|
Cls : Locate 11, 19: Print "Pulsa <space>..."
|
|||
|
|
Locate 10, 18: Print "Has muerto! Con"; puntos; " puntos." : Sleep
|
|||
|
|
While Inkey = "": Wend
|
|||
|
|
Intro
|
|||
|
|
End If
|
|||
|
|
MenuPrincipal
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
'--- Programa Principal ---
|
|||
|
|
Randomize Timer
|
|||
|
|
Intro
|
|||
|
|
MenuPrincipal
|
|||
|
|
End
|
|||
|
|
'--------------------------
|