- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
优秀论文,值得下载!
优秀论文精选!
JAVA版井字棋的设计与实现
仇宾
摘要:井字棋是大家所熟知的一个小游戏,虽然简单,但其中包含了一些编程的基本技巧和基本算法,本文将在Eclipse环境下用Java语言编写一个可以人人、人机对弈的井字棋游戏。
一 引言
井字棋,即棋盘是一个井字,是一种在3X3格子上进行的连珠游戏,和五子棋比较类似,由于棋盘一般不画边框,格线排成井字而得名。游戏规则很简单,游戏双方一方为“X”,一方为“O”,哪方率先实现三子相连即为胜者。见图1:
图 SEQ 图表 \* ARABIC 1 正在进行中的井字棋游戏
现在我们来对井字棋游戏的代码实现做一个探讨,首先介绍人人对弈方式的实现过程,然后在此基础上介绍人机对弈井字棋的实现。
二 人人对弈井字棋的实现
1、难点释疑
人人对弈实现起来较为简单,游戏双方交替在棋盘上落下棋子“X”或“O”即可,最大问题就是如何判定胜负。从棋盘我们可以看出,获胜(即任一方出现三连子)一共有8中情况:三连横、三连竖以及两个斜对角,如果我们给每个落子点从0到8编号,如图2所示:
图 SEQ 图表 \* ARABIC 2 棋盘落子点编号
那么,这8中获胜情况我们可以用一个二维数组来表示:
static final int[][] WIN_STATUS = {
{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{0, 3, 6},
{1, 4, 7},
{2, 5, 8},
{0, 4, 8},
{2, 4, 6}
};
这样,再定义一个一维数组,每走一步棋就对上面的二维数组进行遍历——从二维数组中依次取出8种情况放入一维数组,然后查看一维数组中的三个棋子是否相同,如果相同可以判定获胜。
2、设计实现
第一步:写一个类继承自JFrame,然后定义几个必要的变量和常量,如下:
public class Tic extends JFrame {
JButton[] jb = new JButton[9];// 按钮数组构成棋盘的8个落子点
static final char empty = 32; // 代表空格
static int clicknum = 0; // 记录单击次数,决定是走X还是走O
static final int INFINITY = 100;// 带标无穷值
static final int WIN = +INFINITY; // O获胜
static final int LOSE = -INFINITY; // X获胜
static final int DRAW = 0; // 平局
// 获胜棋盘状态
static final int[][] WIN_STATUS = {
{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{0, 3, 6},
{1, 4, 7},
{2, 5, 8},
{0, 4, 8},
{2, 4, 6}
};
}
第二步:构建棋盘
在Tic类的构造方法中,JFrame的布局方式设置为GridLayout,然后每个格子里放置一个按钮即可,代码如下:
public Tic(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400); //棋盘大小
this.setLayout(new GridLayout(3,3));
this.setTitle(井字棋);
// 让窗口居中显示
Dimension screen = Toolkit.getDefaultToolkit().
getScreenSize(); // 获取屏幕尺寸封装到screen中
this.setLocation((screen.height - this.getHeight())/2,
(screen.width - this.getWidth())/2); // 窗口居中
// 把按钮加入窗体
for(int i=0; i9; i++){
jb[i] = new JButton();
jb[i].setFont(new Font(Arial,Font.BOLD,30));
jb[i].addActionListener(new JBClick());// 事件监听
this.add(jb[i]);
}
this.setVisible(true);
}
第三步:经过前两步,现在加上main方法,就可以执行显示棋盘了,代码如下:
public static void main(S
文档评论(0)