Tic-tac-toe: Difference between revisions

Content added Content deleted
m (added two other names.)
(Tic-tac-toe en BASIC256)
Line 956: Line 956:


=={{header|BASIC}}==
=={{header|BASIC}}==
==={{header|BASIC256}}===
<lang BASIC256>
# 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
</lang>


===Microsoft Small Basic===
===Microsoft Small Basic===
This game has a simple AI.
This game has a simple AI.