在visual c++下编写的c语言推箱子游戏 联系客服

发布时间 : 星期日 文章在visual c++下编写的c语言推箱子游戏更新完毕开始阅读a013b89684254b35eefd3460

山东交通学院课程设计报告

3 推箱子游戏软件详细设计

3.1 两个主要问题

设计中的两个主要需解决的问题是:怎样生成地图、怎样实现人或人和箱子的移动。

3.1.1 地图的生成

设计中用二维整型数组中的数字元素表示不同的物体,比如0代表空地,1代表墙,2代表非游戏的填充内容(非必须内容),可以使地图规则,3代表目的地,4代表箱子,6代表人。然后用一个switch语句给每个数字赋予不同的符号,在输出二维数组,生成地图。 3.1.2 人或人和箱子的移动

设计中要想使人移动,首先要找到人的起始位置,然后才能开始移动。人向四个方向移动的原理是相同的,我们可以先研究一个方向的移动,找到人的位置后,以人向上走为例,因为向上走嘛(可以通过 数组下标表示)。

(1)要判断人前面(上一行),是否为空地,是空地则可以移动,移动后判断并改变人员原位置的数值元素和空地原位置的数值元素;否则不移动。

(2)如果人前面是目的地,人也是可以移动的,同样判断人原位置数值元素,并改变人员位置的数值元素和前一位置的数值元素。

(3)如果人前是在空地上的箱子。如果箱子前面又是空地,则可以移动,改变箱子前位置的数值元素,还是判断原位置的数值元素,然后改之;如果箱子前为目的地,和上面说的一样移动和改数值元素,只是多了计分这一步。

(4)如果人前是已经进入目的地的箱子。如果箱子前又是空地,则可以移动箱子,但是要减分,改变空地位置的数值元素,判断人和箱子原地的数值元素,并改之;如果箱子前是另一目的地,方法同上,只是不减分。用分数控制箱子是否已全在目的地。

(5)每一次的移动,必须要清屏,然后再显示一次地图,这样便可以实现人或

人和箱子的移动。

5

山东交通学院课程设计报告

4 课程设计总结

为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期一周的Visual C++课程设计实习,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。

在此次推箱子游戏程序开发过程中,有很多东西值得我们思考并总结。 开发过程大体可分为以下几个步骤:

(1)思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的Visual C++语言基本操作符、语句等。 (2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。 (3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码。

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

(5)代码的调试:在Visual C++6.0环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。

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

通过这次课程设计,使我们更加熟悉的掌握了Visual C++语言的运用。帮助我们熟悉了更多Visual C++语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。

致 谢

最后,在这里郑重的感谢张老师的帮助,让我得到了许多意想不到的收获。也感谢学校提供给我们这次宝贵的实践机会,让我们可以动手动脑,大大提高了个人的能力和素质。

6

参考文献

[1] 马安鹏.Visual C++程序设计导学。北京:清华大学出版社,2002 [2] 电子书籍. Visual C++技术内幕(第四版).网址:http://www.5xsoft.com [3] Beck Zaratian.Microsoft Visual Visual C++ 6.0程序员指南.希望图书创作室译.北京:北京希望电脑公司出品,1998

[4]Richard C.Leinecker,Tom Archer. Visual C++ 6 宝典.张艳,张谦译.北京:电子工业出版社,1999

[5] 李强,贾云霞. Visual C++项目开发实践.北京:中国铁道出版社,2004 [6] 郑莉,董渊,张瑞丰.C++语言程序设计.2003.

[7] H.M.Deitel,P.J.Deitel. Small C++ How to Program.2006.

[8]谭浩强,C程序设计(第三版)。北京:清华大学出版社,2005(2007重印)

5 附录(程序源代码)

#include //标准输入输出头文件 #include //system函数的头文件 #include //getch函数的头文件 #include \调用时 int map1(int a[9][10]);

char move(char t,int map[9][10]) {int i,j,x,y;

system(\清屏

for(i=0;i<9;i++) // 查找当前人位置 {for(j=0;j<10;j++)

if(map[i][j]==4 || map[i][j]==6) {x=i,y=j;};}

switch(t) {case 'w':

{ if(map[x-1][y]==1)//如果人面前时路 {map[x-1][y]=4;

if(map[x][y]==4) map[x][y]=1; else map[x][y]=2;}

else

if(map[x-1][y]==3)//人面前是箱子

{if(map[x-2][y]==2)// 人前箱子 箱子前面是空位 {map[x-1][y]=4;map[x-2][y]=5;

if(map[x][y]==4) map[x][y]=1; else

if(map[x-2][y]==0

{printf(\

||

map[x-2][y]==3

||

else map[x][y]=2;}

map[x-2][y]==5)//人前是箱子 箱子前面是墙 箱子 已在空位上的箱子

else if(map[x-2][y]==1)// 人前是箱子 箱子

{map[x-1][y]=4;map[x-2][y]=3;

前面是路

if(map[x][y]==4) map[x][y]=1;