基于Android的推箱子游戏设计

基于Android的推箱子游戏设计
基于Android的推箱子游戏设计

摘要

推箱子游戏是一款古老的游戏,其设计目的是训练人的逻辑思维能力。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子游戏,这其中也包括很多手机版本的实现。随着Android手机的迅猛发展,Android应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。本论文着眼于Android平台的应用,开发一款可用的手机游戏程序——推箱子。

本文首先介绍基于Android平台应用软件开发的背景,阐述了Android系统的现状与发展情况;接着介绍Android平台的搭建;然后通过一个较完整的软件开发周期,采用Java语言及Eclipse开发工具,从需求分析到游戏设计、实现、调试,最终实现了推箱子游戏。并经过严格的测试,可以在模拟器上正常使用。

关键词:Android;Java;推箱子游戏

ABSTRACT

Push Box Game is one of the ancient games, the design objective of the game is to train people's logical thinking ability. Along with the development of computer games, a lot of programming enthusiasts based on the idea of the game developed a variety of versions, all types of Push Box Game, which also include many mobile phone version's realization. With the implementation of Android technology on mobile equipment, increment of capital on communication service exhibits its force on people’s everyday life, providing them ever fast information just in hand. This dissertation focuses on implementation of Android and has developed a game suite run on mobile phones—Push Box Game.

At first, This paper will introduce background of application development which base on Android platform, and describe the status and development of Android system; then introduce the way how to set up the environment of Android, and then via a more complete software development cycle, using the language of Java and the eclipse development tools, from demand analysis to the game design, implementation, commissioning, eventually achieve a Push Box Game. The game has been tested rigorously, so it can be used safely.

Key words:Android;Java;Push Box Game

目录

第一章绪论 (1)

1.1 课题研究背景 (1)

1.2 课题来源及意义 (1)

1.3 国内外发展现状 (1)

1.4 本文研究主要内容 (1)

1.5 本文章节安排 (2)

第二章 Android平台搭建 (3)

2.1 工具介绍 (3)

2.1.1 Android简介 (3)

2.1.2 Java简介 (4)

2.2 开发环境 (5)

2.3 开发环境变量配置 (5)

2.3.1 JDK配置 (5)

2.3.2 SDK配置 (7)

2.3.3 Eclipse配置 (8)

2.4 应用环境 (8)

第三章游戏设计 (9)

3.1 游戏需求分析 (9)

3.2 游戏设计 (9)

3.2.1 系统设计思想 (9)

3.2.2 游戏总体设计 (9)

3.2.3 系统功能模块设计 (10)

3.2.4 游戏的类框架设计 (10)

3.2.5 算法的设计 (10)

第四章游戏的实现 (12)

4.1 欢迎界面的实现 (12)

4.2 菜单界面的实现 (13)

4.2.1 开始游戏 (13)

4.2.2 声音控制 (14)

4.2.3 游戏说明 (14)

4.2.4 退出游戏 (15)

4.3 游戏界面的实现 (15)

4.3.1 地图类的实现 (16)

4.3.2 角色类的实现 (17)

4.3.3 键盘监听线程的实现 (18)

4.3.4 角色移动线程的实现 (18)

第五章软件测试 (19)

5.1 测试方案及其执行 (19)

5.2 测试步骤 (19)

5.3 本章小结 (20)

第六章总结 (21)

参考文献 (22)

外文资料

中文译文

致谢

第一章绪论

1.1 课题研究背景

在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展。游戏平台经过从游戏机到电视游戏,然后又到pc游戏,手机游戏,中间经历了很多的技术更新和变革。但随着新技术的发展和我们生活水平的提高,手机开始逐渐普及,因为手机是非常小巧便捷,所以它成为我们日常生活中必备通讯工具。基于手机平台的游戏也就拥有了巨大的市场空间,随着3G的开通和应用,手机游戏必然会迎来新的一轮游戏热潮[1]!

1.2 课题来源及意义

推箱子游戏是一款古老的游戏,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子游戏。这其中也包括很多手机版本的实现,随着Android手机终端的逐渐热销,Android也引起众多手机应用程序开发商的关注,由于Android基于Linux内核且具有开源、免费的特性,它迅速得到广大爱好者以及许多厂商的支持,基于Android所开发的手机游戏拥有巨大的潜力已成为行业共识。本文主要研究在Android手机上开发一款推箱子游戏[2]。

1.3 国内外发展现状

