-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConnect4.java
More file actions
139 lines (120 loc) · 4.93 KB
/
Copy pathConnect4.java
File metadata and controls
139 lines (120 loc) · 4.93 KB
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import java.util.Scanner;
class Main {
public static void main(String[] args) {
char[][] board = new char[6][7];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
board[i][j] = '.';
}
}
char player = 'X';
boolean playing = true;
int turn = 0;
while (playing == true) {
// print board
printBoard(board);
// ask the current player what column to drop into
System.out.println("Player " + player);
System.out.println("Which column?");
Scanner keyboard = new Scanner(System.in);
int col = keyboard.nextInt();
turn++;
// change the board to reflect the player's action
if (board[5][col] == '.') {
board[5][col] = player;
} else if (board[4][col] == '.') {
board[4][col] = player;
} else if (board[3][col] == '.') {
board[3][col] = player;
} else if (board[2][col] == '.') {
board[2][col] = player;
} else if (board[1][col] == '.') {
board[1][col] = player;
} else {
System.out.println("Column full!");
System.out.println("Pick again");
}
// determine if the current player won
// backward diagonals
char winner = '.';
for (int startRow = 5; startRow < 2; startRow--) {
for (int startCol = 0; startCol < 4; startCol++) {
char check = board[startRow][startCol];
if (check != '.' && check == board[startRow - 1][startCol + 1] &&
check == board[startRow - 2][startCol + 2] && check == board[startRow - 3][startCol + 3]) {
winner = check;
if (check != '.') {
printBoard(board);
System.out.println(player + " wins!");
playing = false;
}
}
}
}
// forward diagonals
winner = '.';
for (int startRow = 0; startRow < 3; startRow++) {
for (int startCol = 0; startCol < 4; startCol++) {
char check = board[startRow][startCol];
if (check != '.' && check == board[startRow + 1][startCol + 1] &&
check == board[startRow + 2][startCol + 2] && check == board[startRow + 3][startCol + 3]) {
winner = check;
if (check != '.') {
printBoard(board);
System.out.println(player + " wins!");
playing = false;
}
}
}
}
// vertical check
for (int startRow = 0; startRow < 3; startRow++) {
for (int startCol = 0; startCol < 7; startCol++) {
char check = board[startRow][startCol];
if (check != '.' && check == board[startRow + 1][startCol] &&
check == board[startRow + 2][startCol] && check == board[startRow + 3][startCol]) {
winner = check;
if (check != '.') {
printBoard(board);
System.out.println(player + " wins!");
playing = false;
}
}
}
}
// horizantal check
for (int startRow = 0; startRow < 6; startRow++) {
for (int startCol = 0; startCol < 4; startCol++) {
char check = board[startRow][startCol];
if (check != '.' && check == board[startRow][startCol + 1] &&
check == board[startRow][startCol + 2] && check == board[startRow][startCol + 3]) {
winner = check;
if (check != '.') {
printBoard(board);
System.out.println(player + " wins!");
playing = false;
}
}
}
}
//draw
if (turn == 42){
System.out.println("It's a draw!");
}
// switch players
if (player == 'X') {
player = 'O';
} else { // player must currently be O
player = 'X';
}
}
}
public static void printBoard(char[][] b) {
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[0].length; j++) {
System.out.print("|" + b[i][j]);
}
System.out.println("|");
}
}
}