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

推箱子C语言课程设计

推箱子C语言课程设计
推箱子C语言课程设计

需要的话,加QQ:42701618

《C语言课程设计》报告

C Program Experiment Designing

一、C语言课程设计目的及要求

目的:

根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调

试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐

渐培养学生的编程能力、用计算机解决实际问题的能力。

要求:

1.熟悉Turbo C 的编程环境、主要菜单功能。

2.通过上机验证运算符、表达式、运算规则、函数使用。

3.熟练使用C语言的典型语句编写简单程序。

4.调试典型例题或习题。

5.提高上机编程能力

二、实验类型

设计类型

三、实验学时

40学时

四、实验设备

微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套

五、C语言课程参考教材:

1. C语言程序设计清华大学出版社马靖善主编

2 谭浩强.C语言程序设计(第三版).北京:高等教育出版社,2002

题目:推箱子

1.基本功能介绍:

本程序为游戏推箱子,该程序的基本功能有:

推箱子游戏的求解难度比其他游戏高很多。有一些游戏有固定的解法,比如魔方。Windows经典小游戏扫雷可以总结出通用推理规则(请参见作者的“自动扫雷”中的说明)。一些游戏的搜索空间很小,可以用电脑蛮力求解,比如华容道,每一步只有两三种可能性。有一些游戏虽然搜索空间比较大,但是可以给电脑制定启发式搜索规则,让电脑比较“智能”地进行搜索,比如空当接龙,作者的空当接龙工具就是让电脑向着理顺牌的次序的方向前进。

推箱子游戏的搜索空间极大,又没有合适的一般方法。人可以总结出一些模糊的规则,但是这些规则非常难以用程序语言描述。推箱子问题已经被证明是一种“NP-难的问题”,“NP-难的问题”是计算机领域中至今没有找到有效算法的一类著名难题。

目前,根本不存在对所有推箱子问题都能有效求解的方法。网上现有的程序一般只能有效地解决10×10大小之内的题目。我的程序也不例外。

软件的特色

我的工具的特色是先进的死锁检测算法。死锁就是一旦把箱子推动到某些位置,一些箱子就再也无法推动或者无法推到目的点,比如四个箱子成2×2摆放。推箱子高手对何种情况引起死锁非常敏感,这样他们预先就知道决不能让某些局面形成,这也是高手高于常人的原因之一。我的工具能够检测出绝大部分这样的死锁,并且,由于对死锁的特征进行了高度提炼,能够检测出很多人也无法很快看穿的死锁。这样,工具的效率得到很大的提高。对于10×10大小以内的题目,一般都能很快解出。

每一行代表仓库的一行,不能有空行。

空格或‘='表示地板。每行最后连续的地板可以省略。

‘#’表示墙。

‘’表示人。

‘$’表示箱子。

‘.’表示目的点。

‘*’表示在目的点上的箱子。

‘+’或‘%’表示在目的点上的人。

“编辑”菜单下的“目标人位置”是本工具的特色之一。在求解一些大型题目

时,虽然不能直接使用本工具,但是可以把题目分解成若干个子目标,有些目标可以用工具求解。这时,仅仅把箱子推到位是不够的,往往要指定最终状态时人所在的位置。比如要让人通过一个充满箱子的通道,然后把箱子回复原状。这时这个命令就可以起作用,它指定最终状态时人必须在的位置。

工具界面使用不同颜色表示墙、箱子和人。在显示解答时,以推动一次箱子为一步,期间的人的移动不计。此时所有人所能到的格子用绿色填满。

在“试玩模式下”,移动人直接点击目标点即可,推动箱子的方法是鼠标右键点击箱子的目标点并且按住不放,然后点击左键。

Stage目录下提供一些推箱子的题目。其中有些是文本格式的。其中WVsoko目录下的题目由20603(仓库大师游戏的作者)提供。SoftStar目录下的关卡由网友金优转换。他的其他一些收藏整理或创作的关卡放在JinYou目录下。在此向两位网友表示感谢。

==关于目标宏

所谓“目标宏”是模拟这样一种解题思路:很多关卡明显可以分成若干区域,有些区域集中了目标点,另一些区域则集中了很多箱子。对于这样的关卡,人的思路显然是个个击破,对于目标点集中的区域考虑如何按次序摆满所有的目标点;箱子集中的区域考虑如何“突围而出”,然后再把两者集中起来。

推箱子工具可以模拟一种特殊情况下的目标宏,其条件是:

1. 存在一个“断点”。所谓断点是,假如去掉仓库区域里的所有箱子,然后在“断点”放一个箱子,则这个箱子把整个仓库区域分成严格互不连通的两个部分。

2. 初始状态时“断点”上不能有箱子,也不能是目标点。(如果有箱子或目标点的话,一般可以很容易手工改造成没有箱子或目标点的等价的状态。)

3. 所有的箱子在“断点”的一边,所有的目标点在另一边。

4. “断点”的上下格都是墙或者左右格都是墙。

如果能够找到这样的断点,则程序自动把题目切分成两部分求解,效率有极大提高。

巧妙利用工具的目标宏功能可以提供不少有用技巧。比如可以人工把通道弄窄以造成“断点”,从而解出以前不能解出的关卡。又如,很多大型关卡的局部是“突围”问题或者是“目标点到位问题”,这时可以自己构造一个带“断点”的关卡,断点一边是非常容易求解的,另一边则是拷贝过来的难题局部,这样就可以利用工具求解这个局部了。

给箱子编号。

找出那些能推的箱子的编号和面

让后逐个推每推一次就记录当时的位置信息。退完再找一遍箱子的编号和面再推。推到不能退了或出现以前重复位置信息,停。换其他推法。一次类推试找到能解的步骤记录。2.测试及运行效果

该程序复制到WIN-TC以后我试着在TROUB-2.0里应用了一下,首先进入程序会有提示是否进入程序,单击Y进入程序,我试着点击N,没有进入,说明其第一个选择语句正常的运行了,然后进入了程序的主要菜单,这是个挺老的游戏“推箱子”,我在vc++6.0下写的,在windowsXP下通过测试。

游戏规则很简单,只要把黄色的箱子全部推到圆圈的地方就可以了。用这种方法表示上面的题目,可以得到上图右侧的二维数组,行数和列数均为9。你可以看到左图并不是整整齐齐的二维图,它的最外围有一些缺口,我们在右图中全部用’W’来表示。这是显而易见的,它们没有什么作用,只是为了把图形填充为整齐的二维数组。如果你想用’S’来表示也无所谓,不会影响我们的程序执行,不过我想’W’更合适。

以上是一个推箱子问题状态的文本表示法,或者说是输入输出的方法,便于我们查看问题的状态。但是对于计算机程序处理来说,它并不是理想的表示方法,计算机更善于处理二进制的数字。所以我们还应该用二进制的方式来表示问题的状态,以便于程序的处理。同样的,我们还是使用二维数组来表示,不过这次数组的元素不是char字符,而是二进制的unsigned char。经过简单的分析可以知道,一个格子可以用4个bit来表示所有状态:

FlagWall = 0x01, // 是否障碍物

FlagBox = 0x02, // 是否有箱子

FlagDest = 0x04, // 是否目的地

FlagSoko = 0x08 // 是否有人

在输入和输出问题状态时,需要进行这两种表示法之间的转换。即在输入时,把文本表示法转换为二进制表示法;在输出时,则把二进制表示法转换为文本表示法。

我们不仅要知道箱子最终能否被推到目的地,更重要的是,我们要知道箱子如何被一步一步地推到目的地。因此,我们需要在问题状态中记录从初始问题状态到解答状态所经过的每一步,这正是成员变量steps_的作用。我们用一个嵌套类SokoStep来表示一步移动,用vector来表示所经过的N步移动。由于我们不知道从初始问题状态到解答状态需要经过多少步移动,这时vector容器就可以帮助我们很方便地保存每一

步的数据。

由于我们所有四个成员变量都具有普通的值语义,所以编译器自动生成的拷贝构造函数、赋值操作符和析构函数都完全可用,我们可以省下不少功夫。不过后面还有很多事情要做,推箱子游戏可要比数独问题、N皇后问题难弄多了。

我们还是从容易的方面入手,先来搞定输入、输出操作符。正如前面所说的,输入输出的过程其实就是两种表示法的转换,先来看看输入操作符。由于二维数组的行数和列数也需要输入,所以我把它们放在最前面,接着是指定行数和列数的char阵列,阵列中的每个char必须是七个字符(“WBSDIKO”)中的一个,否则我们抛出一个异常来结束程序。每读入一个char,我们就根据该char(文本表示法)来设置map_数组的对应元素(二进制表示法)。现在我们回到stateEq()成员函数,它的作用是把SOKO(推箱子的人)在不推动箱子的前提下可以走到的位置(即他的自由活动范围)全部标记上FlagSoko。这样,我们在判断一个箱子能否移动时就可以简单一些了,只要这个箱子的某一侧为空格(Space),而另一侧为FlagSoko,那么这个箱子就可以向空的一侧移动。

我个人认为该范例的可用性很广,稍微修改便可应用于很多程序中,我认为做程序,人性化是很重要的一个环节,这个程序就很好的体现了这一点,其运行的效果也很好,但是仍然有需要改进的部分,在今后的学习生活中我应该继续努力,把程序做的更完善更人性化,以上就是我这次C语言程序设计的全部。

推箱子游戏报告书

推箱子游戏设计报告书 一、项目背景 本实训要求对“推箱子游戏”进行分析、设计。 本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。 通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。 二、设计目的 本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用VB 开发应用程序的基本方法及基本技巧。 三、游戏介绍 本游戏设计了关卡设计器对有难度进行设计,同时用方向键↑↓←→控制小人的移动,空格重新开始,回车选择下一关,page up 上一关,page down 下一关,Esc 退回。小人移动来推箱子使箱子到达指定位置,如果箱子全部到达指定位置就表示过关 3.1界面设计 3.1.1界面设计原则: 1用户帮助 2向导 3快捷键 4鼠标与键盘对应 5布局合理化 6显示信息一致性 7界面一致性 8美观与协调性 9合理性 10规范性 11易用性 12一般交互 13数据输入 本游戏是一个简单游戏所以只涉及一些简单的界面设计原则.

3.2用户界面 又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。 GUI:即图形用户界面,一种可视化的用户界面,它使用图形界面代替正文界面。 本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明。用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便地使用本应用系统。

基于Android推箱子游戏的设计与实现毕业论文

