一、课程题目
“井字棋”小游戏
二、需求分析
计算机和人对弈问题。计算机之所以能和人对弈是因为有些人将对弈策略事先已存入计
算机。因为对弈过程是在一定规则下随机进行,所以,为使计算机能灵活对弈就必需对对弈
过程中全部可能发生情况和对应对策全部考虑周全,而且,一个“好”棋手在对弈时不仅要
看棋盘当初状态,还能估计棋局发展趋势,甚至最终结局。所以,在对弈问题中,计算机操
作对象是对弈过程中可能出现棋盘状态——称为格局。
例图 1 所表示为井子棋一个格局,而格局之间关系是由比赛规则决定。通常,这个关系
不是线性,因为从一个棋盘格局能够派生出多个格局,比如从图 1 所表示格局能够派生出 5
个格局,图 2 所表示,而从每一个新格局又可派生出 4 个可能出现格局。所以,若将从对弈
开始到结束过程中全部可能出现格局全部画在一张图上,则可得到一颗倒长“树”。树根是
对弈开始之前棋盘格局,而全部“叶子”就是可能出现结局,对弈过程就是从树根沿树杈到
某个叶子过程。
“树”能够是一些非数值计算问题数学模型,是一个数据结构。
图 1 棋盘格局示例
图 2 对弈树局部
三、概要设计
该课题数据类型比较简单,只需要一个 Nodes 类型统计棋子所在位置和目前状态即可。
其中包含基础操作函数有:初始化棋盘函数、判定目前位置是否为空函数、放置棋子函数、