扬州大学信息工程学院。
数据结构》--课程设计报告。
题目: “井字棋”小游戏
班级。学号。
姓名。指导教师。
一、课程题目。
井字棋”小游戏。
二、需求分析。
计算机和人对弈问题。计算机之所以能和人对弈是因为有人将对弈的策略事先已存入计算机。由于对弈的过程是在一定规则下随机进行的,所以,为使计算机能灵活对弈就必须对对弈过程中所有可能发生的情况以及相应的对策都考虑周全,并且,一个“好”的棋手在对弈时不仅要看棋盘当时的状态,还能**棋局发展趋势,甚至最后结局。
因此,在对弈问题中,计算机操作的对象是对弈过程中可能出现的棋盘状态——称为格局。
例如图1所示为井子棋的一个格局,而格局之间的关系是由比赛规则决定的。通常,这个关系不是线性的,因为从一个棋盘格局可以派生出几个格局,例如从图1所示的格局可以派生出5个格局,如图2所示,而从每一个新格局又可派生出4个可能出现的格局。因此,若将从对弈开始到结束的过程中所有可能出现的格局都画在一张图上,则可得到一颗倒长的“树”。
树根是对弈开始之前的棋盘格局,而所有的“叶子”就是可能出现的结局,对弈的过程就是从树根沿树杈到某个叶子的过程。
“树”可以是某些非数值计算问题的数学模型,是一种数据结构。
图1 棋盘格局示例。
图2 对弈树的局部。
三、概要设计。
该课题的数据类型比较简单,只需要一个nodes类型记录棋子所在位置和当前状态即可。其中包括基本操作的函数有:初始化棋盘函数、判断当前位置是否为空函数、放置棋子函数、判断棋盘是否为满函数、判断输赢函数、棋局状态函数、选择最佳落子位置函数和打印棋盘函数。
int iswin(int side),其功能是依次从行、列、对角线判断是否有三个棋子连成一线。
int postionvalue(),可以返回四种状态,分别为电脑赢、玩家赢、平局和游戏正在进行。
nodes bestmovement(int side)是该问题的关键模块,其功能为得到当前格局下最佳落子位置,具体实现将在详细设计中阐述。
int main(),主函数,游戏系统界面设计,其功能是引导玩家进入游戏,选择游戏模式(玩家先手或电脑先手),并显示游戏界面。
四、详细设计
1)数据类型nodes定义如下:
typedef struct
返回最佳位置;
// bestmovement
五、测试数据及运行结果。
图4 游戏界面(电脑先手)
图5 游戏结局。
六、源程序。
#include <>
#include <>
#define max_size 3
#define false 0
#define true 1
#define empty 0
#define human 1
#define computer 2
#define human_win 0
#define draw 1
#define computer_win 2
#define playing 3
typedef struct
return true;
int iswin(int side)
//判断一列。
for(column=0;column for(row=0;rowif(board[row][column]!=side)
break;
if(row>=max_size)
return true;
//判断主对角线。
if(board[0][0]==side &&board[1][1]==side &&board[2][2]==side)
return true;
//判断副对角线。
if(board[0][2]==side &&board[1][1]==side &&board[2][0]==side)
return true;
return false;
int postionvalue()
if(side==computer)
else for(row=0;row for(column=0;columnif(isempty(row, column))
place(row,column,side);
node=bestmovement(opponent);
place(row,column,empty);
if((side==computer &&condition) |side==human &&condition=
bestrow=row;
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...