摘要 本系统主要是实现基于Android的推箱子游戏,推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子。这其中也包括很多手机版本的实现,伴随着Android SDK技术的不断发展,一些基于Android应用也不断推陈出新,很快推箱子游戏便进入了千家万户。此Android推箱子游戏是基于Android SDK2.2基础上设计的,主要分为游戏菜单界面、玩家定制功能、游戏数据存储、游戏背景音乐设置、游戏帮助等功能模块的设计与实现,其中游戏菜单界面模块主要是供用户功能选择而用的;玩家定制则主要是通过提供游戏难度选择,使玩家根据自己的情况选择不同的关卡;游戏用户数据存储主要是采用轻量级数据库存储技术存储游戏用户的成绩;游戏背景音乐设置主要是实现用户可以选择自己喜欢的音乐的功能;其次还包括音量的大小开关;用户游戏指南等功能模块。 本系统采用MVC开发模式,使用SQLite数据库存储技术,基于Android SDK2.2开发平台,使用Eclipse+Android SDK2.2+DDMS+DroidDraw作为系统开发、调试的主要工具关键词:Android推箱子游戏 MVC SQLite Android SDK2.2

The Design and Implementation of the PushBox System Based on Android Abstract This system mainly is to realize the pushed box game based on Android ,Pushed box is a section from Japan's oldest game and designed to train people logical thinking ability. Game scene generally are set in the narrow space warehouse, and demanded the box is put to the appointed place. This requires player clever use limited space and channel, reasonable arrangement of the box location and movement order just may complete the task. Along with the computer game development, many lovers of programming based on this game ideas developed out various versions, various types of pushed box. They include a lot of mobile phones version of the realization, accompanied by Android SDK technology unceasing development, some based on Android applications are constantly, quickly pushed box game entered innumberable families. This Android pushed box game is based on SDK2.2 Android based on design, mainly divides into the game menu interface, customization function, game data storage, game background music Settings, games help etc function module design and implementation of the game menu interface module, which is mainly for the user function selection and use, Customization are mainly by providing game difficulty choice, make the player on its own choice of different levels, The game customer data storage is mainly to adopt a lightweight database storage technology memory game user's accomplishments, Game background music Settings is mainly realized the user can choose your favorite music function; Secondly also includes volume size switches, User game guides function modules. The system USES the MVC development pattern, use SQLite database storage technology, based on SDK2.2 development platform, use Android Eclipse SDK2.2 DDMS + + + Android

推箱子程序设计报告

程序设计报告 推 箱 子 通信学院 电子信息1204工程班 1207050420 郝国成 一.设计思路 推箱子游戏是一款很有趣味的游戏,其开发过程有一定的技

巧和方法,其中涉及到二维数组、键盘操作以及图形化函数等方面的知识。 设计推箱子这个游戏,目的是将箱子推到指定的空位,以完成游戏。 首先,要在窗口上,绘制地图,画出墙和草地。 然后,要保证人和箱子可以移动,这个就用到了case WM_KEYDOWN函数去控制了。 下来,就是要制定游戏规则,根据游戏规则,箱子可以在空地之间、目的地之间、空地和目的地之间来回移动,。 最后,把全部箱子移动到指定位置才算完成本次游戏,因此箱子每移动一次都必须判断全部箱子当前位置是否到达指定坐标。 而且,只要游戏没有结束,就没有时间的限制。 大体思路确定以后就是要去怎么做,怎么去实现自己的想法。 我是采用二维数组绘制地图的原理,把资源图片一张张绘制到窗口DC上,然后记录人物资源的坐标,通过方向键响应,改变人物坐标,达到控制人物移动的目的。箱子也同样是这个道理。 想好思路以后,就是动手写代码。这期间我又认识了好多新的Windows的函数,不断的修改,使我更能深刻理解到WIN 32 的作用,收获很大。 二.部分代码 // 推箱子.cpp : Defines the entry point for the application. #include "stdafx.h" #include "resource.h" //#include "mmsystem.h"//导入声音头文件

//#pragma comment(lib,"winmm.lib")//导入声音头文件库 #define MAX_LOADSTRING 100 #define width 48 #define heigth 48 typedefstruct { int x; int y; }point; char map1[10][10]= //地图二维数组 { " ####", " ### @#", " # b #", " ## # ###", " # # #*#", " # # b*#", " # b *#", " ########", " " }; char map2[10][10]= //地图二维数组 { "nnnn#####", "nnnn# @#", "###n#bb #", "#*#n# b #", "#*### ###", "#* ##n", "# # #n", "#### #", "nnn#####", " " }; staticintbStarted=0; int a = 0; intaimnum_qj=0; intaimnum=0; intboxoknum_qj=0; charmap_mid[10][10]; char map[10][10];

JAVA推箱子游戏

淮海工学院计算机工程学院 课程设计报告 设计名称:面向对象课程设计 选题名称:推箱子的设计与实现 系(院):计算机工程学院 设计时间:2014.3.10~2014.4.12 设计地点:软件实验室、教室

(3)功能模块 本程序包括四个功能模块:class mainFrame,class mainpanel,class Sound,class Readmap, 既主面板类,绘图的面板,播放背景音乐,用输入流读取地图文件。class mainpanel 主要是实现地图的初始化以及每一关地图的重载,class Sound主要是播放背景音乐。Adpressed的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。 表1 成员变量表 成员变量变量类型名称 开始状态Boolean Start 窗口高度int fHeight 窗口宽度int fWidth 计时器Timer timer 延时int delay 开始时间Date starttime 步数int steps 地图容器MapPanel mapPanel 玩法介绍String instruction 开始状态Boolean Start 表2方法表 方法名功能备注 Puzzle() 创建游戏窗口和设置图标 backaction() 后台操作getmap() 返回地图的方法 StartGame() 开始游戏控制,更新开始菜单 endgame() 结束游戏控制弹出结束窗口 getmap()/ 返回地图的方法调用类spite() menuShowClik() 在游戏中显示完整图片调用类class ShowImage actionPerformed() 动作演示 menuExit() 退出游戏 flush() 清空缓存 游戏过程设计 游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行走的

