五子棋手把手教你写:
写在前面的话:
回想起从前初学代码的五子棋简直写的不像样子。今天闲来无事就写了个五子棋的小程序。
一来呢回忆一下很久以前写代码时的感觉。
二来呢顺便帮下诸位有需求的学生,顺利的Ctrl+C。
五子棋的运行效果如下。
开发环境:
这个小程序是基于Java实现的。因此呢需要提前安装JDK环境。(老油条忽略此条信息)
开发环境jdk1.8 + eclipse
eclipse 目录结构如下所示,就三个类啊。
棋盘数据结构核心:
无论你做数据库开发还是做一些小程序,第一时间考虑的必须是需求+建模。把核心设计出来。
此次我们用一个二维数组作为棋盘,每条线交叉的地方设为二维数组的值,并约定:
0=空
1=白棋
2=黑棋
然后对应的把下棋,悔棋,判断输赢(横竖斜)和清盘的算法都实现出来。
具体展现如下:
悔棋时候我们需要用一个栈来保存我们之前下棋的信息:
/**
* 在该位置下棋 1:white 2:black
* @param x 横坐标
* @param y 纵坐标
* @param var 棋子种类
* @return 1:white 赢 2:black赢*/
public int ChessIt(int x,int y,int var) {if(__CanInput(x,y)) {
core[x][y]=var;
Chess chess= newChess(x,y);
stack.push(chess);return checkVictory(x, y, var);
}else return -1;
}//悔棋
publicboolean RetChess() {if(stack.isEmpty()) return false;
Chess chess=stack.pop();
core[chess.x][chess.y]= 0;return true;
}
总体:Core.java 的代码如下·:
package main;
import java.util.Stack;/**
* @author GodofOrange
* 棋盘数据结构*/
public classCore {//棋盘大小
private int[][] core;private intx;private inty;//记录下棋的类
classChess{intx;inty;public Chess(int x,inty) {this.x=x;this.y=y;
}
}//栈
Stackstack;//构造方法
public Core(int x,inty) {
stack= new Stack<>();
core= new int[x][y];this.x=x;this.y=y;
}//检查该地是否有空位置
private boolean __CanInput(int x,inty) {if(core[x][y]==0) return true;else return false;
}//判断输赢
private int checkVictory(int x,int y,int var) {//横向判断