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

Connect4 Game的更多相关文章

  1. ESP8266使用详解--基于Lua脚本语言

    这些天,,,,今天终于看到了希望,,,天道酬勤 先说实现的功能...让ESP8266连接无线网,然后让它建立服务器,,我的客户端连接上以后,发给客户端发数据模块打印到串口,,往ESP8266串口里发数 ...

  2. luasocket 接收数据

    在游戏客户端使用luasocket作为网络通信的手段, 有一点很蛋疼, 就是它的receive是阻塞的,  那界面就卡死在那里了,  不过有一个函数:settimeout(), 传入参数0, 表示如果 ...

  3. [知乎]这可能是最全面的龙芯3A3000处理器评测

    这可能是最全面的龙芯3A3000处理器评测 第一千零一个人   已关注 蓬岸 Dr.Quest . https://zhuanlan.zhihu.com/p/50716952 这里面链接很全. 立党 ...

  4. 【转帖】龙芯3A3000处理器深度评测:和Intel、AMD差距巨大

    龙芯3A3000处理器深度评测:和Intel.AMD差距巨大 https://www.eefocus.com/mcu-dsp/424623/r0 作者非计算机科班毕业 让我汗颜. 我计算机毕业都不知道 ...

  5. 国产龙芯3A3000处理器评测:与英特尔差距明显

    国产龙芯3A3000处理器评测:与英特尔差距明显 国产龙芯3A3000处理器评测:与英特尔差距明显 新浪财经APP缩小字体放大字体收藏微博微信分享579 新酷产品第一时间免费试玩,还有众多优质达人分享 ...

随机推荐

  1. 037_自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)

    #!/bin/bash#设置变量定义需要添加到防火墙规则的服务和端口号#使用 firewall-cmd --get-services 可以查看 firewall 支持哪些服务 service=&quo ...

  2. Codeforces Round #572 (Div. 2)

    目录 Contest Info Solutions A. Keanu Reeves B. Number Circle C. Candies! D1. Add on a Tree D2. Add on ...

  3. [BJOI2019]排兵布阵 DP

    [BJOI2019]排兵布阵 DP 比较好想的DP,设\(dp[i][j]\)表示第\(i\)个城堡时,已派出\(j\)个士兵.决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费).我们发 ...

  4. 虚拟机安装WIN7教程

    1.去下载win7原装镜像,推荐去官方网站下载:https://msdn.itellyou.cn/ 也可以直接使用Win7系统和激活工具链接:https://pan.baidu.com/s/1SJSE ...

  5. Golang字符串处理以及文件操作

    一.整数 1.int与uint的初值比较以及其大小. 1 /* 2 #!/usr/bin/env gorun 3 @author :xxxx 4 Blog:http://www.cnblogs.com ...

  6. 第11组 Beta冲刺(3/5)

    第11组 Beta冲刺(3/5)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/12006665.html 作业博客 https://edu. ...

  7. COM组件双接口对象模型

    模型如下: 这里COM对象一共实现了三个接口,IUnknown,IDispatch, Ixxx. 每个COM都必须实现IUnknown,不考虑在内的话共实现了IDispatch和自定义接口Ixxx两个 ...

  8. 【Centos】搭建 SVN 服务器

    1.如果仅仅只是搭建 svn 服务器: (a).先检查 svn 是否已经安装了 rpm -qa subversion #输入这个命令后,会出现 subversion 版本号   (b).如果没有安装, ...

  9. geth run

    geth --networkid 1201 --rpc --rpcapi eth,net,web3,personal,admin,miner --rpccorsdomain "*" ...

  10. [Tex学习笔记]让项目编号从4开始

    微信扫描如上二维码关注跟锦数学微信公众账号. 详情请见那里.