推箱子游戏详细设计报告

推箱子游戏详细设计报告 一、 引言 在前一阶段(概要设计)中,已解决了实现该游戏需求的程序模块设计问题。包括游戏模块间的关系设计,以及数据结构和模块结构的设计等。在以下的详细设计报告中将对在本阶段中对游戏所做的所有详细设计进行说明。 本阶段依据概要设计的要求,确定应该如何具体地实现所要求的游戏,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。具体包括各功能模块信息的录入和修改以及删除等。 1.2目的 目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出 现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。可以开发青少年学生的智力,又可以防止老年痴呆症。 1.3参考资料 《C 程序设计(第三版)》,谭浩强编,清华大学出版社 《Turbo C 2.0实用大全》,常玉龙等编写,北京航空航天大学出版社 《C 语言趣味程序百例精解》,陈朔鹰 陈英主编,北京理工大学出版社 《C 游戏编程从入门到精通》,浦滨著, 北京希望电子出版社 《C 函数实用手册》,张曜 郭立山 吴天著, 冶金工业出版社 二、总体设计 2.1需求概要 用户在进入游戏后,可以根据自己的想法自由移动箱子,游戏提供自由选关的功能模块,凭借这些模块,玩家可以实现对游戏快速通关! 2.2软件各模块结构 1、 初始化模块:该模块包括和游戏。屏幕初始化用于输出游戏的操作提示,游戏的每一关的初始化 是 初始化模块 每一关的初始化

2、 图画模块:该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、和画目的地。 画墙 画箱子 画图模块 画小人 画目的地 目的地画箱子 3、 移动箱子模块: 空地之间箱子的移动 移动箱子模块 目的地之间箱子的移动 目的地与空地之间的箱子移动

推箱子--Java课程设计

《面向对象程序设计》 课程设计报告 题目:经典推箱子趣味游戏设计与实现 院(系):信息科学与工程学院 专业班级:计算机科学与技术1201班 学生姓名:程伟 学号:20121183011 指导教师:吴奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日 华中科技大学武昌分校制

面向对象程序设计课程设计任务书

目录 1需求与总体设计 (1) 1.1需求分析 (1) 1.2总体设计 (2) 2详细设计 (4) 2.1 mainFrame类 (4) 2.2 mainpanel类 (5) 2.3S o u n d类 (7) 2.4 Readmap类 (7) 3 编码实现 (9) 3.1游戏源码 (9) 4系统测试 (42) 总结 (45)

1需求与总体设计 1.1需求分析 1.1.1功能结构图 推箱子游戏的功能结构图如图1.1所示。 在系统中,编写4个Java类:mainFrame,mainpanel,Sound,Readmap;分别对应初始化游戏界面,游戏操作,背景音乐,绘制地图。 图1.1

1.1.2 UML类图 推箱子系统除了上述4个Java类外,还需要Java系统提供的一些重要的类。这些类之间的UML图如图1.2所示。 图1.2 1.2总体设计 1.2.1 mainFrame类 mainFrame类负责创建系统的主窗口。mainFrame类有多种重要类型的对象,这些对象构成了游戏界面的简明与美观,并且通过监听实现方法赋予了这些组件的相应功能。MainFrame类通过调用Readmap类来实现将地图绘制在游戏主界面,通过调用Sound 类来实现对背景音乐的管理,实现音乐开关以及选择上一曲下一曲的操作。 设计中包括了所有你所能直观见到的图形界面,窗体的大小,下拉菜单中的功能菜单,使得玩家能够很直观的见到所有游戏中的功能.界面中有菜单, 包括:"选项""设置音乐""帮助"。按钮包括:"重来""悔一步""第一关""上一关""下一关""最终关""选关""音乐"等。 1.2.2 mainpanel类 Mainpanel类中集成了小人与箱子的移动规则,并且还包含了对键盘操作移动的响应方法。在本游戏系统中,给人的视觉感受应该是能感受都动作的变化,逼真的人物动作会使系统更有效.通过控制人物,箱子,空地,障碍物在数组中的位置的改变来控制移动

2021年推箱子C课程设计报告

程序设计课程设计报告书 欧阳光明(2021.03.07) 学生:孟祥煜 指导老师:曾宇容 课程设计名称:推箱子小游戏 班级:软件11401 一、设计任务 介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方法,显示器中断寄存器的设置、二维数组的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 二、设计目的 训练学生掌握C的数据结构和综合编程能力和游戏开发技巧等应用能力。 初步设想 推箱子是一款经典的益智小游戏,目的是在训练人的逻辑思考能力。在一个狭小的空间中,要求把木箱从起始位置处推放到指定位置。在空间中有地方限制,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推不能拉,所以需要玩家巧妙的利用有限的空间和通道,合理的移动次序和位置,才能完成任务。本

