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';
}
}
}

最新文章

  1. ElasticSearch第四步-查询详解
  2. artEditor增加h5拍照上传图片
  3. 小白日记29:kali渗透测试之Web渗透-扫描工具-Vega
  4. 如何自己动手实现 KVO(转)
  5. 元素exist/present/visible(vanish)/enable的区别
  6. C# System.Attribute(验证类)
  7. UWP APP 开发日记
  8. 分布式批处理平台(wolf)简介
  9. .NET领域驱动设计—初尝(三:穿过迷雾走向光明)
  10. 介绍Angular的注入服务
  11. URL Scheme与openURL
  12. Android 高仿微信6.0主界面 带你玩转切换图标变色
  13. javaweb中的乱码问题(初次接触时写)
  14. [Web 前端] mobx教程(三)-在React中使用Mobx
  15. 多个gridSelect引用同一个dizData
  16. P3380 【模板】二逼平衡树(树套树)(线段树套平衡树)
  17. 《Linux 性能及调优指南》2.3 监控工具
  18. NodeJS开发环境配置
  19. mysql常用语句练习-基于ecshop2.7.3数据库(1)
  20. 25、springboot与缓存整合Redis

热门文章

  1. 团队开发前端VUE项目代码规范
  2. centos7安装gitlab 支持带认证https,开启邮件功能 超级简单.
  3. https服务
  4. Django基础之ModelForm
  5. Liunx之nginx配置
  6. jquery 页面input上传图后显示
  7. 在windows平台下搭建Django项目虚拟环境
  8. 安装python3的详细教程
  9. oracle传输表空间
  10. Hexo博客skapp主题部署填坑指南