五子棋总结(附代码)
?
? ? ? ? ?今天终于完成了关于自己的第一个小游戏,觉得挺有成就感的,所以想总结一下这几天我做五子棋的心得:
?
? ? ? ?第一,要完成一个五子棋游戏,首先要有一些知识准备,1.swing和awt一些窗口还有一些容器,主要是做一个五子棋游戏界面,2.通过鼠标监听器在五子棋盘界面上画出一个五子棋盘,3.在五子棋盘上画出棋子,4.实实现棋盘上棋子的重绘,4.实现一些按钮的功能
?
? ? ? ?第二,分析游戏的设计过程,例如这个游戏的重心应该是在五子棋盘上下棋的过程,这也是人机对战的重心
?
? ? ? ?第三,在分析的基础上,我们的下一步就是要设计在屋子棋盘上下棋的算法,因为是人机对战所以显示黑子根据鼠标点击的位置在棋盘上下一颗棋子,然后机器的白子应该在哪呢,这就是这个游戏的重中之重,也是算法最难的地方,电脑要根据棋盘棋子的分布情况然后要算出那个空格的重要性然后在下棋,所以要对每个空格赋权值,那么最大全职的那个点就是电脑要下的地方,所限要付一个权值表.
?
// 实现退出按钮的功能if (e.getX() > 713 && e.getX() < 753 && e.getY() > 434&& e.getY() < 476) {int result = JOptionPane.showConfirmDialog(null, "你确定退出小鱼儿的五子棋吗?");if (result == 0) {System.exit(0);}}// 实现关于按钮的功能if (e.getX() > 245 && e.getX() < 320 && e.getY() > 540&& e.getY() < 569) {JOptionPane.showMessageDialog(null, "这个五子棋游戏是由余靖精心制作的,厉害吧!"+ "五子棋是一种两人对弈的纯策略型棋类游戏");}// 实现认输按钮的功能if (e.getX() > 607 && e.getX() < 700 && e.getY() > 544&& e.getY() < 570) {int result = JOptionPane.showConfirmDialog(null, "确定要认输吗?");if (result == 0) {canplay=false;if (ChessUI.count == 0) {JOptionPane.showMessageDialog(null, "黑方已经认输!游戏结束!");} else {JOptionPane.showMessageDialog(null, "白方已经认输!游戏结束!");}}}// 实现设置按钮功能if (e.getX() > 491 && e.getX() < 564 && e.getY() > 542&& e.getY() < 570) {JOptionPane.showMessageDialog(null, "设置按钮的功能暂时还没设置好!呵呵,正在努力中!!");}// 实现开始游戏按钮功能if (e.getX() > 365 && e.getX() < 449 && e.getY() > 540&& e.getY() < 570) {int result = JOptionPane.showConfirmDialog(null, "确定要重新开始游戏吗?");if (result == 0) {canplay=true;for (int a = 0; a < Config.COLUMNS; a++) {for (int b = 0; b < Config.ROWS; b++) {ChessUI.chesses[a][b] = 0;}}ChessUI.chessframe.repaint();}}// 实现重玩功能if (e.getX() > 717 && e.getX() < 755 && e.getY() > 299&& e.getY() < 338) {int result = JOptionPane.showConfirmDialog(null, "确定要重玩五子棋游戏吗?");if (result == 0) {canplay=true;for (int a = 0; a < Config.COLUMNS; a++) {for (int b = 0; b < Config.ROWS; b++) {ChessUI.chesses[a][b] = 0;}}ChessUI.chessframe.repaint();}JOptionPane.showMessageDialog(null, "再接再厉!!!呵呵");}// 实现悔棋按钮功能if (e.getX() > 710 && e.getX() < 763 && e.getY() > 380&& e.getY() < 413) {int result = JOptionPane.showConfirmDialog(null,"确认要悔棋吗?悔棋是不道德的!!!");if (result == 0) {JOptionPane.showMessageDialog(null, "其实悔棋这个按钮的功能我还没实现,正在考虑中");}?
其实我这个五子棋还加上了一个登录界面,要先通过登录才能进入游戏界面,
登录界面见截图: