井字棋实验报告
- 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(Col or.black, 1));
pwright = new JPanel();
pwright.setBorder(BorderFactory.createLineBorder(Co lor.black, 1));
pwleft.setLayout(new GridLayout(qipanX, qipanY)); 篇二:软件综合设计井字棋游戏实验报告
成都信息工程大学
软件综合设计实验报告
——井字棋游戏设计
班级:信号处理131
姓名:
学号:
指导老师:刘涛
XX年3月
一、实验目的
熟悉和使用VC6++平台编程,了解VC6++编译、链接及如何查错纠正。编程思路。
编一个井字棋游戏。
二、实验平台
Windows 系统平台下的VC6++
三、实验要求
1. 建立一个控制台程序实现游戏;
2. 建立如下的变量
char ChessBoard[3][3] = {0};
int nCurrentPlayer = 0; // 1代表1#玩家。 2代表2#玩家
int nCurrentRow = -1; //当前输入的行
int nCurrentCol = -1; //当前输入的列
int nOneWin = 0; //1#玩家胜利数
int nTwoWin = 0; //2#玩家胜利数
int nDrawGame = 0; //和局
3. 游戏一开始,输出“xxx班xx同学(学号xxxxxxxx)欢迎您使用井字棋游戏”。
4. 新开始一局游戏,把棋盘的9个棋子全部清空为0.
5. 屏幕提示当前是1#玩家或者2#玩家,两个玩家(分别定义为1#和2#)分别轮流通过键盘输入放置棋子;
6. 对键盘输入的正确错误进行判断,包括:
? 输入的坐标是否越界?
? 输入的坐标是否已经有棋子了?
? 是否有一个玩家放置棋子后就连成一线而胜利?
? 是否放满了9个棋子仍然没有玩家获胜?本局平局则为平局。
? 是否输入了退出游戏的命令?如果是,则再次询问确定是否要退出。
7. 每一次轮到一个玩家输入前,先输出显示现在的棋盘上的棋子。
8. 对胜局、平局进行统计。
9. 胜利一局后,显示1#胜局数、2#胜局数,平局数。
10. 胜利一局后,询问是否要继续开始新的一局。
11. AI预测。每轮到一个玩家落子,在显示完当前棋盘状态后且输入坐标前,预测该玩家在(m,n)位置落子即可获胜。(选作)
12. 程序注释,要求:
? 每一个变量的注释
? 每一个函数注释
? 每一个循环注释
? 每一个if-else分支语句注释
? 注释可以采用 /**/ 或者 // 来注释
13. 不允许
? 不允许使用汉语拼音
? 不允许使用中文作为工程名、变量名、函数名
四、实验内容
1、
// 井字棋游戏
// 学号 XX021047
// 姓名韦德鹏
// 班级信处131班
#include "stdafx.h"
char ChessBoard[3][3] = {0};
int nCurrentPlayer = 1; // 1代表1#玩家。2代表