-
Notifications
You must be signed in to change notification settings - Fork 0
/
SnakeAndLadder.java
99 lines (80 loc) · 2.87 KB
/
SnakeAndLadder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
class SnakeAndLadder {
final static int WIN_POINT = 100;
static Map<Integer, Integer> snake = new HashMap<>();
static Map<Integer, Integer> ladder = new HashMap<>();
static {
snake.put(99, 54);
snake.put(70, 55);
snake.put(52, 42);
snake.put(25, 2);
snake.put(95, 72);
ladder.put(6, 25);
ladder.put(11, 40);
ladder.put(60, 85);
ladder.put(46, 90);
ladder.put(17, 69);
}
public static void main(String[] args) {
SnakeAndLadder game = new SnakeAndLadder();
game.startGame();
}
public int rollDice() {
Random random = new Random();
return random.nextInt(6) + 1; // Adding 1 to get values between 1 and 6
}
public int calculatePlayerValue(int player, int diceValue) {
player = player + diceValue;
if (player > WIN_POINT) {
player = player - diceValue;
return player;
}
if (snake.containsKey(player)) {
System.out.println("Swallowed by snake");
player = snake.get(player);
}
if (ladder.containsKey(player)) {
System.out.println("Climb up the ladder");
player = ladder.get(player);
}
return player;
}
public boolean isWin(int player) {
return player == WIN_POINT;
}
public void startGame() {
int player1 = 0, player2 = 0;
int currentPlayer = -1;
Scanner scanner = new Scanner(System.in);
String input;
do {
System.out.println(currentPlayer == -1 ? "\n\nFIRST PLAYER TURN" : "\n\nSECOND PLAYER TURN");
System.out.println("Press 'r' to roll the dice");
input = scanner.next();
int diceValue = rollDice();
if (currentPlayer == -1) {
player1 = calculatePlayerValue(player1, diceValue);
System.out.println("First Player Position: " + player1);
System.out.println("Second Player Position: " + player2);
System.out.println("------------------");
if (isWin(player1)) {
System.out.println("First player wins");
return;
}
} else {
player2 = calculatePlayerValue(player2, diceValue);
System.out.println("First Player Position: " + player1);
System.out.println("Second Player Position: " + player2);
System.out.println("------------------");
if (isWin(player2)) {
System.out.println("Second player wins");
return;
}
}
currentPlayer = -currentPlayer;
} while ("r".equals(input));
}
}