Android是由Google为首的OHA(Open Handset Alliance)推出的一款开放的嵌入式操作系统平台。从2008年推出到现在Android正以前所未有的速度聚集着来自世界各地的开发者,越来越多的创意被应用到Android应用程序的开发中,大有席卷整个手机产业的趋势。

Android系统,是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android 的核心系统服务依赖于Linux内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。由于Android带有相当浓郁的Linux血统这也就意味着他拥有开源Linux的众多优点:安全、运算速度快、易于开发等等[3]。正因为Android具有上述的优点,所以它在国内具有相当强劲的竞争优势。青年网络

的主要负责人潘长华先生说到:Android作为一款十分优秀的移动开发平台十分适合国内的开发环境。尤其是中小企业开发团队低成本以及源代码的分享可以为企业节省大量资金,这对于中小企业来说无疑是最大的诱惑。

同时一个资深的Android开发爱好者曾说过:如果你是个人开发爱好者,那么Android就是Google为你量身打造的,开源才是王道,Android才是未来的主宰[4]。

伴随着Google Android操作系统的盛行,国内外的开发团队也逐渐的壮大起来了,基于Android SDK的系统开发,基于Android应用的开发等已逐渐倍受大家关注,而手机游戏开发历来是移动开发中分量最重的部分,面对如此火爆的Android市场自然也不甘示弱,由于Android的应用层开发是基于Java的开发,所以必有其可以快速移植J2ME开发的游戏的优势,但是移植的游戏必定也不能发挥Android操作系统独特的特性。所以目前基于Android游戏开发的市场还是不够成熟的,面对这种情况,在了解Android SDK基础上,本课题开发的就是一款完全适应于Android操作系统的推箱子益智游戏。

1.4 本文研究主要内容

本游戏分三个模块设计与实现:欢迎动画界面的设计与实现,菜单界面的设计与实现,游戏界面的设计与实现。游戏运行后首先进入欢迎动画界面,动画结束后,进入菜单界面,在菜单界面上有四种菜单供用户选择。游戏的过程中需要在适当的地方添加上音效,并且可以对音效进行开与关的设置。还需要为游戏添加说明界面,简单介绍游戏的基本功能及玩法。游戏需要设计适当的难度,使玩家能够经过努力完成游戏。

1.5 本文章节安排

第一章是绪论,阐述了本论文的选题背景、来源和意义,以及国内外发展现状,并对本文研究的主要内容进行简述。

第二章介绍Android平台的搭建。

第三章介绍开发此项目所做的需求分析和游戏设计。

第四章介绍游戏实现的功能。

第五章介绍游戏的测试。

第六章对本次毕业设计的总结。

第二章 Android平台搭建

本章主要介绍项目需要的开发工具,及如何构建Android开发环境,包括JDK、Android SDK、Eclipse的配置。

2.1 工具介绍

2.1.1 Android简介

Android是基于Linux内核的操作系统,Android系统具有开放性、应用程序无界限、应用程序是在平等的条件创建的、应用程序可以轻松地嵌入网络和应用程序可以并行运行等特点。Android的系统架构共分为4层,由高到低分别是应用层、应用框架层、系统运行库层和linux内核层。

Android应用程序是由四个模块构造:Activity,Intent,Content Provider,Service[5]。当然也不是每个Android应用程序都必须由这四部分组成,可以根据开发者的需求进行组合。但任何一个应用程序模块都必须在AndroidMainfest.xml 文件中声明使用到的这些模块。

Activity是最基本的模块。我们称之为“活动”。简单理解,Activity代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如,监听系统事件(按键事件、触摸屏事件等),为用户显示指定的View,启动其他Activity 等。所有应用的Activity都继承于Android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法来实现各种功能,这种设计在其他领域也较为常见。

Android用Intent这个特殊类实现在Activity与Activity之间的切换。Intent 类用于描述应用的功能。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有:MAIN、VIEW、PICK、EDIT等,而动作对应的数据则以URI的形式表示[6]。

数据是应用的核心。在Android中,默认使用SQLite作为系统数据库。但是在Android中,使用方法有点小小的不一样。在Android中,每一个应用都运行在各自的进程中,当一个应用需要访问其他应用的数据时,也就是数据需要在不同的虚拟机之间传递,这样的情况操作起来可能有些困难(正常情况下,你不能读取其他应用的db文件),ContentProvider正是用来解决在不同的应用包之间共享数据的工具[7]。

