当前位置:文档之家› C语言课程设计之推箱子游戏报告

C语言课程设计之推箱子游戏报告

山东交通学院C语言课程设计推箱子游戏院(系)别信息科学与电气工程学院班级电气115学号1108152528姓名董雪指导教师王成时间2012-09-3—2012-09-7课程设计任务书题目推箱子系(部)信息科学与电气工程学院专业电气工程及其自动化班级电气115班学生姓名董雪学号11081252809月03日至09月07日共1周指导教师(签字)系主任(签字)年月日一、设计内容及要求:(1)箱子只能推动而不能拉动。

一次只能推动一个箱子。

(2)在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况。

(3)本游戏的目的就是把所有的箱子都推到目标位置上。

(4)此游戏目的是在训练你的逻辑思考能力。

二、设计原始资料:本游戏的目的就是把所有的箱子都推到目标位置上。

箱子只能推动而不能拉动。

一次只能推动一个箱子。

经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。

在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道!三、设计完成后提交的文件1.计算说明书部分假设数字0代表墙壁,数字1代表路,数字2代表空位,可使地图看起来规则,数字3代表箱子,数字4代表人。

那么人移动到路上时数字值的变化为:4;人移到空位上时其位置的数值变化为:4+2=6;箱子移动到路上时数值的变化为:3;箱子移动到空位上时数值的变化为:3+2=5;再就是每一次的移动都必须根据实际情况,来改动原位置和移动位置的数值,还原出地图原样模型。

四、进程安排第一天:分析问题,找出大体的设计思路。

第二天:构造出程序大体框架,即各种功能模块的组合。

第三天:分别写出个功能模块程序的源代码。

第四天:讲个功能模块加入主程序中,并实现所有的程序基本功能。

第五天:优化程序中的不足之处,优化显示界面,添加辅助功能模块增加程序的趣味性。

使程序软件更加适宜用户的操作和娱乐需要,准备程序答辩。

五、主要参考资料[1]谭浩强,C程序设计(第三版)。

北京:清华大学出版社,2005(2011重印)[2]马安鹏.Visual C++程序设计导学。

北京:清华大学出版社,2002[3]H.M.Deitel,P.J.Deitel.Small C++How to Program.2006.[4]Richard C.Leinecker,Tom Archer.Visual C++6宝典.张艳,张谦译.北京:电子工业出版社,1999[5]Beck Zaratian.Microsoft Visual Visual C++6.0程序员指南.希望图书创作室译.北京:北京希望电脑公司出品,1998成绩评定表作品成绩报告成绩口试(答辩)成总评成绩绩目录前言..................................................................................................错误!未定义书签。

1课程设计概述 (9)1.1推箱子游戏软件功能概述 (9)1.2Visual C++6.0概述 (9)2推箱子游戏软件总体设计 (9)2.1推箱子游戏软件总体设计思想 (9)2.2总体设计流程图 (11)3推箱子游戏软件详细设计 (12)3.1两个主要问题 (12)3.1.1地图的生成 (12)3.1.2人或人和箱子的移动 (12)4程序测试 (6)5课程设计总结 (14)致谢 (15)参考文献..............................................................................................错误!未定义书签。

6附录(程序源代码) (16)前言随着计算机技术的发展,可视编程技术占有了越来越重要的作用。

Visual C++6.0是一种功能强大行之有效的可视化编程工具。

因此此软件是在Visual C++6.0环境下编写的。

对于我们,随着学习的深入,已经大体掌握了Visual C++6.0环境下的程序开发。

为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C++6.0环境的软件开发,先以推箱子游戏作为开始,对Visual C++6.0环境和C语言的模块编程设计进行回忆和熟悉,有利于促进面向对象程序设计思想的理解,使得在此基础上的下一个软件的开发进行的更加顺利。

本文档详细叙述了基于Visual C++6.0环境下的推箱子游戏软件的设计过程以及程序源代码。

本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。

此次推箱子游戏软件的开发目的是使我们用最基础的C语言程序设计的方式来思考和解决问题的能力,并且可以掌握二维数组的使用、循环控制的使用、地图的设计和使用以及C语言语法。

本文档的安排如下:第一章主要介绍了Visual C++6.0编程环境。

第二章主要的介绍说明了推箱子游戏软件的编程思想和详细设计。

