C++小游戏设计 - 孔明棋

更新时间:2024-01-31 14:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2009年计算机实习报告

计算机实习报告

姓名: XXX 班级: xxxxxxxxx 学号: xxxxxxxxx 小班序号:xx 指导老师:XXX 题目:“孔明棋”游戏设计 邮箱:XXXXXXXXXXX@XXXX

1

2009年计算机实习报告

题目《“孔明棋”游戏设计》实验报告

一.功能说明

1.1总体功能说明

“孔明棋”游戏的设计,是基于一种古老的同名单人桌面游戏,本程序实现了孔明棋的游戏功能,并提供撤销、重新开始、背景音乐、步数统计、游戏成绩记录等辅助功能,基本满足玩家的游戏需要。

在基本游戏功能方面,赋予棋盘上的33个点有子/无子两种状态,及有子/无子/选定3种状态。提供了移动光标、选定棋子、移动棋子、自动检测游戏是否结束等功能。

在辅助功能上,本游戏能够重新开始。同时,设计了步数统计系统,连续移动计一步,撤销也计一步,给玩家探索更简洁的方法提供必要资料。游戏成绩记录系统可以记录并显示游戏历史上最好的10次成绩。撤销功能方面,预先申请了足够的空间,可以存储游戏进程中的每一步,玩家可以任意改变操作。

在主菜单中,可以控制背景音乐的开关;游戏各个界面与主菜单之间也可以任意切换,玩家可以随时查阅规则和历史记录。 1.2用户界面

1、主菜单

进入游戏后的界面。在这个菜单下,通过不同的选项,分别进入游戏,查看游戏规则,开/关背景音乐和查看历史记录,或退出游戏。

2、游戏界面

2

2009年计算机实习报告

游戏主要界面。界面左侧是游戏进行的棋盘,右侧是操作说明。玩家将在这个界面下进行游戏,在实现基础游戏功能的同时,本游戏还提供了撤销、重新开始及返回主菜单的附加功能,方便玩家进行游戏。

3、游戏胜利界面

玩家在一局游戏胜利,并且成绩能够排进历时前十名的话,就会出现以上界面,要求玩家输入由3个字母的姓名。之后,将自动转到历史记录界面。

4、游戏失败界面

3

2009年计算机实习报告

游戏失败后的界面。询问玩家是否再次游戏。 5、规则说明

对游戏基本情况及规则的说明,按回车键可返回主菜单。 6、历史记录

4

2009年计算机实习报告

该界面将显示游戏历史上前十名的姓名与成绩。初始条件下,前十名姓名均默认为aaa,成绩均默认为100步。 1.3使用方法

在主菜单下,通过数字键选择下一步操作,4可以选择开/关背景音乐,查看游戏规则后或历史记录后,可按提示返回主菜单。游戏过程中,W、A、S、D分别控制上下左右;空格为选定/取消选定;退格为撤销上一步操作;M为返回菜单;回车为重新开始。

实心圆为放有棋子的位置,空心圆为未放棋子的位置。通过上下左右移动光标。移动棋子时,首先用空格选中一个棋子,然后用方向键选择移动方向。移动过后按空格键取消选定(实际上任意键均可),之后继续游戏。错误的操作不会产生任何效果。当棋盘上无子可走是,游戏会自动结束,并判定玩家是否取得胜利。创造记录后,须输入3个字母的名字。

二.程序设计说明

2.1 总体设计框架

5

2009年计算机实习报告

从键盘输入长度为3个字母的名字,再将新的记录输出到“save”文件。 2.3 程序设计的难点和关键点

关键点:光标的移动,棋子的移动及在控制台上的表示,结束判定。 难 点:撤销操作中应读取哪个记录的判定;游戏记录的生成和读写。 2.4 调试的方法

1、系统崩溃:反复运行程序,推测问题发生点。在推测的地点设置断点,按F10开始调试,再按F5运行至断点处,然后逐步调试,观察变量变化,找出bug。

2、游戏结束后,胜利判定失败:在判定处设置断点,按F10开始调试,再按F5运行至断点处,然后逐步调试,观察变量变化,找出bug。 2.5 程序性能评价

运行效果

优点:游戏功能基本完善,提供撤销、重新开始、步数记录、成绩排名等功能,游戏结束自动判定,满足玩家需求;程序设置两级菜单,在主菜单与各子菜单之间可以自由切换;提供背景音乐,并且可以开关;程序稳定,基本不会在游戏过程中出现bug。

缺点:游戏结束判定偏慢,需要跳出选定状态才能进行;游戏结束后,因结束自动判定,无法撤销,对最后一步走错的玩家不够友善;游戏未设置存档功能;在游戏过程中无法查看步数。

程序设计

优点:设计点类,用对象表示棋盘上点,体现了面向对象的思想;采用了输入输出流,可以读写游戏历史前10位的成绩记录;使用goto函数,增强程序灵活性;程序游戏部分健壮性好,不易出现问题。

缺点:除类外,程序中只有一个main函数,未设置其它函数,使main函数过于冗长;过多使用了if?else和for语句,其他结构使用不够充分;程序略显繁复,运行速度有待提高。

三.心得体会

在小学期近3周的工作之后,我亲手编制的第一个游戏终于基本成型了。欣喜之余,在本次实习报告的最后,写下我这段时间的一点体会。

任务开始之初,对自己编写程序还是十分没有把握的。然而,只是凭借半年学习积累的知识,老师提供的和从网上查阅的一些函数,在一番努力之后,还是成功的完成了这个任务,而且基本还算顺利。可见,C++的基本知识还是相对简单,真正庞杂的是在编程过程中需要随时查阅的各种函数。

从编写的过程来看,程序主体的构建并没有花太多时间,反而是后期的调试和修改占用了近一半的时间,很多附加功能都是在后期逐个添加进去的。由此,了解了设计初期详细规划的重要性,添加功能时,读原有代码,添加控制变量,修改代码耗费的时间远比一开始就编写进去要多得多。再者,后期的bug大多是产生于数据越界,或缺少控制量等原因,同样体现了初期设计完善之必要,也表现了思路完善的重要性。

总之,本次的变成体验是一次十分宝贵的经历,提高了我编程能力,更重要的是使我加深了对C++编程过程的理解,增加了实践经验。

16

本文来源:https://www.bwwdw.com/article/z2iw.html

Top