C/C++设计五子棋游戏[2024-07-22]
1.基本要求
(1)实现五子棋游戏的各个规则
(2)使用图形函数生成棋盘等。
(3)用文件存储用户的进度
(4)用户开始新游戏时,先检测是否有历史记录,有的话可以继续未完成的棋局,也可以重新开始。(5)实现用户排名功能,要求能够将排名信息进行保存,存至文件永久保存。
(6)当新用户的成绩需要插入排名列表时,要能够修改原列表信息;如果是同一用户需要更新成绩,则覆盖原成绩。
(7)插入、修改、删除排名信息等要求使用链表实现。
2.目的与要求
(1)游戏规则:传统五子棋的棋具与围棋相同,棋子分为黑白两色,盘为19X19,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子。如果某一方下棋的棋子最先5子连续连成一线(行、列、对角线),则该方为赢家,游戏一局结束;如果棋盘下满未定胜负则为平局,游戏一局结束。
(2)功能模块:将程序分为图形显示、玩家控制、胜负判断和玩家计分四个模块。
①图形显示模块:程序开始运行时,给出欢迎及帮助界面;游戏开始后要求生成19X19的棋盘图像,并在棋盘上方提示当前落子方棋子颜色,游戏进行过程中,要求实时显示棋盘上已落下的棋子;分出胜负后,要求给出游戏结束画面。
②玩家控制模块:程序开始时,需玩家确定而后开始游戏;游戏过程中,两个玩家通过不同的按键移动光标,选择落子:游戏结束时,有玩家选择是否开始新棋局。
③胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止游戏程序,并着色连成一线的五子,弹出该色玩家胜出界面。
④玩家计分模块:一方玩家再胜利后通过对文件的操作进行计分,并输出于计分板上。
(3)其他要求:
①进入演示程序后,即显示欢迎界面,按任何键进入帮助界面,再按任何键可以进入主界面开始游戏。
②棋子的移动与落子有键盘上按键控制,本程序选取1P按键为W、S、A、D和空格键,2P按键为↑、、一、→和回车键,分别代表上移、下移、左移、右移光标和落子。在光标移动的过程中,光标按照玩家按键移动;在玩家按下落子按键后,程序自动调用棋子显示子程序和判断胜负子程序。1P、2P的落子后,程序会为落子处的数组元素赋一个特定值,用于判定胜负。
③游戏中esc键可以直接退出游戏,backspace键可以操作进行悔棋。
④游戏过程中,如果玩家1或者玩家2有一方获得胜利后,程序自动将提示哪一方获得了胜利,并将着色构成连珠的5个子。
⑤ 游戏结束且玩家选择不再继续后,跳出结束界面。退出程序。
3.实现提示
(1) 程序不涉及人机交互,算法较为简单。首先,以落子为出发点,分别沿着水平、竖直和两条对角线方向(分别为45°和135°)进行搜索,看在这四个方向是否最后落子的一方构成连续五个棋子。为了提高搜索速度,尽量减少搜索范围。以落子为中心两侧各判断四子共九子,判断这九子中是否有最后落子的一方的连续五个棋子。只要最后落子的一方在任一方向上有连续五个棋子,就表示该盘棋局已经分出胜负。
(2)监控键盘输入的函数及各键的ASCII码值:图形方式下的输入、输出及其相关的函数:判定五子成一线的方法,即矩阵中行向、列向、两条对角线方向上是否有连续五子:调用系统提供的声音函数等。