游戏一共分14关,由易到难,每一关都随着关数的增 加来增加难度,从而达到吸引游戏玩家的目的。 三功能 1、菜单功能,玩家通过看目录按对应的键可以进入对应的功能菜单,其中1进入游戏,2选择游戏关卡,3游戏帮助指南,4退出游戏。 2 游戏功能:玩家可以通过操纵键盘中的上下左右键进入游戏进行各种操作来完成游戏。 3 循环功能:当玩家正在游戏的时候如果某一步走错了,导致游戏无法完成,可以随时重新开始游戏来完成关卡,游戏过程中可以随时按Ctrl+V退出游戏。 4顺序功能:当玩家完成了某一关之后,随着进入下一关门可以按顺序进入下一关,继续开始更有挑战的关卡,如果该关是最后一关,则显示通关完成。 三、总体设计 1、功能模块设计 函数功能描述本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块。各个模块功能的功能描述如下: (1)初始化模块。该模块包括屏幕初始化和游戏第一关到第最后一关的初始化。屏幕初始化用于输出欢迎信息和操 作提示,游戏每一关的初始化是构建每一关的关卡。

C推箱子课程设计报告

C推箱子课程设计报告 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

武汉理工大学华夏学院 课程设计报告书 课程名称:软件综合 题目:基于VC++的“推箱子”游戏软件的开发与测试 系名:信息工程系 专业班级: 姓名: 指导教师: 2013 年元月 18日 课程设计任务书 学生姓名:专业班级:软件2101 指导教师:工作单位:信息系计算机教研室 设计题目:基于VC++的“推箱子”游戏软件的开发与测试 初始条件: 1.已完成c语言程序设计、软件工程、数据库概论或数据库技术等课程的学习 2. 系统环境:Intel 奔腾4以上处理器,1G以上内存,40G以上硬盘, Windows编程环境,Visual C++ 编程工具 要求完成的主要任务:(在规定的时间内完成下列任务) (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 主要任务: 系统完成用户登录及管理员增加、删除、修改、查询功能 1.按系统功能进行游戏背景区域(移动区域、围墙)的设计与绘制: 2.根据系统实现的功能,绘出功能图、系统流程图 3.模块调试,运行结果正确,并经教师检查及答辩;

设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下: ①设计任务与要求②总体方案与说明 ③程序主要模块的流程图④问题分析与解决方案的设计思想和改进设想 ⑤系统的调试记录、调试报告(即在调试中遇到的主要问题、解决方法及改进设 想) ⑥小结与体会 附录:①使用说明②参考资料 时间安排:2012年12月29日---2013年元18日(共三周) 指 系主任签字:年月日 目录

Android推箱子游戏程序设计

一、课题来源 本课题来源于一款来自日本的古老游戏——推箱子,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。 如今,伴随着Google Android操作系统的盛行,基于Android SDK的系统开发和基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME 开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性,所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解Android SDK基础上,我打算开发一款完全适应于Android操作系统的推箱子游戏。 二、本课题的基本内容 1、地图编辑器(可选) a)可通过地图编辑器生成地图 b)地图由小正方块拼接组成 c)地图中每一格可以是墙、通道、木箱、目标位置 d)游戏主角所在位置同时必须是通道或者目标位置 e)一张地图中主角数目有且仅有一个 f)一张地图中箱子数目必须与目标位置数目相等 g)允许对正在编辑的地图清除或者替换某一格中的内容 h)地图中一格不允许墙、通道、木箱、目标位置中两个及以上共存, 最后添加的类型为该格代表的类型 i)通过地图编辑器生成的地图可以被游戏程序调用 2、基本要求 a)每关卡箱子数目不定 b)主角和箱子只能呆在通道及目标位置上移动,不能穿墙 c)主角不能穿过箱子 d)箱子数量和目标位置数量相等(但每个箱子并不和唯一的目标位置 一一对应) e)主角可以移动和推动木箱(响应键盘方向键) f)主角只能往前推动箱子,不能向后或者向侧面拉箱子 g)主角不能同时推动两个箱子 h)箱子移动方向正前方紧挨墙壁,不可推动 i)允许撤销以及重做游戏步骤 j)将所有箱子推到设定位置则通过本关,自动进入下一关卡 k)记录每一关中玩家的移动步数 3、扩展功能(可选)

推箱子C语言课程设计

需要的话,加QQ:42701618 《C语言课程设计》报告 C Program Experiment Designing 一、C语言课程设计目的及要求 目的: 根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调 试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐 渐培养学生的编程能力、用计算机解决实际问题的能力。 要求: 1.熟悉Turbo C 的编程环境、主要菜单功能。 2.通过上机验证运算符、表达式、运算规则、函数使用。 3.熟练使用C语言的典型语句编写简单程序。 4.调试典型例题或习题。 5.提高上机编程能力 二、实验类型 设计类型 三、实验学时 40学时 四、实验设备 微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套 五、C语言课程参考教材: 1. C语言程序设计清华大学出版社马靖善主编 2 谭浩强.C语言程序设计(第三版).北京:高等教育出版社,2002

