Jump to content

Tic-tac-toe: Difference between revisions

6,929 bytes added ,  2 years ago
Tic-tac-toe en BASIC256
m (added two other names.)
(Tic-tac-toe en BASIC256)
Line 956:
 
=={{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===
This game has a simple AI.
2,131

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.