人工智能-五子棋实现

}

}

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]《五子棋》软件设计报告 杭州电子科技大学 胡峰令

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4