Service即“服务”的意思,既然是服务,那么Service将是一个生命周期长而且没有用户界面的程序。如一个正在从播放列表中播放歌曲的媒体播放器,在这个媒体播放器应用中,应该会有多个activity,让使用者可以选择歌曲并播放

歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者会认为在导航到其他屏幕时音乐应该还在播放。在这个例子中,媒体播放器这个activity会使用Context.startService( )来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service一直执行,直到这个service运行结束。另外,我们还可以通过使用Context.bindService( )方法连接到一个service上(如果这个service当前还没有处于启动状态,则将启动它)。当连接到一个service之后,还可用service提供的接口与它进行通讯。以媒体播放器为例,我们还可以执行暂停、重播等操作[8]。

2.1.2 Java简介

Java是一种简单的、面向对象的、分布式的、安全的、可移植的、性能优异的多线程语言。它以其强安全性、平台无关性、硬件结构无关性、语言简洁、面向对象的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言[9]。

Java具有如下特点:

●简单性

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需知道一些概念就能够编出一些应用程序。Java程序相对较小,其代码能够在小机器,例如手机上运行,这应该是大家经常可以看到的。

●面向对象语言

Java的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量和相应的方法,实现了模块化和信息的隐藏;而类则是提供了对象的原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。

●健壮性

Java语言被病毒感染和破坏得最少。大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,而Java正好放弃了难学和危险的指针功能,从而使Java更安全。

●多线程

设计Java的目标之一,就是为了满足人们对创建交互式网上程序的需要。多线程就是为实现这个目标而设计出来的,它使用Java编写出来的应用程序可以同时执行多个任务。多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。

自动内存管理

可以说自动内存管理是Java健壮性的体现,内存管理是很多种应用程序内的关键因素。在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库内,一般的设计就是把数据读入内存中的某种集合内,对这些数据执行某些操作,之后把数据写入数据库。在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或者被删除后再建。这种操作可能执行很多次,在像C++这些不提供自动垃圾搜集的语言中,手工清空或删除集合数据结构逻辑上的一点点缺陷就可能导致大量的内存被错误地收回或丢失。Java的自动内存管理正好解决这一点,它使程序员不用再为内存管理写大量的代码[10]。

2.2 开发环境

JDK1.6

Eclipse3.5

AndroidSDK10.0

Eclipse插件ADT10.0

2.3 开发环境变量配置

2.3.1 JDK配置

右键点击计算机->属性->高级系统设置,点击下面的环境变量,在下面的“系统变量”处选择新建在变量名处输入JA V A_HOME,并将JDK所在地址填入变量值中,确定即可,如图2-1所示。

图2-1 JDK配置1

确定后就会返回环境变量界面,再新建一个系统变量名为classpath,变量值为%JA V A_HOME%/lib/rt.jar;%JA V A_HOME%/lib/tools.jar,确定即可,如图2-2所示。

图2-2 JDK配置2

确定后仍会返回环境变量界面,然后再找到Path的变量,双击或者点击编辑,在变量名最前面加上%JA V A_HOME%/bin,确定即可,如图2-3所示。

图2-3 JDK配置3

然后开始—运行cmd,输入java或者javac看看有没有效果,如果出现一大堆其它的东西,那就好了,如果出现类似xxx不是内部或者外部命令之类的,那就说明你的设置有问题,看看哪里出现问题然后加以改正。

2.3.2 SDK配置

新建一个系统变量Android,并将SDK文件夹中的platform-tools和tools的地址填入变量值中,以分号来隔开,确定即可,如图2-4所示。

图2-4 SDK配置1

然后找到Path,在Path最后加上;%Android%,如图2-5所示。

图2-5 SDK配置2

然后测试环境变量是否配置成功,在cmd中输入adb出现一堆东西,说明环境变量配置成功。

2.3.3 Eclipse配置

首先需要添加Eclipse插件ADT,在打开Eclipse后,点击菜单栏的Help—>Install New Software...然后点击Add会出来一个Add Site的窗口,这里Name输入ADT,Location中输入ADT在电脑中的地址,然后就等待连接了,连接上将Developer Tools全都选中accept,finish就可以了,完成后会提示重启Eclipse来加载插件,重启,就可以用了。

还需要将Android SDK插入到Eclipse中,打开Eclipse后,点击菜单栏的Window—>Preferences然后点击Android,在SDK Location输入SDK存放的位置,点击Apply则会显示现有的Android的模拟器版本,如图2-6所示。

