java编程五子棋代码 新手java五子棋完整代码

java五子棋源代码我这有算法 不过没做swing界面 DOS下可以直接运行 要不java编程五子棋代码你拿去改改
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
* 五子棋源码
* 所用java编程五子棋代码的符号标识 ○ ● ┼
* 在dos界面下运行效果最佳
* 黑白双方交叉输入落子点坐标 以逗号隔开如 1,1
* 输入空 或者一方胜出 程序停止
*/
public class Chess {
// 定义棋盘大小
private static int SIZE = 15;
private String[][] board;
public static void main(String[] args) throws Exception {
Chess chess = new Chess();
// 初始化棋盘
chess.initBoard();
// 画出棋盘
chess.paintBoard();
// 根据whojava编程五子棋代码的奇偶性 判断该谁落子
int who = 0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while ((str = br.readLine()) != null) {
// 提取输入java编程五子棋代码的 以","分开的数 分别对应x y坐标
String[] posStr = str.split(",");
int x = Integer.parseInt(posStr[0]);
int y = Integer.parseInt(posStr[1]);
// 判断落子点是否合法
if (!"┼".equals(chess.board[x][y])) {
System.out.println("这里不允许落子,请重下..");
continue;
}
if (who % 2 == 0) {
chess.board[x][y] = "○";
chess.paintBoard();
// 判断是否胜出
if (chess.isWin("○")) {
System.out.println("○获胜");
return;
}
} else {
chess.board[x][y] = "●";
chess.paintBoard();
// 判断是否胜出
if (chess.isWin("●")) {
System.out.println("●获胜");
return;
}
}
who++;
}
}
// 以 "┼" 初始化棋盘
public void initBoard() {
board = new String[SIZE][SIZE];
for (int i = 0; iSIZE; i++) {
for (int j = 0; jSIZE; j++) {
board[i][j] = "┼";
}
}
}
// 描绘出当前棋盘
public void paintBoard() {
// 以下代码 这里为java编程五子棋代码了使得棋盘坐标看的清楚 加入了坐标值
System.out.print("");
for (int i = 0; iSIZE; i++) {
if (i10) {
System.out.print(i + " ");
} else {
System.out.print((i - 10) + " ");
}
}
System.out.println();
// 以上代码 这里为了使得棋盘坐标看的清楚 加入了坐标值
for (int i = 0; iSIZE; i++) {
if (i10) {
System.out.print(" " + i);
} else {
System.out.print(i);
}
for (int j = 0; jSIZE; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
// 判断是否获胜
public boolean isWin(String sign) {
int count = 0;
// 横向扫描各行
// 有一个sign的子 计数器+1
// 碰到不是sign的子 计数器置零
// 计数器到达5时 返回true 胜出
for (int i = 0; iSIZE; i++) {
count = 0;
for (int j = 0; jSIZE; j++) {
if (board[i][j].equals(sign)) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
}
// 纵向扫描各列
// 方法同上
for (int i = 0; iSIZE; i++) {
count = 0;
for (int j = 0; jSIZE; j++) {
if (board[j][i].equals(sign)) {
count++;
if (count == 5) {
return true;
}
} else {
count = 0;
}
}
}
// 扫描斜右下
// 在横向扫描基础上 外层套一个循环 以k为标识
// 坐标x-y的范围在-SIZE+1到SIZE-1之间
// 当x-y的值相等时 在同一右下斜线上
for (int k = -SIZE + 1; k = SIZE - 1; k++) {
count = 0;
for (int i = 0; iSIZE; i++) {
for (int j = 0; jSIZE; j++) {

推荐阅读