题目:推箱子 1.基本功能介绍: 本程序为游戏推箱子,该程序的基本功能有: 推箱子游戏的求解难度比其他游戏高很多。有一些游戏有固定的解法,比如魔方。Windows经典小游戏扫雷可以总结出通用推理规则(请参见作者的“自动扫雷”中的说明)。一些游戏的搜索空间很小,可以用电脑蛮力求解,比如华容道,每一步只有两三种可能性。有一些游戏虽然搜索空间比较大,但是可以给电脑制定启发式搜索规则,让电脑比较“智能”地进行搜索,比如空当接龙,作者的空当接龙工具就是让电脑向着理顺牌的次序的方向前进。 推箱子游戏的搜索空间极大,又没有合适的一般方法。人可以总结出一些模糊的规则,但是这些规则非常难以用程序语言描述。推箱子问题已经被证明是一种“NP-难的问题”,“NP-难的问题”是计算机领域中至今没有找到有效算法的一类著名难题。 目前,根本不存在对所有推箱子问题都能有效求解的方法。网上现有的程序一般只能有效地解决10×10大小之内的题目。我的程序也不例外。 软件的特色 我的工具的特色是先进的死锁检测算法。死锁就是一旦把箱子推动到某些位置,一些箱子就再也无法推动或者无法推到目的点,比如四个箱子成2×2摆放。推箱子高手对何种情况引起死锁非常敏感,这样他们预先就知道决不能让某些局面形成,这也是高手高于常人的原因之一。我的工具能够检测出绝大部分这样的死锁,并且,由于对死锁的特征进行了高度提炼,能够检测出很多人也无法很快看穿的死锁。这样,工具的效率得到很大的提高。对于10×10大小以内的题目,一般都能很快解出。 每一行代表仓库的一行,不能有空行。 空格或‘='表示地板。每行最后连续的地板可以省略。 ‘#’表示墙。 ‘’表示人。 ‘$’表示箱子。 ‘.’表示目的点。 ‘*’表示在目的点上的箱子。 ‘+’或‘%’表示在目的点上的人。 “编辑”菜单下的“目标人位置”是本工具的特色之一。在求解一些大型题目

推箱子java课程设计

推箱子趣味游戏 1. 课程设计的目的 随着科技水平的发展,人们的生活,工作节奏越来越快,同时人们的各方面的压力也越来越大。在社会的条件下,压力给人们带来很多烦恼,所以合理的解压,但又不会浪费很多时间的方式成为现代人的共同心愿。游戏随之产生,他的娱乐性和有趣性也越来越被大家所认可,小游戏可以安装在手机里,让人们无论何时何地都能玩到游戏。基于这样的目的, 我们在本次课程设计中为大家开发了一款适合休闲娱乐的小游戏—推箱子趣味游戏。他不仅可以帮助人们消磨时间,还可以在一定程度上开发智力, 此游戏的挑战性更加激发大家玩此游戏的热情。此课设计是配合JA V A 程序设计课程,深入学习掌握JA V A语言,熟练运用Java工具对系统的编写。通过课程设计各个项目的综合训练,培养学生实际分析问题,编程和动手能力,提高学生的综合素质。 2. 系统总体设计 在此游戏中本着娱乐为目的,游戏者不仅可以在玩游戏还可以享受音乐,游戏界面简单,操作容易,在玩游戏的同时还可以锻炼大家的反应速度及灵敏程度,在游戏中设置关数,级别由低到高,一关比一关难,提高大家的兴趣,玩家可以自由的选关,并设置了分数的存储系统。系统中又增加了音乐的设置可以让玩家享受音乐。通过对小人移动箱子是否到达墙边进行判断决定胜负及是否可以进入下一关。 2.1系统功能模块划分 在该系统中总共划分了五个模块 (1)初始化模块,对游戏界面进行初始化操作,对各个按钮的功能进行操作使之当动作发生时有一定的反应及相应。 (2)画图模块,主要是对地图的绘制进行画图的操作,在此游戏中不同的数字代表不同的含义。 (3)移动箱子模块,在推箱子游戏中最主要的模块,用户可以移动箱子到界

推箱子C课程设计报告

程序设计课程设计报告书 学生:孟祥煜 指导老师: 曾宇容 课程设计名称:推箱子小游戏 班级: 软件11401 一、设计任务 介绍推箱子游戏得实现方法,并逐步介绍C语言图形编程得方法与技巧。 在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方法,显示器中断寄存器得设置、二维数组得定义、键盘上键值得获取、图形方式下光标得显示与定位,以及部分图形函数得使用实现了一个完整得推箱子游戏界面,界面清晰可见。 二、设计目得 训练学生掌握C得数据结构与综合编程能力与游戏开发技巧等应用能力。 初步设想 推箱子就是一款经典得益智小游戏,目得就是在训练人得逻辑思考能 力。在一个狭小得空间中,要求把木箱从起始位置处推放到指定位置。 在空间中有地方限制,稍不小心就会出现箱子无法移动或者通道被堵 住得情况,而且箱子只能推不能拉,所以需要玩家巧妙得利用有限得空 间与通道,合理得移动次序与位置,才能完成任务。本游戏一共分14 关,由易到难,每一关都随着关数得增加来增加难度,从而达到吸引游 戏玩家得目得。 三功能 1、菜单功能,玩家通过瞧目录按对应得键可以进入对应得功能菜单,其中1进入游戏,2选择游戏关卡,3游戏帮助指南 ,4退出游戏。 2 游戏功能: 玩家可以通过操纵键盘中得上下左右键进入游戏进行各种操作来完成游戏。 3 循环功能:当玩家正在游戏得时候如果某一步走错了,导致游戏无法完成,可以随时重新开始游戏来完成关卡,游戏过程中可以随时按Ctrl+V退出游戏。 4 顺序功能:当玩家完成了某一关之后,随着进入下一关门可以按顺序进入下一关,继续开始更有挑战得关卡,如果该关就是最后一关,则显示通关完成。 三、总体设计 1、功能模块设计 函数功能描述本程序包括5个模块,分别就是初始化模块、画图模块、移动箱子模块、移动小人模块与功能控制模块。各个模块功能得功能描述如下: (1)初始化模块。该模块包括屏幕初始化与游戏第一关到第最后一关得初始化。屏幕初始化用于输出欢迎信息与操作提示,游戏每一关得初始化就 是构建每一关得关卡。 (2)画图模块。该模块主要就是被其她模块调用,用于画墙、在空地画箱子、

