暑期项目 2

发布 2022-08-22 15:50:28 阅读 4960

暑期项目文档。

暑期项目我选择了推箱子这个游戏的开发作为锻炼自己编程能力的手段。推箱子是一个非常简单但是有很多乐趣的游戏,是很多操作系统自带的小游戏。本次暑期项目我想通过这个简单的游戏来体会真正编程可能遇到的困难以及其中的乐趣。

做这个游戏的主要目的是训练自己的基本编程技巧,包括了程序基本构架、二维数组、键盘操作及图形化函数等方面的知识。通过这个小游戏的开发,我实践应用了图形化界面的构成、二维数组及结构体的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用。

开发过程大体可分为以下几个步骤:1.思考总体设计方案:

总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的基本操作符、语句等。2.

画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。3.

流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现。写出需要实现的关键**。

4.编辑程序**:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。

5.**的调试:输入**并进行调试和正确运行。

在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。6.最后修饰:

程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。

游戏需要初始化,输入命令,地图重置以及退出游戏等基本的功能,每一个看似简单的步骤背后都是大量的又长又复杂的**,每一个小小的错误都会导致整个系统无法运行。游戏由初始化模块,图画模块,移动箱子模块,移动小人模块,功能控制模块五个模块组成,每个模块中又包含了几个实现具体功能的类,完成所有的类无疑是一个非常累人的工作。初始化模块包括屏幕初始化和游戏每一关的初始化。

屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。图画模块主要是被其他模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。移动箱子模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。

移动小人模块用于控制小人移动,从而推动箱子到目的地。功能控制模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。

最重要的函数主要有printwall(),printman,init(),printbox()等函数。printwall()函数用于画墙壁,传入参数x、y指明位置。该函数调用putoutchar()进行输出,以黑色为背景画绿色墙,用小方块表示墙(ascii码值为219)。

printbox()函数用于在非目的地画箱子,传入参数x、y指明位置。该函数调用putoutchar()进行输出,以黑色为背景画白色箱子,用ascii值为10的字符表示箱子。printdestination()函数用于画目的地,传入参数x、y指明位置。

该函数调用putoutchar()进行输出,以黑色为背景画黄色目的地,用心型表示(ascii值为003)。移动箱子的函数实现的功能分别是从空地移动箱子到空地、从目的地到空地、从空地到目的地、从目的地到目的地移动箱子。x、y指明小人的当前所处的位置,字符a表示移动的方向,有“u”“d”“r”“l”四个值,分别表示向上、向下、向右、向左移动。

这几个函数的实现原理大致相似。对于前面两个函数,首先判断移动的方向,从小人所处的位置沿着移动方向移动一步画小人,移动两步画箱子。还有一些函数和类用于实现其他的不同的功能。

小人移动的方向有四个,函数(处理小人移动的函数)对这4个方向移动的处理都一致,只是调用函数时的参数有所不同。首先判断小人移动的方向,然后根据小人所处的当前状态、下一步状态或者下下一步状态进行适当的处理。每一关的地图和难度不同,需要确定每一关后的下一关地图的输入以及展示,并考虑这些地图存储的位置。

通过关卡后,还需要退出游戏的提示语言以及程序**。推箱子游戏中还存在死结,当按某些步骤进行游戏时,会出现无箱子可推的情况,但是这种情况的判断太过复杂,超出了能力限度之外,所以在进行了一些尝试以后放弃了这个想法。

通过这次编程,我认识到即便是构建一个最简单不过能实现基本功能的小程序对一个人来说也是一项需要耐心和努力的工作。实现工程不能开始便直接写码,否则会付出惨重的代价。首先要做的是将整个程序的目标以及结构画出来。

然后对其中的部分一个一个地分成所需类所能完成的功能,然后最后才是具体的写码。即便有了网上一些游戏例子的参照,但是自己写的时候仍然困难重重,各种细小的错误让人头疼,小小的bug也会导致完全错误的结果。

同时,我也意识到,软件工**的是一个需要合作的工程。即便是一个小程序,一个人所要完成的任务也太多了,更不要说真正投入使用的应用程序和系统,几行的代万码靠一个人的力量实在太过困难,分工合作才能保证整个程序准确高效。另外,在编程过程中的注释也是非常非常重要的,自己写的**,如果没有注视的话,也需要很长的一段时间来分析才能理解这段**的含义以及功能,如果是分工合作的时候,大段没有注释的**就像天书一样。

所以,注释是保证整个编码过程高效愉快的重要条件,一段结构清晰,算法明确,有着整体结构图和具体注释的**才是合格的**。

暑期实践项目

近年我国新能源产业迅猛发展,风力发电 光伏发电在能源结构中所占地位日益重要。但与此同时,风能 太阳能本身受气候影响大,随机性强 波动大 有间歇,难以提供连续稳定的电能输出。这已成为制约新能源大规模开发利用的关键技术瓶颈。国家风光储输示范工程 由国家电网公司设计 建设,列入国家 金太阳 工程重点项目 ...

暑期项目总结

项目背景。苹果的成功带来了一系列app开发的高潮。objective c也成为现今最流行的一门语言。本次暑期项目我们选择学习objective c这门语言,我们认为开始学习阶段应该先从简单入手,所以我们选择通过编写一个有图形界面的高精度计算器来加深我们对objective c的认知,一方面项目不会因...

TowerDefense暑期项目

towerdefense暑期项目学习心得。编程是一件很难的事情。当然我的意思跟那篇著名的 编程是一件很难的事情 不一样。想把 写好,本来就是一件非常困难的事情。我曾听一个已经工作的人说,就光是c 长达四年后她还搞不清楚模板元编程究竟是什么,而且还有c语言学会了转c 会把坏习惯带进来啦,c 的人转做c...