Snake and ladder: Difference between revisions

Snake and Ladder en BASIC256
(Snake and Ladder en FreeBASIC)
(Snake and Ladder en BASIC256)
Line 311:
Player 1 wins after 155 moves
</pre>
 
 
=={{header|BASIC}}==
==={{header|BASIC256}}===
{{trans|FreeBASIC}}
<lang BASIC256>
arraybase 1
global SNL
map SNL
SNL[ 4] = 14
SNL[ 9] = 31
SNL[17] = 7
SNL[20] = 38
SNL[28] = 84
SNL[40] = 59
SNL[51] = 67
SNL[54] = 34
SNL[62] = 19
SNL[63] = 81
SNL[64] = 60
SNL[71] = 91
SNL[87] = 24
SNL[93] = 73
SNL[95] = 75
SNL[99] = 78
 
dim players(3)
players = {1, 1, 1}
 
do
for i = 1 to players[?]
ns = Turn(i, players[i - 1])
if ns = 100 then
print "Player "; i; " wins!"
exit do
end if
players[i - 1] = ns
print
next i
until False
end
 
function Turn(player, square)
sixesThrowAgain = True
do
roll = int(rand * 6)
print "Player "; player; ", on square "; square; ", rolls a "; roll;
if square + roll > 100 then
print " but cannot move."
else
square += roll
print " and moves to square "; square
if square = 100 then return 100
 
nxt = square
if SNL[square, square] then nxt = SNL[nxt, nxt]
if square < nxt then
print "Yay! Landed on a ladder. Climb up to "; nxt; "."
if nxt = 100 then return 100
square = nxt
else
if square > nxt then
print "Oops! Landed on a snake. Slither down to "; nxt; "."
square = nxt
end if
end if
end if
 
if roll < 6 or not sixesThrowAgain then return square
print "Rolled a 6 so roll again."
until False
end function
</lang>
 
 
=={{header|C}}==
2,123

edits