推箱子设计报告书

推箱子游戏设计使用说明书 一、项目背景 本实训要求对“推箱子游戏”进行分析、设计及编程实现。 本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。 通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。 二、需求分析: 经典的推箱子是一个来自日本的古老游戏,目的是在训练人的逻辑思考能力。在一个狭小的仓库中,要求把木箱从开始位置推放到指定的位置。在仓库有障碍物,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推,不能拉,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。本游戏一共4关,由易到难。开始,移动,重新开始,选择关卡,上一关,下一关,退出七个过程。(1)初始化包括屏幕初始化和每一关卡的初始化 (2)保存没一关的地图 (3)需要时读取所需要的地图 (4)下载入新的地图 (5)绘制地图快 (6)确认退出,保存提示 (7)按键处理包括移动小人和移动箱子,通过移动上下左右或ASDW键来控制小人的移动,从而推动箱子,以把箱子推到指定的目的地为过关。 (8)每一关都可以重置。 (9)记录走的步数,创建文件,记录每关的最好成绩。 (10)整个画面刷新 三、目的、意义和研究现状分析 1、目的、意义 本次课程设计的重要目的及任务就是将平时所学应用到具体设计中,能够熟练的应用学习中的各种方法。重在提高自身的vb编程能力。 2、研究现状分析 1.系统结构的总体设计 决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。 1)初始化模块 该模块包括屏幕初始化和游戏每一关的初始化。屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。 2)图画模块。 该模块主要是被其他模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。 3)移动箱子模块

推箱子游戏毕业论文

山东交通学院 C语言课程设计推箱子游戏

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

推箱子 VB课程设计说明书

目录 第1章课程设计目的与要求 (1) 1.1 课程设计目的 (1) 1.2 课程设计的实验环境 (1) 1.3 课程设计的预备知识 (1) 1.4 课程设计要求 (1) 第2章课程设计内容 (2) 2.1 游戏介绍 (2) 2.2 游戏设计 (2) 2.3 游戏实现 (12) 第3章课程设计总结 (14) 参考文献 (16)

第1章课程设计目的与要求 1.1 课程设计目的 本课程的课程设计实际是学生学习完《可视化编程技术》课程后,进行的一次全面的综合训练,其目的在于加深对可视化编程技术基本知识的理解,掌握运用VB开发应用程序的基本方法及基本技巧。 1.2 课程设计的实验环境 硬件要求能运行Windows 9.X操作系统的微机系统。 软件:Microsoft Visual Basic 6.0 1.3 课程设计的预备知识 熟悉Visual Basic 6.0程序设计的基本语法知识及常用技巧。 1.4 课程设计要求 按课程设计指导书提供的课题,每个小组设计一个完整的小游戏应用程序。要求根据规定设计游戏的具体要求,按照应用程序的设计步骤和VB的基本知识应用程序的分析与实现。应根据后面给出的基本学时分配合理安排设计时间,并独立完成各方面的设计。选择同一题目的同学,可以共同协作完成一个应用程序的开发任务。要求书写详细的设计说明书,对有复杂的代码段和程序段的部分,应画出程序流程图,写出全部的代码。在界面设计中,需画出每个窗体的布局,进行属性说明,杜绝雷同。

第2章课程设计内容 2.1游戏介绍 2.1.1 游戏规则 游戏要求:游戏开始时自动进入第一关,状态栏里显示操作提示。可以通过方向键控制小人的移动,按空格键重新开始本关,或者用回车键、翻页键选择其他关;当按下键时退出本游戏。在移动过程中,如果前方是一个箱子,并且箱子的前面没有墙或其他箱子阻挡,那么就可以把它向前推动一格。游戏的任务是把所有的箱子都推到标记处。 2.1.2 游戏说明 游戏的意图是要求玩家推动箱子完成三个箱子任务,左右键用于走动,SHIFT键用于推动箱子,CONTROL用于跳,SHIFT和CONTROL是推动箱子一起跳,若游戏失败可重新开始游戏。 2.2游戏设计 2.2.1 界面设计 图2-1界面设计

基于Java的推箱子游戏设计与实现毕业设计论文

基于Java的推箱子游戏设计与实现 摘要 社会在进步,人们生活质量也在日益提高。高强度的压力也接踵而来。社会中急需出现新的有效方式来缓解人们的压力。此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣。具有操作简单,易于上手的特点。 推箱子游戏的玩法十分简单——控制人物绕过障碍物,到达目的地。此次毕业设计基于Java语言。将游戏地图做成通用的关卡设计,关卡用二维数组实现,在二维数组中设置值域来表示不同对象,运用二维数组的遍历算法来加载对应图片实现了游戏图片初始化状态。同时,通过初始化多个不同二维数组实现了游戏地图关卡的设计,方法巧妙且简单易行,有效的解决了图片排布问题。充分运用类和方法的调用来实现游戏关卡的初始化。用读取键值的方法判断游戏人物移动、停止、到达目的地。舒缓的音乐配合有趣的步骤,相信能引起很多人的兴趣。作为一个具有悠久历史的游戏,也能够引起人的怀念和共鸣。 关键词Java 游戏二维数组算法读取键值栈