图2-6 Eclipse配置

2.4 应用环境

基于Android的推箱子游戏适用于Android2.1及以上版本。

第三章游戏设计

3.1 游戏需求分析

玩家是通过对小人的移动操作来控制推动箱子的,并且玩家需要避过障碍物以及死角,才能将其推放到指定位置从而达到过关的目的。如果玩家将箱子推入死角导致箱子无法移动或不能移动到指定位置则闯关失败,可以通过退出操作进入菜单界面来重新挑战游戏。

游戏功能需求如下所示:

游戏界面需求:简洁美观的用户界面,可以带给用户自然清晰的画面。

游戏情节需求:本游戏为轻量级的益智游戏,因此不存在很复杂的情节。这方面主要要做的工作是设计游戏各关仓库的形状、大小、可通过区域,以及各关中箱子的初始位置与目的地,移动中的箱子与终点上的箱子要所有区别,因此需要两不同的图片以示区别。

键盘处理事件:控制小人与箱子的移动,通过键盘方向键(上、下、左、右键)对小人进行上、下、左、右的移动,并且能够推动箱子。

显示需求:当所有箱子都到达指定位置后即可过关,若进入死角则无法通过过关卡,需要进行退出操作从菜单界面来重新挑战游戏。

3.2 游戏设计

3.2.1 系统设计思想

本次设计主要是设计一个能够在Android手机上运行的推箱子游戏。根据一般玩手机游戏的流程,玩家一般是先进入一个欢迎动画界面,等待动画结束或者直接点击画面后进入游戏的菜单界面,在菜单界面,玩家可以进行开始游戏、声音开关、游戏说明、退出游戏操作,从菜单界面点击开始游戏进入游戏界面开始游戏,在游戏界面里,玩家还可以退到菜单界面,本游戏软件也将遵循该流程。

3.2.2 游戏总体设计

游戏界面

欢迎动画界面菜单界面游戏开始界面

开始游戏声音控制游戏说明退出游戏退出

图3-1 游戏总体设计

3.2.3 系统功能模块设计

本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和音乐模块,各个模块的功能描述如下:

●初始化模块。该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用

于显示欢迎动画,游戏第一关的初始化是构建每一关的关卡。

●画图模块。该模块主要是被其他模块调用,用于画墙、在空地画箱子、在目

的地画箱子、画小人和画目的地。

●移动箱子模块。该模块用于移动箱子,包括目的地之间、空地之间和目的地

与空地之间的箱子移动。

●移动小人模块。该模块用于控制小人的移动,从而推动箱子到达目的地。

●音乐模块。该模块为游戏提供背景音乐、小人推箱子的声音和游戏胜利的声

音。

3.2.4 游戏的类框架设计

表3-1 游戏的类框架

公共类欢迎界面相关类菜单界面相关类游戏界面相关类

PushBoxActivity

WelcomeView MenuView

GameView

MySprite WelcomeViewGoThread MenuViewGoThread

MapList

BoxThread

KeyThread WelcomeViewDrawThread MenuViewDrawThread

SpriteThread SpriteMoveThread GameViewDrawThread

3.2.5 算法的设计

该游戏没有涉及到复杂的算法设计,关键在于对地图矩阵的操作。游戏中用一个MapList类操作地图,其中有两个三维数组记录游戏地图信息,一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层,三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入二维矩阵就可以了[11]。

游戏过程中,最为主要的地方在于对地图矩阵,以及小人状态信息(包括位置、行走状态等)的维护,小人每行走一步,就更新一次地图信息和小人状态信息。另外一个比较重要的地方是游戏状态的保存方面[12]。为保存小人信息,特别开设了一个MySprite 类,该类主要作用就是保存玩家每一步的游戏状态,便于撤销。

逻辑判断过程中,需要对地图进行维护,主要是通过小人的移动位置进行更新的。

● 小人每次移动时,四周的物体如下图:

图3-2 主角四周物体

● 当小人是在移动箱子时,箱子四周有以下几种物体:

图3-3 箱子四周物体 小人 地面 移动到合适位置的箱子 未在合适位置的箱子

墙壁 箱子应摆放到的位置

箱子

箱子应该摆放到的位置

箱子、墙壁

地面 1、已摆放到合适位置的箱子 2、未摆放到合适位置的箱子

推箱子游戏报告书

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

相关文档
最新文档