井字棋实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程:人工智能原理及其应用
班别12商本
学号及姓名小
组
成
员
指导老师
实验02 井字棋
1、总体要求:
1.1总体功能要求:
利用不同的方法,实现人机对战过程中呈现出不同程度的智能特征:
(1)利用极大极小算法、α-β剪枝来提高算法的效率。
(2)使用高级语言,编写一个智能井字棋游戏。
(3)结合极大极小算法的使用方法和α-β剪枝,让机器与人对弈时不但有智能的特征,而且计算的效率也比较高。
1.2.开发平台要求:
开发者开发的软件必须能够在不同系统的电脑上正常运行,因此开发平台为:开发环境:JDK1.6
开发工具和技术体系:
为了此游戏能够很好的在不同系统中运行,因选择javaee进行开发,利用eclipse
1.3项目管理要求:
(1)项目程序编写过程中要适当的写一些注释,以便下次作业时能够快速的上手和以后的修改:
(2)项目程序要保存在一个固定的工作区间;
(3)确保代码不要太多冗余
2、需求分析:
2.1软件的用户需求:
井字棋游戏的用户希望游戏除了有一般的功能之外,还可以通过极大极小算法、α-β剪枝等方法是的井字棋游戏能够拥有智能特征,并是的电脑在人机对弈的过程中因玩家的难度选择而体现不同程度的智能状况。
2.2软件的功能需求:
本游戏需要实现功能有:(1)游戏的重新设置
(2)游戏统计(如:人赢的次数、电脑赢的次数等)(3)游戏的退出
(4)不同智能程度下(脑残、懵懂、正常、智能),人机对弈
(5)既可以选择难度,也可以选择谁走第一步(人or电脑)
2.3软件的性能需求:
井字棋游戏需要以图形界面的形式表现出来,通过点击图标就可以进入游戏;在游戏进行时,人机对弈时电脑能够快速的反应并根据人的上一步动作作出,通过选择“脑残、懵懂、正常、智能”难度选择,电脑以不同程度的智能与人进行游戏对弈。
2.4 运行环境:能够运行java程序的环境(装有jdk或者jre)
2.5 用户界面设计:用gridlayout进行用户界面的设计把界面中分为不同的
模块。
3、软件概要设计
3.1 软件的逻辑设计:就是系统的功能模块结构图
4、软件详细设计
4.1 开发平台与环境
Eclipse; JDK1.6
4.2 用户界面的详细设计
4.3 各个模块的具体设计
游戏界面主要是利用GridLayout来进行布局管理,把整个JFrame分成左右两部分pwleft和pwright。
public void Layout() {
fw = new JFrame("井字棋");
fw.setBounds(100, 100, 1000, 600);
cw = fw.getContentPane();
pwleft = new JPanel();
pwleft.setBorder(BorderFactory.createLineBorder(Color.black, 1));
pwright = new JPanel();
pwright.setBorder(BorderFactory.createLineBorder(Color.black, 1));
pwleft.setLayout(new GridLayout(qipanX, qipanY));
pwleft是用来装3*3井字棋的9个格子
for (int i = 0; i < qipanX; i++)
for (int j = 0; j < qipanY; j++) {
qipan[i][j] = new JLabel();
qipan[i][j].setBorder(BorderFactory.createEtchedBorder());
qipan[i][j].setBackground(Color.RED);
qipan[i][j].setEnabled(true);
pwleft.add(qipan[i][j]);
}
pwright是用来装游戏设置和游戏状态显示。然后再将pwright分为上、中、下三个部分分别命名为pwright1、pwright2、pwright3
pwright1用来装三个按钮:新游戏、游戏统计、退出游戏;
pwright2用来装难度选择(脑残、懵懂、正常、智能四个级别)和先手选择(玩家先手、电脑先手)两个界面;
pwright3用来显示当前游戏状态。
当点击游戏统计按钮的时候,会弹出一个界面,此界面内容是:玩家赢过的次数、电脑赢的次数和两者打平的次数。若是完成游戏,则或弹出一个说明游戏结果的界面(人赢、电脑赢或打平手)
一些重要算法的实现部分代码:
5 系统实现:
以上为设计部分,下面是实现部分, 5.1 开发平台:jdk1.6+eclipse 5.2 类图:
(1)主函数main创建实例对象;
(2)Public TicTacToe() 调用类的构造函数,构建游戏的图形界面和游戏记录的读取;(3)playChess()会进入一个死循环,要点击新游戏调用newGame()使得条件的到初始化得到条件manTurn = true才能够开始新的游戏;
(4)选择不同的难度程度“脑残、懵懂、正常、智能”分别调用AiChess1()、AiChess2()、 AiChess3()、AiChess4()
(5)下棋的时候是通过mouseClicked()来实现的等(6)。。。。。。。。。。。。。。。。。。。。。。。。。。。。
5.3结果展示