Snake and ladder: Difference between revisions
Content added Content deleted
(Added Wren) |
(Snake and Ladder en FreeBASIC) |
||
Line 744: | Line 744: | ||
Player 2 on square 94 rolls a 6 and moves to square 100 |
Player 2 on square 94 rolls a 6 and moves to square 100 |
||
Player 2 wins!</pre> |
Player 2 wins!</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Visual Basic .NET}} |
|||
<lang freebasic> |
|||
Dim Shared As Integer SNL(1 To 16, 1 To 2) => {_ |
|||
{ 4, 14}, { 9, 31}, {17, 7}, {20, 38}, {28, 84}, {40, 59}, {51, 67}, {54, 34}, _ |
|||
{62, 19}, {63, 81}, {64, 60}, {71, 91}, {87, 24}, {93, 73}, {95, 75}, {99, 78}} |
|||
Randomize Timer |
|||
Const sixesThrowAgain = True |
|||
Function Turn(player As Integer, square As Integer) As Integer |
|||
Do |
|||
Dim As Integer roll = Int(Rnd * 6) + 1 |
|||
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 : End If |
|||
Dim As Integer nxt = square |
|||
If SNL(square, square) Then nxt = SNL(nxt, nxt) : End If |
|||
If square < nxt Then |
|||
Print "Yay! Landed on a ladder. Climb up to"; nxt; "." |
|||
If nxt = 100 Then Return 100 : End If |
|||
square = nxt |
|||
Elseif square > nxt Then |
|||
Print "Oops! Landed on a snake. Slither down to"; nxt; "." |
|||
square = nxt |
|||
End If |
|||
End If |
|||
If roll < 6 Orelse Not sixesThrowAgain Then Return square : End If |
|||
Print "Rolled a 6 so roll again." |
|||
Loop |
|||
End Function |
|||
Dim As Integer players(3) = {1, 1, 1} |
|||
Do |
|||
For i As Integer = 1 To Ubound(players) |
|||
Dim As Integer 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 |
|||
Loop |
|||
Sleep |
|||
</lang> |
|||
=={{header|Go}}== |
=={{header|Go}}== |