Connect4 Game
2024-09-21 00:47:36
How this game is playe can be found at here.
public class Connect4 {
char[][] board = new char[][]; public Connect4(char[][] board) {
this.board = board;
} public static void main(String[] args) {
Connect4 game = new Connect4(new char[][]);
game.fillBoard(' ');
Scanner input = new Scanner(System.in);
char player = 'X';
while (true) {
game.showGameBoard();
System.out.print("Player " + player + ", please enter the column where you'd like to drop your piece: ");
int col = input.nextInt();
if (game.tryDropPiece(col, player)) {
if (game.checkForWin()) {
System.out.println("Player " + player + " wins!");
game.showGameBoard();
return;
}
player = game.switchPlayer(player); // Switch players
}
}
} public char[][] fillBoard(char myChar) {
for (int row = ; row < board.length; row++) {
Arrays.fill(board[row], , board[row].length, myChar);
}
return board;
} public void showGameBoard() {
System.out.println();
for (int row = ; row < board.length; row++) {
System.out.print("|");
for (int col = ; col < board[row].length; col++) {
System.out.print(" " + board[row][col] + " |");
}
System.out.println();
}
} public boolean tryDropPiece(int col, char player) {
if (board[][col] != ' ') {
System.out.println("That column is already full.");
return false;
}
for (int row = board.length - ; row >= ; row--) {
if (board[row][col] == ' ') {
board[row][col] = player;
return true;
}
}
return false;
} public boolean checkForWin() {
boolean result = false;
// Check for win horizontally
for (int row = ; row < board.length; row++) {
for (int col = ; col < board[row].length - ; col++) {
if (board[row][col] != ' ' && board[row][col] == board[row][col + ]
&& board[row][col] == board[row][col + ] && board[row][col] == board[row][col + ]) {
return true;
}
}
}
// Check for win vertically
for (int col = ; col < board[].length; col++) {
for (int row = ; row < board.length - ; row++) {
if (board[row][col] != ' ' && board[row][col] == board[row + ][col]
&& board[row][col] == board[row + ][col] && board[row][col] == board[row + ][col]) {
return true;
}
}
} // Check for win diagonally, from top left
for (int row = ; row < board.length - ; row++) {
for (int col = ; col < board[row].length - ; col++) {
if (board[row][col] != ' ' && board[row][col] == board[row + ][col + ]
&& board[row][col] == board[row + ][col + ] && board[row][col] == board[row + ][col + ]) {
return true;
}
}
} // Check for win diagonally, from top right
for (int row = ; row < board.length - ; row++) {
for (int col = ; col < board[row].length; col++) {
if (board[row][col] != ' ' && board[row][col] == board[row + ][col - ]
&& board[row][col] == board[row + ][col - ] && board[row][col] == board[row + ][col - ]) {
return true;
}
}
}
return false; } public char switchPlayer(char currentPlayer) {
if (currentPlayer == 'X') {
return 'O';
} else {
return 'X';
}
}
}
最新文章
- ElasticSearch第四步-查询详解
- artEditor增加h5拍照上传图片
- 小白日记29:kali渗透测试之Web渗透-扫描工具-Vega
- 如何自己动手实现 KVO(转)
- 元素exist/present/visible(vanish)/enable的区别
- C# System.Attribute(验证类)
- UWP APP 开发日记
- 分布式批处理平台(wolf)简介
- .NET领域驱动设计—初尝(三:穿过迷雾走向光明)
- 介绍Angular的注入服务
- URL Scheme与openURL
- Android 高仿微信6.0主界面 带你玩转切换图标变色
- javaweb中的乱码问题(初次接触时写)
- [Web 前端] mobx教程(三)-在React中使用Mobx
- 多个gridSelect引用同一个dizData
- P3380 【模板】二逼平衡树(树套树)(线段树套平衡树)
- 《Linux 性能及调优指南》2.3 监控工具
- NodeJS开发环境配置
- mysql常用语句练习-基于ecshop2.7.3数据库(1)
- 25、springboot与缓存整合Redis