第三章主要对推箱子游戏软件进行调试,运行程序并截图,显示运行界面和结果。

第四章主要介绍了软件开发过程中遇到的一些问题,对该软件进行的一个总结。

程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,推箱子游戏软件和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。

摘要私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に1週間手配して、私達にVisual C++の課程の設計の実習を行わせます.このファイルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェアの過程を設計して、このソフトウェアは箱を押して遊戯することです。

つきましてはこのソフトウェアの機能は、ユーザーは字の符を輸入する。

字の符“a”は向左走を代表して、字の符“s”は代表して下で歩いて、字の符“d”は向右走を代表して、字の符“w”は向上して行くことを代表して、人を制御することは箱を行き先を押すことができてすぐ勝利した。

ソフトウェアの目的は人を鍛錬する能力を思惟することです。

以下は課程仕様を通過して、順序ソフトウェアからの説明が提示することを操作して、手順は説明することを調節して、総括した方面を開発して、この手順を詳説する製造した過程和作は用いる、諸般のが執行されることができる操縦。

关键字:箱が遊戯を押す,VC++6.0,源手順1课程设计概述1.1推箱子游戏软件功能概述在一个狭小的仓库中,把木箱放到指定的位置,通过控制人的走向来推箱子移动,箱子只能推动不能拉动,一次只能推动一个箱子。

稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道。

通过此游戏可以锻炼一个人的逻辑思维能力。

1.2Visual C++6.0概述Visual C++是微软公司的重要产品之一,是一种功能强大行之有效的可视化编程工具。

它提供了MFC类库,使用户可以方便的开发自己想实现的功能。

Visual C++6.0的主要特点:(1)自动化和宏功能。

(2)可以灵活地定制工具栏和菜单。

(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。

(4)支持Internet连接。

(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。

(6)在工作区内可以包含多个并列的工程文件。

(7)可以在对话框中使用WizardBar将程序同可视化元素联系起来。

(8)Find in File命令支持两个独立的输出窗格,可以保存上一次搜索的结果。

这些新特性可以更好地利用Visual C++开发工具进行Windows应用程序开发。

2推箱子游戏软件总体设计2.1推箱子游戏软件总体设计思想推箱子游戏软件的功能是锻炼人的逻辑思维能力。

推箱子游戏软件的功能模块有:(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按相应的键进入该功能。

(2)地图的生成,用二维整型数组来构成地图,其中数字代表特殊的符号。

(3)移动,人或人和箱的移动,接受用户输入的一个字符,控制人的走向,并且可以在允许的情况下推动箱子。

(4)清屏功能,使用了清屏函数,当在游戏中时可以直接返回主菜单,(5)利用了辅助色彩函数,使游戏界面更加好看,美观。

在源程序中声明并定义了void draw_map(int map[10][12])//地图函数,void move(int map[10][12])//移动函数使用了:#include<stdio.h>//标准输入输出头文件#include<stdlib.h>//system函数的头文件#include<conio.h>//getch函数的头文件多种头文件。

程序中还应用了:printf(“\a”);//发出警报声Static(int count);//统计步数程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。

2.2总体设计流程图程序开始菜单界面友好界面请选关数清屏界面返回菜单退出界面程序结束欢迎玩【推箱子游】1或2关每次按键都会执行清屏功能按q键控制按3键进行游戏1,2关游戏胜利图2-1-2总体设计流程3推箱子游戏软件详细设计3.1两个主要问题设计中的两个主要需解决的问题是:怎样生成地图、怎样实现人或人和箱子的移动。

3.1.1地图的生成设计中用二维整型数组中的数字元素表示不同的物体,比如0代表空地,1代表墙,2代表非游戏的填充内容(非必须内容),可以使地图规则,3代表目的地,4代表箱子,6代表人。

然后用一个switch语句给每个数字赋予不同的符号,在输出二维数组,生成地图。

3.1.2人或人和箱子的移动设计中要想使人移动,首先要找到人的起始位置,然后才能开始移动。

人向四个方向移动的原理是相同的,我们可以先研究一个方向的移动,找到人的位置后,以人向上走为例,因为向上走嘛(可以通过数组下标表示)。

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

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

(3)如果人前是在空地上的箱子。

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

(4)如果人前是已经进入目的地的箱子。

相关主题