Connect4 Game

How this game is playe can be found at here.

1 1 public class Connect4 { 2 2 char[][] board = new char[6][7]; 3 3 4 4 public Connect4(char[][] board) { 5 5 this.board = board; 6 6 } 7 7 8 8 public static void main(String[] args) { 9 9 Connect4 game = new Connect4(new char[6][7]); 10 10 game.fillBoard(' '); 11 11 Scanner input = new Scanner(System.in); 12 12 char player = 'X'; 13 13 while (true) { 14 14 game.showGameBoard(); 15 15 System.out.print("Player " + player + ", please enter the column where you'd like to drop your piece: "); 16 16 int col = input.nextInt(); 17 17 if (game.tryDropPiece(col, player)) { 18 18 if (game.checkForWin()) { 19 19 System.out.println("Player " + player + " wins!"); 20 20 game.showGameBoard(); 21 21 return; 22 22 } 23 23 player = game.switchPlayer(player); // Switch players 24 24 } 25 25 } 26 26 } 27 27 28 28 public char[][] fillBoard(char myChar) { 29 29 for (int row = 0; row < board.length; row++) { 30 30 Arrays.fill(board[row], 0, board[row].length, myChar); 31 31 } 32 32 return board; 33 33 } 34 34 35 35 public void showGameBoard() { 36 36 System.out.println(); 37 37 for (int row = 0; row < board.length; row++) { 38 38 System.out.print("|"); 39 39 for (int col = 0; col < board[row].length; col++) { 40 40 System.out.print(" " + board[row][col] + " |"); 41 41 } 42 42 System.out.println(); 43 43 } 44 44 } 45 45 46 46 public boolean tryDropPiece(int col, char player) { 47 47 if (board[0][col] != ' ') { 48 48 System.out.println("That column is already full."); 49 49 return false; 50 50 } 51 51 for (int row = board.length - 1; row >= 0; row--) { 52 52 if (board[row][col] == ' ') { 53 53 board[row][col] = player; 54 54 return true; 55 55 } 56 56 } 57 57 return false; 58 58 } 59 59 60 60 public boolean checkForWin() { 61 61 boolean result = false; 62 62 // Check for win horizontally 63 63 for (int row = 0; row < board.length; row++) { 64 64 for (int col = 0; col < board[row].length - 3; col++) { 65 65 if (board[row][col] != ' ' && board[row][col] == board[row][col + 1] 66 66 && board[row][col] == board[row][col + 2] && board[row][col] == board[row][col + 3]) { 67 67 return true; 68 68 } 69 69 } 70 70 } 71 71 // Check for win vertically 72 72 for (int col = 0; col < board[0].length; col++) { 73 73 for (int row = 0; row < board.length - 3; row++) { 74 74 if (board[row][col] != ' ' && board[row][col] == board[row + 1][col] 75 75 && board[row][col] == board[row + 2][col] && board[row][col] == board[row + 3][col]) { 76 76 return true; 77 77 } 78 78 } 79 79 } 80 80 81 81 // Check for win diagonally, from top left 82 82 for (int row = 0; row < board.length - 3; row++) { 83 83 for (int col = 0; col < board[row].length - 3; col++) { 84 84 if (board[row][col] != ' ' && board[row][col] == board[row + 1][col + 1] 85 85 && board[row][col] == board[row + 2][col + 2] && board[row][col] == board[row + 3][col + 3]) { 86 86 return true; 87 87 } 88 88 } 89 89 } 90 90 91 91 // Check for win diagonally, from top right 92 92 for (int row = 0; row < board.length - 3; row++) { 93 93 for (int col = 3; col < board[row].length; col++) { 94 94 if (board[row][col] != ' ' && board[row][col] == board[row + 1][col - 1] 95 95 && board[row][col] == board[row + 2][col - 2] && board[row][col] == board[row + 3][col - 3]) { 96 96 return true; 97 97 } 98 98 } 99 99 } 100100 return false; 101101 102102 } 103103 104104 public char switchPlayer(char currentPlayer) { 105105 if (currentPlayer == 'X') { 106106 return 'O'; 107107 } else { 108108 return 'X'; 109109 } 110110 } 111111 }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )