当前位置:文档之家› 基于VC++的推箱子游戏设计与实现

基于VC++的推箱子游戏设计与实现

基于VC++的推箱子游戏设计与实现
基于VC++的推箱子游戏设计与实现

本科毕业设计(论文)

基于VC++的推箱子游戏设计与实现

学院自动化学院

专业电子信息科学与技术

年级班别2008级(2)班

学号3108001166

学生姓名吕文财

指导教师 ________张学习 ___ __

2012年6月

基于

VC++

的推箱子游戏的设计与实现

吕文财

自动化学院

摘要

近年来随着科技的飞速发展, Visual C++语言的应用正在不断深入。Visual C++语言是当今国际上非常流行的计算机高级编程语言之一,它是面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它更以自动编译功能和高级除错功能著称。因此,广泛受到编程人员青睐。不仅适合作为系统描述语言,也用来编写系统软件,还可以用来编写应用软件和设计游戏等。

本论文着重分析用Microsoft Visual C++语言实现一个较为简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍Microsoft Visual C++6.0图形编程的方法和技巧。本设计通过主界面对话框类、关口选择对话框类、帮助对话框类三大类以及键盘操作模块、游戏规则模块、地图文件读取模块、背景音乐播放模块、地图绘制模块,共五大模块构成。实现了任意关数选择、难度依次加大、游戏步数记录、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。

关键词:推箱子,c++语言,模块,图形编程

Abstract

In recent years, with the rapid development of science and technology, Visual C + + language application are continuously in depth. Visual C + + language is very popular on the current international advanced programming languages of the computer, it is an object-oriented programming system integration of visualization. It not only has the program frame automatically generate, flexible convenient class management, coding and interface design integration, can develop a variety of interactive operation procedures and other advantages, and through the simple Settings will be able to make its generated programming framework support database interface, OLE2, WinSock network, 3 D control interface. It more for automatic compiler function and senior debugging is famous for its function. Therefore, widely favored by programming staff. Not only for the system description language, which is also used to write the system software, can also be used to write application software and game design, etc.

This paper focuses on analyzing with Microsoft Visual C + + language realize a relatively simple pushed box game, is to introduce the realization method of game pushed box, and gradually introduce Microsoft Visual C++ 6.0 graphics programming methods and techniques. This design through the main interface dialog box class, pass options dialog box class, help dialog box class three categories and keyboard module, the rules of the game module, map reading modules, background music files play module, map module, a total of five module. Realize the random number, the difficulty in turn off choice, the more steps, background music record game play, the game won more than judgement to help, the function, the use of graphics functions achieved a complete pushed box game interface, interface can be clearly seen.

Key word: boxman, C++ language, modules, graphics programming

目录

1 绪论 (1)

1.1课题研究的意义 (1)

1.2国内外研究动态 (2)

1.2.1推箱子游戏的研究动态 (2)

1.2.2国内外研究现状及分析 (3)

2 课题研究相关技术与分析 (6)

2.1 Microsoft Visual C++6.0概述 (6)

2.2 可行性研究与需求分析 (7)

3 推箱子游戏的总体设计 (9)

3.1推箱子游戏概述 (9)

3.2 推箱子游戏的基本要求 (9)

3.1.1 开发软件及硬件环境要求 (9)

3.1.2 运行环境 (9)

3.1.4 测试环境操作系统与硬件配置 (9)

3.1.4 界面要求 (9)

3.3 推箱子游戏具有的功能 (10)

3.3 推箱子游戏系统设计 (11)

3.3.1 推箱子游戏功能架构 (11)

3.3.2 程序结构设计 (11)

3.3.3 出错处理设计 (12)

3.3.4 维护设计 (13)

3.4游戏界面设计 (13)

3.4.1 游戏主界面的设计 (13)

3.4.2 游戏菜单结构的设计 (13)

3.4.3 游戏中关口选择对话框的设计 (14)

4 推箱子游戏的设计与实现 (15)

4.1推箱子游戏的界面实现 (15)

4.1.1 游戏菜单的实现 (15)

4.1.2 游戏帮助对话框的实现 (16)

4.1.3 游戏关口选择对话框的实现 (17)

4.1.4 游戏播放背景音乐的实现 (19)

4.2推箱子游戏的核心算法设计与实现 (19)

4.2.1 地图文件读取模块的设计与实现 (19)

4.2.2 地图绘制模块的设计与实现 (20)

4.2.3 键盘操作模块的设计与实现 (22)

4.2.4 游戏规则模块的设计与实现 (23)

4.2.5 主对话框的设计与实现 (24)

5 推箱子游戏的整合测试 (25)

5.1 主菜单和界面显示功能的测试演示 (25)

5.2 键盘操作功能的测试演示 (25)

5.3 箱子放置到指定位置时变色显示功能的测试演示 (26)

5.4 支持地图扩展功能的测试演示 (27)

5.5 游戏胜负判断功能的测试演示 (28)

5.6 游戏帮助功能的测试演示 (29)

总结 (31)

参考文献 (32)

致谢 (33)

1 绪论

1.1课题研究的意义

目前,在中国乃至世界,游戏产业已经逐渐成为微控制器领域的一个相当庞大以及重要的分支,而关于这方面的高级人才却仍甚是缺乏。尽管中国的程序员多如牛毛,但依然无法填补我们日常生活中的游戏需要,普遍质量也无法达标。迄今国内游戏公司已经达200多家,市场上运营的游戏也达到300款之多,但与欧美、韩国等国家的游戏发展程度还有不小差距。我国有广阔的游戏市场,宽阔的发展空间,无限的继续挑战和剧增的玩家队伍。随着网络的兴起,巨大的市场需求量使中国在短短几年,已经从无到有,从陌生到熟知,从掌握到运用。游戏必将成为网络竞争中的主角,它的商业利益和商业价值无法估量。中国,人口众多的国家,随着人们生活水平的提高,温饱早就不是最终目的,我们寻求的是更加多姿多彩的生活,那么我们怎么能错过游戏这一最佳休闲娱乐项目呢?所以我国游戏发展前景一片大好[1]!

小游戏是一个较模糊的概念,它是相对于体积庞大的单机游戏及网络游戏而言的,泛指所有体积较小、玩法简单的游戏,通常这类游戏以休闲益智类为主,有单机版有网页版,在网页上嵌入的多为FLASH格式。当下小游戏主要是指在线玩的flash版本游戏,统称小游戏,其实小游戏还包含单机游戏,小型游戏机等。一般游戏大小小于10m的游戏都统称为小游戏,一些街机类小游戏。如植物大战僵尸,捕鱼达人,合金弹头等归纳其中,因其游戏安装简便,耐玩性强,无依赖性而广受白领及小朋友的喜爱。

小游戏的发展时间不长,而且也一直未收到广泛关注,当时中国大陆比较知名的小游戏网站,像4399,7k7k和2144,基本以收集大量的小游戏并摆列在网站上为卖点。到2012年,这些网站收集的小游戏多达2万到8万款。4399小游戏是这类网站的代表,号称为中国最大的Flash游戏集中网站,在2012年提供了8万余款Flash游戏,并将游戏分类为:动作、体育、益智、射击、搞笑、冒险、棋牌、策略、敏捷、综合、休闲、装扮、儿童和测试游戏[2]。

由2007年底开始,网页游戏的市场日趋火爆,小游戏作为网页游戏的一个重要组成部分也受到了广泛的关注。另外像Facebook,Myspace及国内的校内网、开心网等等

一大批SNS社交网站的迅速崛起,集成小游戏几乎成为了这些SNS网站留住用户的不二法则。而体积较小,休闲和娱乐性很强的小游戏,尤其是Flash小游戏就成了SNS网站最热门的选择。

目前小游戏行业发展面临巨大挑战。首先是小游戏网站多如牛毛,竞争非常激烈;其次,小游戏行业已经不像以前那样风光,利润率相对以前低了很多,不再属于暴利行业,而且小游戏的推广成本越来越高,用户对网站的要求也逐渐加大;最后是潜在的政策风险已经出现,例如网络文化运营许可证在小游戏网站的出现。

经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

推箱子游戏是非常经典的游戏,类似的游戏你也一定早就玩过。比如当今流行的《切绳子》、《愤怒的小鸟》等游戏,能在生活中给我们带来莫大的快乐,提升我们的大脑运算能力,开发我们的智慧。不仅在PC机上,在手机和很多PSP上都是十分常见而且流行。可以说,这种智力型游戏,给这个社会制造了许多快乐,对儿童、少年的成长起到非常重大的作用。

记得几年前,《推箱子》在PC机上刮起了一股不小的益智类游戏的旋风,现在许多资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。推箱子游戏1981年由日本人今林宏行首创,是在1982年12月由Thinking Rabbit 公司首次发行,名“仓库番”。箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦。

1.2国内外研究动态

1.2.1推箱子游戏的研究动态

这款经典的手机游戏,现在电脑软件版,网页版,手机安卓、塞班版,3D版本都早就问世。最出名的当属唐图科技的《宇宙推箱子》。以推出高品质Symbian游戏闻名的唐图科技,这次是将经典的《推箱子》游戏搬上了手机。在这款已经被多次翻新的经典益智游戏中,唐图科技的开发人员仍然没有让我们失望。独特的创意,精美的画面,

丰富的效果,以及方便的操作,处处体现出唐图科技对于玩家的了解和独到的设计。

这款基于X-Factory游戏引擎开发的《推箱子》游戏,首先将玩家熟悉的主角换成了一艘宇宙飞船,游戏的场景也相应地移到了浩瀚的宇宙空间中,而被推动的箱子则变成了不断闪烁的能量块。游戏场景层次非常丰富,令人眼前一亮,可以说是一个完全不一样的推箱子游戏。玩家操纵的飞船,在移动时会从尾部喷出动态的火焰,飞船的飞行动作平滑流畅,操作非常爽快。当能量块被推到正确的位置时,会不断地发出绿光,提示已经完成一部分。这些丰富的效果,都依赖于X-Factory的强大功能和唐图科技开发人员的精彩创意。

3D推箱子黄金版Magic Sokoban Gold 是一个古典的解谜益育游戏。五彩缤纷的图像和3D立体构图使箱子真实可见。游戏很容易操纵,用一只鼠标即可,游戏超过1000个水平。

Flash小游戏《小狐狸推箱子》《松鼠推箱子》《吉豆推箱子》《机器人推箱子》等一系列新版游戏,甚至可以利用道具,更是将这款最经典的推箱子发挥到极致。从1982年的“仓库番”到现在各种版本、各种平台的推箱子系列游戏,这款经典的智力型游戏长盛不衰,可见其在智力开发上给人类教育发挥了不小的推动作用。

1.2.2国内外研究现状及分析

C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 C++是一种使用非常广泛的电脑程式设计语言。它是一种静态资料类型检查的,支援多范型的通用程式设计语言。C++支援程序化程式设计、资料抽象化、面向对象程式设计、泛型程式设计、基于原则设计等多种程式设计风格[3]。

Stroustrup工作起于1979年的C with Classes。这个构思起源于 Stroustrup 做博士论文时的一些程式撰写经验。他发现Simula具备很利于大型软件开发的特点,但Simula的执行速度太慢,无法对现实需求发挥功效;BCPL虽快得多,但它过于低阶的特性,使其不适于大型软件的开发。当Stroustrup开始在贝尔实验室工作时,他有分析UNIX核心关于分散式计算的问题。回想起他的博士论文经验,Stroustrup开始为C 语言增强一些类似Simula的特点。之所以选择C,是因为它适于各种用途、快速和可移植性。除了C和Simula之外,同时也从其它语言中取得灵感,如ALGOL 68、Ada、

CLU以及ML。刚开始时,类别、衍生类别、储存类型检查、内联和默认参数特性,都是透过Cfront引入C语言之中。1985年10月出现了第一个商业化发布。

1983年,C with Classes改命名为C++。加入了新的特性,其中包括虚函数、函式名和运算符重载、参考、常数、使用者可控制的自由空间储存区控制、改良的型别检查,以及新的双斜线(//)单行注解风格。1985年,发布第一版《C++程式设计语言》,提供一个重点的语言参考,至此还不是官方标准。1989年,发布了Release 2.0。引入了多重继承、抽象类别、静态成员函式、常数成员函式,以及成员保护。1990年,出版了The Annotated C++ Reference Manual。这本书后来成为标准化的基础。稍后还引入了模板、异常处理、命名空间、新的强制类型转换,以及布尔。

随着C++语言的演变,也逐渐演化出相应的标准程式库。最先加进C++标准函式库的是串流I/O程式库,其用以取代传统的C函式,如printf和scanf。随后所引入的程式库中最重要的便是标准模板库,简称STL[4]。

多年后,一个联合的ANSI-ISO委员会于1998年对C++标准化(ISO/IEC 14882:1998)。在官方释出1998标准的若干年后,委员会处理缺陷报告,并于2003年发布一个C++标准的修正版本。2005年,一份名为Library Technical Report 1(简称TR1)的技术报告释出。虽然还不是官方标准的一部分,不过它所提供的几个扩展可望成为下一版C++标准的一部分。几乎所有目前仍在维护的C++编译器皆已支援TR1。

随后,C++不断增加新特性。虚函数(virtual function)、操作符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常处理(exception)、RTTI(Runtime type information)、命名空间(namespace)逐渐纳入标准。1998年国际标准组织(ISO)颁布了C++程式设计语言的国际标准ISO/IEC 14882-1998。另外,就目前学习C++而言,可以认为它是一门独立的语言;它并不依赖C语言,我们可以完全不学C语言,而直接学习C++。所以有部分人认为在大多数场合中,C++完全可以取代C语言[5]。

C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借著接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程式库的出现,泛型程式设计在C++中占据了越来越多的比重性;第三阶段从2000年至今,由于以Loki、MPL等程式库为代表的产生式编

程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程式设计语言中最复杂的一员。

目前最新的C++标准是2011年9月发布的ISO/IEC 14882:2011[1],又称C++0x或C++11。现在的最新版C++编译器集合在Microsoft Visual Studio 2010软件里面,包含C++,Visual basic,C#,J#,.net。等, 其中,VC开发环境的版本已经升级至Microsoft Visual C++2010,对C++的支持更加全面稳定,建议电脑性能好的可以使用此版本。目前微软公司已经停止对VC++6.0系列产品的维护,继而转向.NET平台环境,新的MS2008、MS2010等将更符合新世纪通用开发需求[6]。

根据Effective C++第三版第一条款的描述,现在C++由以下四个“子语言”组成:

1、C子语言。C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C 语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。

2、面向对象的C++语言。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本。

3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。

4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎[7]。

此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。

在Windows版本系列中,下列特点是始终保持并不断发展的;

?图形化的窗口界面。

?多任务方式的运行环境。

?虚拟化的设备接口。

?以虚拟内存为核心的内存管理。

?网络功能及应用程序,包括Miscrosoft网络、通用基础网络协议等。

?多媒体功能及应用程序,包括图形、声音、动画和开发工具等。

?功能丰富的用户管理工具和实用软件[8]。

2 课题研究相关技术与分析

2.1 Microsoft Visual C++6.0概述

VC 作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说 VC++不是门语言,虽然它和 C++之间有密切的关系,如果形象点比喻的话,可以 C++看作为一种“工业标准”,而 VC++ 则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。 VC++应用程序的开发主要有两种模式,一种是 WIN API 方式,另一种则是 MFC 方式,传统的 WIN API 开发方式比较繁琐,而 MFC 则是对 WIN API 再次封装,所以 MFC 相对于 WIN API 开发更具备效率优势[9]。

Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台[3]。

Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台[10]。

Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比

如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

由于C++是由C语言发展起来的,也支持C语言的编译。6.0版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态。仅支持Windows操作系统。目前发现与windows 7兼容性不好,安装成功后可能会出现无法打开cpp文件的现象。

Visual C++是比较实用的开发工具。首先它的核心——MFC类库已是事实上的业界标准;其次,它的可视化开发工具紧密集成,可用于开发非常专业的Windows、Web和企业级应用程序;第三,Visual C++的联机帮助已被集成到MSDN(微软开发者网络)库中去了,MSDN包含了微软大部分产品的技术文档和支持资料,内容相当丰富,是程序员不可多得的参考材料,现在MSDN库随着Visual C++6.0一起发行,实在是大家的福音。

作为当今流行的开发环境,Visual C++6.0具有如下特点:

(1)Visual C++6.0提供了开发Windows环境下的应用程序的简捷、快速和实用的开发环境。利用Visual C++6.0开发Windows应用程序具有很高的效率。

(2)Visual C++6.0提供了MFC类库,开发者只需要做少量的工作就可以得到功能齐全的Windows应用程序。

(3)Visual C++6.0提供了高度集成的工具集,使得在开发应用程序的全过程中都保证了较高的效率。集成化便于程序开发,开发者可以再诸如编辑、建立、调试等不同的任务之间快速切换,甚至可以同步进行。

(4)图形化的可视特点使得Visual C++6.0简单易学[11]。

2.2 可行性研究与需求分析

问题定义的可行性分析是软件生存周期的第一阶段。可行性研究的目的是实用最少的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的实质是要进行一次系统分析和设计的简化过程,也就是在较高层上以抽象的方式进行系统分析和设计的过程。一般来讲,应该从技术、经济和操作等方面来研究每种解法的可行性。

(1)要求

作为一款极为经典的游戏,推箱子吸引了一代代玩家乐此不疲,本例通过使用Visual C++6.0进行设计,使用了API函数,将书本知识应用到实际程序中,以便于为以后的进一步学习奠定基础。本例要求大量使用API函数,熟悉消息映射机制的具体实现。

(2)目标

推箱子游戏的设计目标完成一个比较简单的游戏,使之能够实现推箱子游戏的基本功能,成为一个比较完整的游戏框架。该游戏作为一个单机版的游戏界面,基本达到推箱子游戏的基本功能。通过练习能进一步学习API函数的使用。

(3)可行性研究方法

决定软件的可行性研究方法主要有:成本效益分析,对估算问题的看法,软件的作用范围,软件的成本估算,速度安排等。

(4)决定可行性的主要因素

决定可行性的四个主要方面有:经济因素,技术因素,法律因素,不同方案。由于该游戏本身的规模不大,几乎可以再所以的计算机系统上运行,所以对于硬件和软件没有太苛刻的要求,各种游戏平台,大型电脑、家用游戏机等,甚至连掌上型的小游戏机都能顺畅运行。

(5)需求分析

推箱子是一个脍炙人口的游戏,所以大家对它都很是熟悉,现在的要求是尽量设计一个合格的推箱子游戏。作为一个广受关注的游戏,现在有大量的关于推箱子的资料,我尽量吸取已有的成功的经验,做到精益求精。

3 推箱子游戏的总体设计

3.1推箱子游戏概述

推箱子是一个来自日本的古老游戏,目的是在训练玩家的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。

在游戏主界面中,会出现一个小人、若干个箱子和箱子放置点。玩家需要利用方向键控制小人上下左右移动,并推动界面中的箱子到达指定的箱子放置点。

3.2 推箱子游戏的基本要求

3.1.1 开发软件及硬件环境要求

◇Intel Pentium 4 2.0GHZ,512内存,80G硬盘。

◇Microsoft Windows 2000 Professional。

◇Microsoft Visual C++6.0。

3.1.2 运行环境

◇Intel Pentium 2及以上处理器,32M以上内存,20M以上硬盘空间。

◇Microsoft Windows 2000或XP以上操作系统。

◇800×600或以上的屏幕分辨率。

3.1.4 测试环境操作系统与硬件配置

◇Microsoft Windows 2000 Professional。

◇Microsoft Windows XP Professional。

◇有MFC环境的动态库文件,如MFC42.dll等。

◇Intel Pentium 4 2.0GHZ,512内存,100G硬盘剩余空间。

3.1.4 界面要求

采用Windows标准界面,只需要使用键盘和鼠标即可完成全部操作。而且操作相对

简单,不需过多地对操作人员进行培训并提供帮助说明。

3.3 推箱子游戏具有的功能

(1)能够显示主菜单和界面

游戏需要提供主菜单让玩家进行游戏设置,同时能够把地图文件中的信息转换成为图像显示到主游戏界面上。

(2)能够实现键盘操作功能

能够接收到键盘输入的方向键信息,并根据不同的方向键把游戏人物移动到相应的位置。例如,当玩家单击方向键“上”时,如果向上的位置是可移动的,那么就当把游戏人物向上移动一个方格。

(3)能够把放置到位置上的箱子进行变色显示

当玩家把箱子推到指定位置的格子时,需要把这个箱子进行变色。这样就能明确的显示出该箱子已经放置到指定的位置上。此游戏设计为当推到指定位置的格子时,箱子变为红色,边框为橙色。

(4)支持地图扩展功能

玩家可以自己扩展原游戏地图文件,从而生成新的游戏地图。按照表4.2.2中地图文件中数据与图像对照说明进行游戏地图设计。设计完毕后重新打开游戏,选择对应关口即可呈现。

(5)游戏胜负判断功能

在游戏中,当玩家把所有的箱子都推到箱子放置点时,玩家胜利通过当前游戏关口,进行下一关口的游戏。如果玩家无法将指定的箱子全部推倒放置点时,玩家失败。玩家可以选择重新进行当前关口的游戏,还是退出游戏。

(6)支持关口选择功能

玩家在游戏中可自行选择需要挑战的关口。当玩家点击菜单中“游戏设置—关口选择”,并在对话框中输入所要的关口数字,设置完毕后点击开始游戏即可打开所需关口。

(7)游戏支持背景音乐功能

通过主菜单,在游戏开始后,可以选择播放或者禁止播放背景音乐。默认为禁止播放。玩家也可以通过修改背景音乐对应的WAV文件进行背景音乐的替换,充分满足玩家的个性化需求。

(8)游戏提供帮助说明

在游戏菜单中,提供一个使用说明项,以方便对本游戏不了解的玩家对游戏进行操作和使用。鉴于本游戏家喻户晓,故在此处只是提供比较简单的说明。

3.3 推箱子游戏系统设计

3.3.1 推箱子游戏功能架构

根据推箱子游戏基本要求以及相关拓展功能,进行游戏结构功能设计,游戏功能框架图如图3.1所示。

图3.1 推箱子功能框架

3.3.2 程序结构设计

游戏共由3个类和5个模块组成,如图3.2所示。

图3.2 游戏主要类结构

◇主界面对话框类:主要负责主界面、菜单及各个窗口类对象的创建和调用等处理。◇键盘操作模块:主要负责接收玩家键盘输入并进行箱子移动等处理。

◇关口选择对话框类:主要负责游戏挑战关口的选择和设置。

◇地图文件读取模块:主要负责读取地图文件并进行相应的解析工作。

◇地图绘制模块:主要负责将地图数组中的数据绘制成地图图像。

◇游戏规则模块:主要负责游戏规则的判断。

◇背景音乐播放模块:主要负责游戏中背景音乐的播放。

◇帮助对话框类:主要负责帮助提示的显示及其他辅助信息。

3.3.3 出错处理设计

(1)出错输出信息

当游戏中出现错误,采用弹出对话框的方式提示用户出现错误。

(2)出错处理对策

当游戏中出现错误,采用中止当前游戏并重新开始新游戏的方法处理游戏中的错误。

3.3.4 维护设计

由于整个推箱子游戏项目在开发完成后,基本不会有太多的变动,所以维护的主要任务是把用户使用中出现的问题解决即可。

3.4游戏界面设计

3.4.1 游戏主界面的设计

推箱子的游戏主界面设计,如图3.3所示。

图3.3 设计的游戏主界面

其背景为黑色,墙壁采用灰色格子,通道为蓝色,箱子为橘黄色;右边等级和已走步数方块采用白色背景红色字体。

3.4.2 游戏菜单结构的设计

推箱子的游戏菜单设计如图3.4 所示。

图3.4 设计的游戏菜单结构

3.4.3 游戏中关口选择对话框的设计

关口选择对话框的设计如图3.5所示。

图3.5 关口选择对话框

当玩家在对话框中输入关口数字,并重新点击开始游戏时,游戏会自动选择对应关口的地图级别开始新游戏。

推箱子游戏报告书

推箱子游戏设计报告书 一、项目背景 本实训要求对“推箱子游戏”进行分析、设计。 本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。 通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。 二、设计目的 本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用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

推箱子游戏--51单片机课设计(最全)

《51单片机》 课程设计 题目:基于51单片机的推箱子游戏设计 目录 1、课程设计目的 (1) 2、课程设计题目和实现目标 (1) 3、设计方案 (1) 4、Proteus仿真原理图 (7) 5、程序设计 (9) 6、调试总结 (28) 7、设计心得体会 (28)

参考文献 (29) 附录:程序代码------------------------------------------------------------------29

1、课程设计目的 《MCS-51单片机》课程设计是与《MCS-51单片机》课程相配套的实践教学环节。《MCS-51单片机》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。培养大胆发明创造的设计理念,为今后就业打下良好的基础。 通过课程设计,掌握以下知识和技能: 1.单片机应用系统的总体方案的设计; 2.单片机应用系统的硬件设计; 3.单片机应用系统的软件程序设计; 4.单片机开发系统的应用和调试能力 2、课程设计题目和实现目标 2.1 课程设计题目:基于51单片机的推箱子游戏设计 2.2实现目标 设计一款在以51单片机为核心的硬件系统中运行的推箱子游戏。游戏一共9关,功能包括: (1)显示游戏开机界面和游戏界面; (2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,通过小人推动箱子,把箱子推到指定的目的地为过关,箱子只能推不能拉;(3)用于可以任意选关,并能随时退出、进入游戏; (4)每一关都有时间计时,显示当前玩家的游戏耗时。 3、设计方案 根据设计目标,整个系统框图如下:

推箱子程序设计报告

程序设计报告 推 箱 子 通信学院 电子信息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];

推箱子游戏攻略.pdf

第一关: 直接将箱子推向钱币处就完成任务,此关是给大家一个基础练习,知道先点击一下箱子,然后再点击一下钱币,工人会自动帮助将箱子推向所想推到的位置。 第二关: 先将最下面的箱子推向最里面的钱币,然后再点击最外的箱子,推向第二个钱币,最后将余下的箱子推进最后一枚钱币。 第三关: 将挡在中间的箱子向下推两步,将靠右边的箱子向上顶一步,将最下面的箱子向左推一步, 将原先推下来的箱子向顶回原来的位置,这时将挡在左边的箱子推至钱币的右下角,然后将中间挡路的箱子推向右上角,再将靠中间墙的箱子推至左下角,最后将余上的箱子推至最后 一枚钱币。 第四关: 将挡路的箱子向下推一步,将挡路的第二个箱子向右推一步,工人向下走一步,然后将右手的箱子向右推一步,将已经在钱币中的箱子向上推至顶,将第二排右手边的第一个箱子向右 推一步入钱币中,再将头顶的箱子上顶入钱币,将左手的箱子向右推两步进钱币,最后将余下的箱子推入最后一枚钱币。 第五关: 将挡路的箱子向右推两步,将右下角的箱子向上顶两步,将中间的箱子推入最里的钱币,将第一个箱子推入中间的钱币,最后将余下的箱子推入最后的钱币。 第六关: 将中间右下角的箱子推至目前工人所站位置的头顶,然后将另三个箱子按顺时针的顺序推入 相邻的钱币,最后将第一个推动的箱子再直顶入钱币中。 第七关: 从下往上,将第一个箱子向右推一步,将第二个箱子向上顶一步,将最上的箱子推入最顶的钱币,然后将并排的三个箱子右手边的第一个推入第二枚钱币,将并排的两个箱子的左手那

个箱子向上顶一步,将右手的箱子推入钱币的最下一枚,将上墙的箱子向右直推入第三枚钱币,最后余下的箱子推入最后的钱币中。 第八关: 直接将中间的箱子顶入品字形的箱子中形成连体,将并排的三个箱子中的右手箱子直接顶至 最顶的钱币,将最品字形最顶的箱子向左推一步,将并排的两个箱子的右手那个直顶入最高 的钱币中,将最下的箱子直顶入钱币,将竖排两箱子的最下那个箱子推入中间的钱币,最后再完成最后一个箱子。 第九关: 先将右边中间的箱子推入左下角的钱币中,再将右手边的上下两箱分别推入左手边的中、上两钱币,将最上挡路的箱子向左推一步,将中间挡路的箱子向下推两步,将最下的箱子推入右下角的钱币中,最后将余下的两个箱子分别推入右手的钱币中就完成任务。 第十关: 先将最右边的箱子推至最底,将纵列三个箱子中的中间箱子向右推两步入钱币,将三列中的中间箱子向上顶一步,然后再将其向下推至最底,将最上的箱子向右推两步,将最后箱子推入钱币完成任务。 第十一关: 先将脚下的箱子向左挪一步,再将第二排的箱子向下推至与第三排箱子并排,然后将最上的箱子推至第一枚钱币,再将并排的箱子的右手箱子直接顶回到第二枚钱币,最后按从下往上的顺序将最后的两箱推入相应的钱币即完成任务。 第十二关: 先将最上的第一个箱子向上顶一步,再向下推两步入钱币,将中间的箱子向上顶两步,将最下的箱子向左推一步入钱币,最后推完余下的箱子完成任务。 第十三关: 这关开始有些难度了,别看箱子少,但确实得花一段时间思考一下呵。先将左数过来的第二个箱子向下推两步,再将左手第一个箱子向左推两步入钱币,将第右手由上往下数的第一个 箱子向左推三步入钱币,再将目前并排未入钱币的右数第一个箱子向上顶一步,将第二个箱子向右推一步,好,现在将排成列的右手的箱子由上往下的第一个推至钱币的最上面一枚,

基于VC++的推箱子游戏设计与实现

本科毕业设计(论文) 基于VC++的推箱子游戏设计与实现 学院自动化学院 专业电子信息科学与技术 年级班别2008级(2)班 学号3108001166 学生姓名吕文财 指导教师 ________张学习 ___ __ 2012年6月

基于 VC++ 的推箱子游戏的设计与实现 吕文财 自动化学院

摘要 近年来随着科技的飞速发展, Visual C++语言的应用正在不断深入。Visual C++语言是当今国际上非常流行的计算机高级编程语言之一,它是面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它更以自动编译功能和高级除错功能著称。因此,广泛受到编程人员青睐。不仅适合作为系统描述语言,也用来编写系统软件,还可以用来编写应用软件和设计游戏等。 本论文着重分析用Microsoft Visual C++语言实现一个较为简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍Microsoft Visual C++6.0图形编程的方法和技巧。本设计通过主界面对话框类、关口选择对话框类、帮助对话框类三大类以及键盘操作模块、游戏规则模块、地图文件读取模块、背景音乐播放模块、地图绘制模块,共五大模块构成。实现了任意关数选择、难度依次加大、游戏步数记录、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 关键词:推箱子,c++语言,模块,图形编程

基于java的推箱子游戏解析

基于JAVA的推箱子游戏 前言 在这个充满竞争的社会里,随着生活节奏的不断加快,人们的生活水平越来越繁忙,因此,越来越多人感到无比的烦躁与巨大的压力,这些压力也带给人们诸多烦恼。所以如何解除现代人的生活压力,释放心中苦闷已经成为现代人的共同心愿。而本次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于EditPlus编译器,为大家开发了一款适合的、休闲娱乐的游戏,在娱乐的同时也给忙碌的上班族们开拓了另一个思考问题的空间。 基于JAVA的推箱子小游戏主要分为初始化模块,画图模块,移动小人模块,移动箱子模块以及功能控制模块。玩家是通过控制小人的移动来推动箱子,需要避过障碍物与死角才能将其推放到指定位置从而达到过关的目的。每关的难易程度各异,不仅适合人们休闲娱乐,还有助于开发智力,提高人们思考问题能力与想象能力,改善思考方式,拓展思维。 关键词:JAVA;解压;推箱子;休闲娱乐

Abstract In this competitive society, along with the accelerating pace of life, people's living standard more and busier, therefore, more and more people feel very upset and enormous pressure, the pressure also gives people a lot of trouble. So how to relieve the pressure of modern life, release the pain has become the common aspiration of the people. But this time based on the JAVA Push Box Game is the use of JAVA language and the combination of EditPlus compiler; we developed a suitable, recreational game, in the entertainment but also for busy office workers to develop another thinking space. Based on the JAVA Push Box Game consists of initialization module, drawing module, mobile SIM module, mobile box module and control module. Game player is controlled through a small mobile drive box, need to avoid obstacles and dead angle can be pushed into the specified location so as to achieve the purpose of clearance. Each level of difficulty degree is different, not only for recreation, also contribute to the development of intelligence, improve people's thinking ability and imagination ability, improve the way of thinking, the development of thinking. Key Words:JAVA; Relieve pressure; Push box; Recreation and entertainment

推箱子游戏详细设计报告

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

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

基于单片机设计推箱子游戏,protues仿真解析

南京邮电大学 毕业论文 题目:基于单片机设计推箱子游戏专业: 学生姓名: 班级学号: 指导教师: 指导单位:南京邮电大学通信与信息工程学院 日期:年月日至年月日

摘要 本论文主要介绍了基于AT89C52单片机推箱子游戏设计的游戏规则、硬件结构、软件代码的编写及工作原理,基于T6963C内核的液晶模块PG160128A液晶模块的介绍,在仿真软件上模拟出推箱子游戏。本系统是以单片机为其控制核心,以有源晶振构成的电路作为时钟信号,通过方向键的选择向单片机控制系统发出人物移动控制命令,控制系统接收命令后做出一系列必要的判断后,控制人物及箱子的移动。 论文分为两大块:一块为游戏的硬件电路组成部分,一块为软件程序设计部分。在硬件电路里主要包括有源晶振部分、方向控制部分及液晶显示部分等与单片机的接线设计;软件编程方面主要是子程序和主程序的编写,包括:初始化代码、液晶驱动代码、方向键代码、过关判断代码等等。 关键词:单片机;推箱子;PG160128A;T6963C内核

ABSTRACT This paper mainly introduces the based on single chip microcomputer AT89C52 tuixiangzi game design rules of the game, hardware structure, software code compiling, and working principle of LCD module of T6963C kernel based PG160128A LCD module, simulate the tuixiangzi game on the simulation diagram.This system is based on single chip microcomputer as its control core, active crystals constitute the circuit as the clock signal, through the choice of the direction key issued a person move control command to the single-chip microcomputer control system, control system after the judgements made after a series of necessary receive commands, to control the movement of figures and boxes. Paper is divided into two areas: a piece of hardware circuit part of the game, a piece of software design part.In the hardware circuit mainly includes active crystals, direction control part and part, such as liquid crystal display (LCD) and the connection design of single chip microcomputer;Software programming are mainly subroutines and main program of the writing, including: the initialization code, LCD driver code, the direction key code, pass judgment and so on. Key words: single chip microcomputer; pushing; PG160128A;T6963C kernel

推箱子游戏设计与实现

四川师范大学成都学院本科毕业设计推箱子游戏设计与实现 学生姓名张起明 学号2012101087 所在系通信工程系 专业名称通信工程 班级2012级宽带一班 指导教师陆园 四川师范大学成都学院 二○一六年五月

推箱子游戏的设计与实现 前言 于如今竞争激烈的快节奏时代中,人们的生活水平越来越繁忙,因为此,愈来愈多的人感到内心的空虚与压力带来的烦躁,这些也带给人们许许多多心理上和身体上的困惑.所以如何缓解当代人们的生活压力,已成为人们的共同夙愿。这一次的这个基于JAVA 的推箱子小游戏正是使用JAVA语言并且结合于Eclipses编译器,开发出了这样一款适合用于休闲的小游戏,在放松的同时也给忙碌的人们打开另一个思考的空间.这一款基于JAVA开发的推箱子主要分为初始化、画图、移动小人、移动箱子以及功能控制共五个模块。玩家可以通过控制游戏中的小人的移动来实现推动箱子,同时需要避开障碍物和死角方能将箱子推放到正确位置从而过关。每关的难易程度各不相同,不仅可以供人们用以娱乐,还有助于开发智力,提高人们思考问题与想象的能力,改善人们的思维方式,拓展思维。 关键词:JAVA 解压推箱子游戏

Abstract In today's competitive era of fast-paced, people ’s living level is becoming more and more busy, because of this, an increasing number of people have felt irritability of emptiness and pressure, these also bring people many psychological and physical puzzles。 So how to alleviate the pressure of contemporary life, has become the common aspiration of the people。 This time the based on Java Sokoban game is using the Java language and the combination of the eclipses of the compiler developed such a suitable for leisure game, in a relaxed but also to the busy people to open another thinking space。 This is based on the JAVA development of the push box is divided into initialization, drawing, moving people, moving boxes and a total of five functional control module. Players can control the game through the villain’s mobile to achieve the promotion of the box, while the need to avoid obstacles and dead side to push the box to the correct position so that. Each level of difficulty is different, not only can be used for people to entertain, but also helps to develop intelligence,improve people’s ability to think about problems and imagination, improve people's way of thinking, expand thinking。 Key Words:JAVA Relieve pressure Push box Game

推箱子游戏-需求分析教学

推箱子 需求分析报告 报告名称:推箱子需求分析报告组长座号: 组长姓名:

一、引言 1.1.项目名称 推箱子游戏 1.2.项目目标 从推箱子游戏的需求及现有技术等方面研究该推箱子游戏项目的可行性,嵌入大型游戏中 1.3.项目背景 (1)开发软件的名称:JAVA (2)项目提出者:福建工程学院 (3)项目开发者:福建工程学院开发小组 (4)本游戏可作为大型游戏系统中的一部分 1.4.参考资料 清华大学出版社《软件工程》 二、需求分析 2.1.项目概述 经典的推箱子是一个来自日本的古老游戏,目的是在训练玩家的逻辑思考能力。在一个狭小的仓库中,要求把木箱放在指定的位置,稍不小心就会出现箱子无法移动或则通道被堵住的情况,所以需要巧妙地利用有限的空间和通道,合理安排移动的次序和未知,才能顺利地完成任务

2.2.系统的功能描述 2.2.1能够显示主菜单和功能 游戏需要提供主菜单让玩家进行游戏设置,同时能能够把地图文件中的信息转换成为图像显示到祝游戏界面上 2.2.2能够实现键盘操作功能 能够接收到键盘输入的方向键信息,并根据不同的方向键把游戏任务移动到响应的位置,例如,当玩家单击方向键“上”时,如果向上的未知是可移动的,那么就当把游戏人物向上移动一个方格 2.2.3能够把放置到位置上的箱子进行变色显示 当玩家把箱子推到指定位置的格子时,需要把这个箱子进行变色。这样就能明确地显示出该箱子已经放置到指定位置上 2.2.4支持游戏扩展功能 玩家可以自己扩展原游戏地图文件,从而生成新的游戏地图 2.2.5游戏胜负判断功能 在游戏中,当玩家把全部的箱子都推到箱子放置点时,玩家胜利通过当前游戏关口,进行下一关口的游戏,如果玩家无法将指定的箱子全部推到放置点时,玩家失败。玩家可以选择重新进行当前关口的游戏,还是退出游戏 2.2.6支持关口选择功能 玩家在哟西中可自行选择需要挑战的关口 2.2.7游戏提供支持背景音乐功能 通过主菜单,在游戏开始后,可以选择播放或者禁止播放背景音

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)初始化模块。该模块包括屏幕初始化和游戏第一关到第最后一关的初始化。屏幕初始化用于输出欢迎信息和操 作提示,游戏每一关的初始化是构建每一关的关卡。

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() 清空缓存 游戏过程设计 游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行走的

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语言实训

实训四:游戏篇 4.1推箱子游戏 【实训内容】 (1)功能要求 经典的推箱子是一个来自日本的古老游戏,目的是在训练人的逻辑思考能力。在一个狭小的仓库中,要求把木箱从开始位置推放到指定的位置。在仓库有障碍物,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推,不能拉,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。本游戏一共4关,由易到难,每一关都有初化、按键处理、重置及退出功能。(1)初始化包括屏幕初始化和每一关卡的初始化,屏幕被初始化宽80像素,高25像素。(2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,从而推动箱子,以把箱子推到指定的目的地为过关。(3)每一关都可以重置,按空格键可以重置当前关。(4)按Esc键可以在任何时候退出游戏。 (2)技术要求 定义二维数组char status[20][20],用于记录屏幕一各点的状态。其中,“0”表示什么都没有,“b”表示箱子,“w”表示目的地,“i”表示箱子在目的地。首先将屏幕20*20范围内的状态初始化为0,然后根据具体情况,在画箱子时,将箱子所在点的状态改为“b”;在画墙壁时,将墙壁所在点的状态改为“w”;在画目的地时,将目的地所在点的状态改为“m”;当箱子被推到目的地时,箱子所在点的状态改为“i”,如果每一关中所有目的地的状态都为“i”,则说明该关已完成。 定义字符指针char far *printScreen=(char far*)0xB8000000,用于在屏幕上输出字符。彩色显示器的字符缓冲区首地址为0xB8000000,每一个字符占2个字节(第一个字节为ASCII值,第二个字节为颜色值),字符模式下屏幕宽80像素,高25像素,一屏可以写80*25个字符。 定义结构体typedef struct winer{int x; int y; struct winer *p; }winer; 定义结构体struct winer用于判断每一关是否已完成。其中x用于存放目的地的横坐标,y用于存放目的地的纵坐标。如果所有表示目的地坐标对应的状态都为“i”,即箱子在目的地,则表示已经过关,可以进入下一关。该结构体的初始化在每一关的初始化时进行。 【概要设计】本程序采用模块化设计,包括5个模块,分别是初始化模块、画图模块、 移动箱子模块、移动小人模块和功能控制模块。各个模块的功能描述如下: (1)初始化模块。该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。 (2)画图模块。该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。 (3)移动箱子模块。该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。 (4)移动小人模块。该模块用于控制小人移动,从而推动箱子到目的地。 (5)功能控制模块。该模块是几个功能函数的集合,包括屏幕输出功能、指定位置

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