}
}
if (i0 == -1 || j0 == -1) { i0 = j0 = 15 / 2; }
public boolean valid(int i, int j) {// 判断点是否在棋盘里 return i >= 0 && i < 15 && j >= 0 && j < 15; }
/** *
* @return 当前棋盘 */
public Battel getBattel() {// 获取当前棋盘 return this; }
/**
* 获取当前棋盘按钮数组 *
* @return 当前棋盘按钮数组 */
public CellPoint[][] getCellsPoint() { return this.cellsPoint; }
/**
* 当想要获取取一颗棋时调用 *
* @param argPoint
* 该点的坐标 * @return 所找点的引用 */
public CellPoint getCellPoint(Point argPoint) {// 反回某一个子 return getCellsPoint()[argPoint.x][argPoint.y]; } /**
* 设置当前游戏状态
* @param argEnd 是否已经结束 */
public void setEnd(boolean argEnd) { end = argEnd; }
public boolean getEnd(){ return end; }
//以下加入事件处理 /**
* 当鼠标进入到某个棋子上方时调用
* 如果当前棋子已经下过棋了,则设置鼠标形状为不可用,否则设置为可用并在棋盘上标示 */
public void mouseEntered(MouseEvent e) {
CellPoint chessPoint = (CellPoint) e.getSource();
if (chessPoint.getState() != Enums.chessState.NONE) {// 如果当前点已经有子了
setCursor(cursor); return; } else {
setCursor(new Cursor(Cursor.HAND_CURSOR));
chessPoint.setIcon(new ImageIcon(\// System.out.println(chessPoint.getPoint().x + \// + chessPoint.getPoint().y);// 显示鼠标位置 } } /**
* 鼠标移出某个棋 */
public void mouseExited(MouseEvent e) {
CellPoint chessPoint = (CellPoint) e.getSource();
if (chessPoint.getState() != Enums.chessState.NONE) {// 如果当前点已经有子了
setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); return; } else {
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
chessPoint.setIcon(new ImageIcon(\ } }
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mousePressed(MouseEvent e) {
CellPoint chessPoint = (CellPoint) e.getSource();
if (chessPoint.getState() != Enums.chessState.NONE) {// 如果当前点已经有子了 return; } else {
chessPoint.setState(Enums.chessState.BLACK); // 下子 chessPoint.setIcon(new ImageIcon(\
CreatWindow.addTxtTwo(\ + (chessPoint.getPoint().y) + \ //加入到路径中去
path.offerLast(getCellsPoint()[chessPoint.getPoint().x][chessPoint.getPoint().y]);
setCursor(cursor); // 此处通知电脑下子 chosePoint();
if (end) {// 已分出胜负 return; }
getCellPoint(new Point(i0,
j0)).setState(Enums.chessState.WHITE);// 电脑下子
getCellPoint(new Point(i0, j0)).setIcon(new ImageIcon(\ //加入路径
path.offerLast(getCellsPoint()[i0][j0]);
CreatWindow.addTxtTwo(\ evaluate(); }
return; } }
3.2 各界面展现
4.软件测试
目标功能基本实现,在开发环境下,能正常运行。
5.总结
参考文献
[1] 王小春. PC游戏编程(人机对弈). 重庆:重庆大学出版社,2002.5 [2] 那威,张照元. 连珠五子棋提高捷径:入段升级必读. 北京:北京体育大学出版社,1998.1
[3] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. 设计模式:可复用面向对象软件的基础 北京:机械工业出版社,2000.9
[4] Donald E. Knuth. The Art of Computer Programming. Addison-Wesley,1998
[5]《五子棋》软件设计报告 杭州电子科技大学 胡峰令