下载后可任意编辑数据结构课程设计报告范文12024 年 4 月 19 日下载后可任意编辑扬州大学信息工程学院《数据结构》---课程设计报告题 目: “井字棋”小游戏 班 级: 学 号: 姓 名: 指导老师: 22024 年 4 月 19 日下载后可任意编辑一、课程题目“井字棋”小游戏二、需求分析计算机和人对弈问题。计算机之因此能和人对弈是因为有人将对弈的策略事先已存入计算机。由于对弈的过程是在一定规则下随机进行的,因此,为使计算机能灵活对弈就必须对对弈过程中所有可能发生的情况以及相应的对策都考虑周全,而且,一个“好”的棋手在对弈时不但要看棋盘当时的状态,还能预测棋局进展趋势,甚至最后结局。因此,在对弈问题中,计算机操作的对象是对弈过程中可能出现的棋盘状态——称为格局。例如图 1 所示为井子棋的一个格局,而格局之间的关系是由竞赛规则决定的。一般,这个关系不是线性的,因为从一个棋盘格局能够派生出几个格局,例如从图 1 所示的格局能够派生出 532024 年 4 月 19 日下载后可任意编辑个格局,如图 2 所示,而从每一个新格局又可派生出 4 个可能出现的格局。因此,若将从对弈开始到结束的过程中所有可能出现的格局都画在一张图上,则可得到一颗倒长的“树”。树根是对弈开始之前的棋盘格局,而所有的“叶子”就是可能出现的结局,对弈的过程就是从树根沿树杈到某个叶子的过程。 “树”能够是某些非数值计算问题的数学模型,是一种数据结构。图 1 棋盘格局示例图 2 对弈树的局部三、概要设计42024 年 4 月 19 日下载后可任意编辑该课题的数据类型比较简单,只需要一个 Nodes 类型记录棋子所在位置和当前状态即可。其中包括基本操作的函数有:初始化棋盘函数、推断当前位置是否为空函数、放置棋子函数、推断棋盘是否为满函数、推断输赢函数、棋局状态函数、选择最佳落子位置函数和打印棋盘函数。int IsWin(int side),其功能是依次从行、列、对角线推断是否有三个棋子连成一线。int PostionValue(),能够返回四种状态,分别为电脑赢、玩家赢、平局和游戏正在进行。Nodes BestMovement(int side)是该问题的关键模块,其功能为得到当前格局下最佳落子位置,具体实现将在详细设计中阐述。52024 年 4 月 19 日下载后可任意编辑int main(),主函数,游戏系统界面设计,其功能是引导玩家进入游戏,选择游戏模式(玩家先手或电脑先手),并显示游戏界面。四、详细设计 (1)数据...