Sokoban based on Java Abstract Social progress, quality of life is also increasing. High-intensity pressure also follows. The emergence of new social urgently needed an effective way to relieve people's stress. This is designed to meet the needs of the community, Java Sokoban game allows people in her spare time, experience the fun of the game. With simple operation, easy to use features. Sokoban game’s rule is very simple - control characters around obstructions, to arrive at the destination. The graduation project is based on Java language. Game map to make a generic level design, level with two-dimensional array implementation, set the domain in a two-dimensional array to represent different objects, using the two-dimensional array of times calendar calculation method is realized to load the corresponding picture game image initialized state. At the same time, through the initialization of several different two-dimensional arrays realized the design of the game map level, a method is clever and simple, easy to effectively solve the problem of the picture arrangement. Make full use of calling classes and methods to implement the initialization of the game levels with reading the key value method to judge the characters move, stop, or reaching its destination. Soothing music with interesting step, which will hopefully lead to a lot of people's interest. As a game with a long history, but also can cause people to miss and resonance. Key Words: Java game; two-dimensional arrays; algorithm; key value method; stack;

课程设计小游戏推箱子

课程设计报告 课程名称:面向对象程序设计C++ 设计题目:小游戏推箱子 专业:计算机科学与技术 姓名: 学号: 指导教师:李晓虹 2016 年 1 月 1 日

一.需求分析 在实际编写程序的过程中,产生的一些疑惑与不解,在同学和老师的帮助下圆满解决,对于老师和同学们的帮助,在此我表示衷心的感谢。因为一开始构架的问题造成了一些功能的不能实现。经多方努力仍不能解决,留下遗憾,希望随着日后能力的提高能解决今天留下的问题。 通过本学期对游戏程序的研究,我们掌握了运用win32来制作游戏的技术,虽然不娴熟还有待提高,但是一些技术含量较低的小游戏还是很容易让我们掌握的。 此次游戏程序设计的目的,主要是通过win32来制作游戏来更好的掌握编程语言。通过win32这个平台,熟习在制作游戏方面所需要的技巧,将自己的游戏尽可能多的运用所学到的技术,并且将在课程上面学到的知识付诸于实践,并从实际操作中,找出自己的不足之处进行弥补。 每一次的课程设计,都是一次小小的软件工程,所以需要我们用百分百认真的态度来对待。对于小一点的程序,我们一个人足以应付,但是这并不是说我们可以单独一个人为所欲为,其实质应该是通过课程设计来培养自己独立自主的能力。而对于那些相对于麻烦的程序,便需要我们的协作,这样对我们以后进入企业公司发展打下了更多的基础。 二、系统的主要功能 这次课程设计的要求并不像以往那么紧,老师让给了我们充足的时间来制作游戏,虽然是计划做一款较为大众的经典游戏,并且能力有限,但还是对游戏做出了较高的期望,对于功能做出了较多的设想。例如,背景音乐的播放,时间的显示,自动切换关卡,难度的选择等。

推箱子游戏设计报告书

推箱子游戏设计报告书 需求介绍: 推箱子游戏是目前比较流行的游戏之一,很多操作系统或者流行软件都会带这种游戏。它既能锻炼思维的严密性,又有很多乐趣。本设计将用C语言实现一个简单的推箱子游戏,旨在阐述推箱子游戏的实现方法。 设计目的: 本设计旨在训练开发者的基本编程技巧,其中涉及软中断、二维数组、键盘操作及图形化函数等方面的知识。通过本设计的训练,开发者能基本掌握显示器中断寄存器的设置、二维数组及结构体的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用。 功能描述: 本游戏共有4关,由易到难,每一关都有初始化、按键处理、重置及退出功能。 (1)初始化包括屏幕初始化和每一关关卡的初始化,屏幕被初始化宽80列,高25行。 (2)按键处理包括移动小人和移动箱子,通过移动上下左右键控制小人的移动,从而推动箱子,以把箱子推到指定的目的地 为通关。 (3)每一关都可以重置,按空格键可以重置当前关。

(4)按ESC键可以在任何时候退出游戏。 总体设计: 1.功能模块设计 (1)系统模块图 本设计包括5个模块,分别是初始化模块、图画模块、移动箱子模块、移动小人模块和功能控制模块,如图1所示。各个模块的功能描述如下。 1)初始化模块 该模块包括屏幕初始化和游戏每一关的初始化。屏幕初始化用 于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一 关的关卡。 2)图画模块。 该模块主要是被其他模块调用,用于画墙、在空地画箱子、在 目的地画箱子、画小人和画目的地。 3)移动箱子模块 该模块用于移动箱子,包括目的地之间、空地之间和目的地与 空地之间的箱子移动。 4)移动小人模块 该模块用于控制小人移动,从而推动箱子到目的地。 5)功能控制模块 该模块是几个功能函数的集合,包括屏幕输出功能、指定位置

相关主题
文本预览
相关文档 最新文档