Snake and ladder: Difference between revisions
Content added Content deleted
m (reinstated main()) |
|||
Line 1,565: | Line 1,565: | ||
You reached position 100 and win the game!!!! |
You reached position 100 and win the game!!!! |
||
</pre> |
</pre> |
||
=={{header|Visual Basic .NET}}== |
|||
{{trans|C#}} |
|||
<lang vbnet>Module Module1 |
|||
ReadOnly SNL As New Dictionary(Of Integer, Integer) From { |
|||
{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} |
|||
} |
|||
ReadOnly rand As New Random |
|||
Const sixesThrowAgain = True |
|||
Function Turn(player As Integer, square As Integer) As Integer |
|||
Do |
|||
Dim roll = rand.Next(1, 6) |
|||
Console.Write("Player {0}, on square {1}, rolls a {2}", player, square, roll) |
|||
If square + roll > 100 Then |
|||
Console.WriteLine(" but cannot move.") |
|||
Else |
|||
square += roll |
|||
Console.WriteLine(" and moves to square {0}", square) |
|||
If square = 100 Then |
|||
Return 100 |
|||
End If |
|||
Dim nxt = square |
|||
If SNL.ContainsKey(square) Then |
|||
nxt = SNL(nxt) |
|||
End If |
|||
If square < nxt Then |
|||
Console.WriteLine("Yay! Landed on a ladder. Climb up to {0}.", nxt) |
|||
If nxt = 100 Then |
|||
Return 100 |
|||
End If |
|||
square = nxt |
|||
ElseIf square > nxt Then |
|||
Console.WriteLine("Oops! Landed on a snake. Slither down to {0}.", nxt) |
|||
square = nxt |
|||
End If |
|||
End If |
|||
If roll < 6 OrElse Not sixesThrowAgain Then |
|||
Return square |
|||
End If |
|||
Console.WriteLine("Rolled a 6 so roll again.") |
|||
Loop |
|||
End Function |
|||
Sub Main() |
|||
Dim players = {1, 1, 1} |
|||
Do |
|||
For i = 1 To players.Length |
|||
Dim ns = Turn(i, players(i - 1)) |
|||
If ns = 100 Then |
|||
Console.WriteLine("Player {0} wins!", i) |
|||
Return |
|||
End If |
|||
players(i - 1) = ns |
|||
Console.WriteLine() |
|||
Next |
|||
Loop |
|||
End Sub |
|||
End Module</lang> |