272 lines
6.7 KiB
Plaintext
272 lines
6.7 KiB
Plaintext
# basado en código de Antonio Rodrigo dos Santos Silva (gracias):
|
|
# http://statusgear.freeforums.net/thread/17/basic-256-tic-tac-toe
|
|
|
|
global playerturn$
|
|
global endGame$
|
|
global space$
|
|
global player1Score$
|
|
global player2Score$
|
|
global invalidMove$
|
|
global tecla$
|
|
global keyQ$
|
|
global keyW$
|
|
global keyE$
|
|
global keyA$
|
|
global keyS$
|
|
global keyD$
|
|
global keyZ$
|
|
global keyX$
|
|
global keyC$
|
|
global keySpace$
|
|
global keyEsc$
|
|
|
|
keyQ$ = 81
|
|
keyW$ = 87
|
|
keyE$ = 69
|
|
keyA$ = 65
|
|
keyS$ = 83
|
|
keyD$ = 68
|
|
keyZ$ = 90
|
|
keyX$ = 88
|
|
keyC$ = 67
|
|
keySpace$ = 32
|
|
keyEsc$ = 16777216
|
|
|
|
dim space$(9)
|
|
|
|
|
|
subroutine clearGameVars()
|
|
playerturn$ = 1
|
|
invalidMove$ = 0
|
|
endGame$ = 0
|
|
tecla$ = 0
|
|
|
|
for t = 0 to space$[?]-1
|
|
space$[t] = 0
|
|
next t
|
|
end subroutine
|
|
|
|
subroutine endGame()
|
|
cls
|
|
print "¡Hasta pronto!..."
|
|
end
|
|
end subroutine
|
|
|
|
subroutine printBoard()
|
|
print " " + space$[0]+" | "+space$[1]+" | "+space$[2]
|
|
print " " + "— + — + —"
|
|
print " " + space$[3]+" | "+space$[4]+" | "+space$[5]
|
|
print " " + "— + — + —"
|
|
print " " + space$[6]+" | "+space$[7]+" | "+space$[8]
|
|
print ""
|
|
end subroutine
|
|
|
|
subroutine changePlayer()
|
|
if playerturn$ = 1 then
|
|
playerturn$ = 2
|
|
else
|
|
playerturn$ = 1
|
|
end if
|
|
end subroutine
|
|
|
|
subroutine endMatchWithWinner()
|
|
cls
|
|
call printPlayerScore()
|
|
call printBoard()
|
|
endGame$ = 1
|
|
|
|
if playerturn$ = 1 then
|
|
player1Score$ += 1
|
|
else
|
|
player2Score$ += 1
|
|
end if
|
|
|
|
print "¡Jugador " + playerturn$ + " gana!" + chr(10)
|
|
print "Pulsa [SPACE] para jugar otra partida"
|
|
print "Pulsa [ESC] para dejar de jugar"
|
|
do
|
|
tecla$ = key
|
|
pause .01
|
|
if tecla$ = keySpace$ then call gamePlay()
|
|
if tecla$ = keyEsc$ then call endGame()
|
|
until false
|
|
end subroutine
|
|
|
|
subroutine endMatchWithoutWinner()
|
|
cls
|
|
call printPlayerScore()
|
|
call printBoard()
|
|
endGame$ = 1
|
|
|
|
print " Nadie ganó :( " + chr(10)
|
|
print " Pulsa [SPACE] para comenzar o [ESC] para salir. "
|
|
do
|
|
tecla$ = key
|
|
pause .01
|
|
if tecla$ = keySpace$ then call gamePlay()
|
|
if tecla$ = keyEsc$ then call endGame()
|
|
until false
|
|
end subroutine
|
|
|
|
subroutine printPlayerScore()
|
|
print "--------------------------------------------"
|
|
print " Jugador #1: " + player1Score$ + " pts"
|
|
print " Jugador #2: " + player2Score$ + " pts"
|
|
print "--------------------------------------------" + chr(10)
|
|
end subroutine
|
|
|
|
|
|
subroutine printPlayerMessage()
|
|
print "Jugador: " + playerturn$ + ", elige una casilla, por favor."
|
|
end subroutine
|
|
|
|
subroutine gamePlay()
|
|
call clearGameVars()
|
|
cls
|
|
call printPlayerScore()
|
|
call printBoard()
|
|
call printPlayerMessage()
|
|
while 0 = 0
|
|
invalidMove$ = 0
|
|
|
|
if endGame$ = 0 then
|
|
do
|
|
tecla$ = key
|
|
pause .01
|
|
validKeypressed$ = 0
|
|
if tecla$ = keyQ$ or tecla$ = keyW$ or tecla$ = keyE$ or tecla$ = keyA$ or tecla$ = keyS$ or tecla$ = keyD$ or tecla$ = keyZ$ or tecla$ = keyX$ or tecla$ = keyC$ then validKeypressed$ = 1
|
|
until validKeypressed$ = 1
|
|
endif
|
|
|
|
if tecla$ = keyQ$ then
|
|
if space$[0] = 0 then
|
|
space$[0] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyW$ then
|
|
if space$[1] = 0 then
|
|
space$[1] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyE$ then
|
|
if space$[2] = 0 then
|
|
space$[2] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyA$ then
|
|
if space$[3] = 0 then
|
|
space$[3] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyS$ then
|
|
if space$[4] = 0 then
|
|
space$[4] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyD$ then
|
|
if space$[5] = 0 then
|
|
space$[5] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyZ$ then
|
|
if space$[6] = 0 then
|
|
space$[6] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyX$ then
|
|
if space$[7] = 0 then
|
|
space$[7] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if tecla$ = keyC$ then
|
|
if space$[8] = 0 then
|
|
space$[8] = playerturn$
|
|
else
|
|
invalidMove$ = 1
|
|
endif
|
|
endif
|
|
|
|
if invalidMove$ = 0 then
|
|
tecla$ = 0
|
|
|
|
if space$[0] = 1 and space$[1] = 1 and space$[2] = 1 then call endMatchWithWinner()
|
|
if space$[3] = 1 and space$[4] = 1 and space$[5] = 1 then call endMatchWithWinner()
|
|
if space$[6] = 1 and space$[7] = 1 and space$[8] = 1 then call endMatchWithWinner()
|
|
if space$[0] = 1 and space$[3] = 1 and space$[6] = 1 then call endMatchWithWinner()
|
|
if space$[1] = 1 and space$[4] = 1 and space$[7] = 1 then call endMatchWithWinner()
|
|
if space$[2] = 1 and space$[5] = 1 and space$[8] = 1 then call endMatchWithWinner()
|
|
if space$[0] = 1 and space$[4] = 1 and space$[8] = 1 then call endMatchWithWinner()
|
|
if space$[2] = 1 and space$[4] = 1 and space$[6] = 1 then call endMatchWithWinner()
|
|
if space$[0] = 2 and space$[1] = 2 and space$[2] = 2 then call endMatchWithWinner()
|
|
if space$[3] = 2 and space$[4] = 2 and space$[5] = 2 then call endMatchWithWinner()
|
|
if space$[6] = 2 and space$[7] = 2 and space$[8] = 2 then call endMatchWithWinner()
|
|
if space$[0] = 2 and space$[3] = 2 and space$[6] = 2 then call endMatchWithWinner()
|
|
if space$[1] = 2 and space$[4] = 2 and space$[7] = 2 then call endMatchWithWinner()
|
|
if space$[2] = 2 and space$[5] = 2 and space$[8] = 2 then call endMatchWithWinner()
|
|
if space$[0] = 2 and space$[4] = 2 and space$[8] = 2 then call endMatchWithWinner()
|
|
if space$[2] = 2 and space$[4] = 2 and space$[6] = 2 then call endMatchWithWinner()
|
|
|
|
if space$[0] <> 0 and space$[1] <> 0 and space$[2] <> 0 and space$[3] <> 0 and space$[4] <> 0 and space$[5] <> 0 and space$[6] <> 0 and space$[7] <> 0 and space$[8] <> 0 then call endMatchWithoutWinner()
|
|
|
|
call changePlayer()
|
|
cls
|
|
call printPlayerScore()
|
|
call printBoard()
|
|
call printPlayerMessage()
|
|
end if
|
|
|
|
end while
|
|
end subroutine
|
|
|
|
subroutine gameMenu()
|
|
cls
|
|
call clearGameVars()
|
|
|
|
player1Score$ = 0
|
|
player2Score$ = 0
|
|
|
|
print "================================================="
|
|
print "| TIC-TAC-TOE |"
|
|
print "=================================================" + chr(10)
|
|
print " Teclas para jugar:"
|
|
print "---------------------"
|
|
print " | q | w | e |"
|
|
print " | a | s | d |"
|
|
print " | z | x | c |" + chr(10)
|
|
print " Pulsa [SPACE] para comenzar o [ESC] para salir. "
|
|
|
|
do
|
|
tecla$ = key
|
|
pause .01
|
|
if tecla$ = keySpace$ then call gamePlay()
|
|
if tecla$ = keyEsc$ then call endGame()
|
|
until false
|
|
end subroutine
|
|
|
|
call gameMenu()
|
|
end
|