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 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 - 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 ..." 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 '--------------------------