推箱子游戏设计与实现.doc
《推箱子游戏设计与实现.doc》由会员分享,可在线阅读,更多相关《推箱子游戏设计与实现.doc(31页珍藏版)》请在冰豆网上搜索。
![推箱子游戏设计与实现.doc](https://file1.bdocx.com/fileroot1/2022-10/7/ea725d5b-79fe-4f8c-a3fd-b88a6dc51622/ea725d5b-79fe-4f8c-a3fd-b88a6dc516221.gif)
毕业设计(论文)
课题名称基于swing开发的推箱子游戏
学生姓名吕季干
学号0840819035
系、年级专业理学与信息科学系2008级信息与计算科学
指导教师戴亚滨
职称讲师
2012年5月25日
邵阳学院毕业设计(论文)
摘要
在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为娱乐方式。
但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件。
推箱子游戏是一款很有趣味的游戏,它由英雄、魔王、笼子、墙和地板组成,然后存储在一个数组中,用户根据键盘的向上、向左、向右和向下键操作。
其开发过程有一定的技巧和方法,其中涉及到二维数组、键盘操作以及图形化函数等方面的知识。
此次设计是在MicrosoftWindows7系统下,以java为开发语言,在eclipse平台上进行游戏的设计与实践。
关键词:
游戏设计、数组、开发语言
Abstract
Inthecurrenteraofrapiddevelopmentofelectronicinformation,electronicgameshasbeendeeplyPeople'sDailylife,beenjoyedbyyoungandoldformofentertainment.Butthegamedesigncombinedwithtomorrow'stechnology,inaproductintegrationofcomplexdesign,art,soundandsoftware,sonotwell-known.
Pushedboxgameisaveryinterestinggame,itachievedbyHero,Devil,Cage,FloorandWall,andthenstoredinanarray,usersaccordingtothekeyboardfourthedirectionup,left,rightanddownoperationtocontrol.Pushedboxgamedevelopmentprocesshascertainskillsandmethods,whichinvolvesatwodimensionalarray,keyboardandgraphicalfunctionandotheraspects.ThisdesignisinMicrosoftWindows7system,withJAVAfordevelopmentoflanguage,Ecpliseplatformgamedesignandpractice.
Keywords:
Gamedesign,array,Developmentlanguage
II
目录
摘要 I
Abstract II
前言 1
1可行性分析 2
1.1要求 2
1.2目标 2
2项目开发计划的任务分解 2
3概要设计 2
3.1游戏界面 2
3.2游戏四种基本图形 2
3.3英雄走向图形 3
3.4箭头图片 3
4需求规格说明 3
4.1运行环境 3
4.2功能需求 3
4.3运行需求 4
5详细设计 4
5.1系统模块 4
5.2任务执行流程 5
5.3小人移动流程 5
6界面实现 5
6.1界面区 5
6.2游戏区 8
6.3图片加载区 11
6.4英雄变化区 11
6.5地图绘画区 19
7结束语 23
参考文献 24
附录 25
致谢 26
2
邵阳学院毕业设计(论文)
前言
随着社会的发展,人类的生产、生活越来越离不开信息。
谁拥有了更多更有效的信息,谁就将在竞争中处于有利的地位。
信息产业正在成为一个国家的支柱。
只有拥有了先进的技术和知识,才能有效地管理好浩如烟海的信息,并从中提取出对自己有用的信息来加以利用。
推箱子游戏是目前比较流行的游戏之一,很多操作系统或者流行软件都会带有这种游戏。
它既能锻炼思维的严密性,又有很多乐趣。
我个人也比较喜欢玩这个游戏,因此,我就借这个机会将这个推箱子游戏用java语言实现了出来,其中的界面使用了swing中的工具,当然,我也借鉴了前人的一些技巧经验。
然而Swing是什么?
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
通过本次游戏的设计,综合自己在校期间所学的理论知识,设计开发推箱子游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对java,swing基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。
由于时间仓促和本人水平有限,此游戏的制作显得有些粗糙,我以后将会再接再厉。
1可行性分析
1.1要求
在eclipse的开发环境下,利用所学java语言相关知识,开发一个推箱子小游戏,实现游戏界面规划、英雄走动、魔王动向等功能。
建立一个javaproject工程,实现游戏的编程设计。
1.2目标
可包括:
a.人力与设备费用的节省:
单独开发
b.界面友好美观:
自绘技术实现
c.游戏的可操作性,通过键盘的方向键实现
d.游戏界面的游戏区
e.等等
2项目开发计划的任务分解
a.建立一个javaproject工程
b.建立一个Hero包
c.画出游戏区域
d.调整游戏窗口大小
e.加载游戏相关图片
f.计算游戏结果,判断是否进入下一关
3概要设计
3.1游戏界面
背景图片如下:
3.2游戏四种基本图形
在游戏中相对应的图片分别为:
3.3英雄走向图形
图片如下:
3.4箭头图片
3.5游戏操作
操作如下:
方向键左:
左移
方向键右:
右移
方向键上:
上移
方向键下:
下移
箱子只可以推,不可以拉,而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。
4需求规格说明
4.1运行环境
MicrosoftWindowsXPMicrosoftWindows7Eclipse
4.2功能需求
a.图形左右移动
b.图形上下移动
c.实现开始,结束按钮的功能
d.使游戏窗口最大化失效
4.3运行需求
硬件和软件接口:
1.cpu:
1.6GHz以上
2.内存:
256M以上
3.操纵系统:
MicorsoftWindowsXPMicrosoftWindows7
4.运行软件:
Eclipse
5详细设计
5.1系统模块
本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块。
各个模块的功能描述如下:
(1)初始化模块。
该模块包括屏幕初始化和游戏第一关的初始化。
屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。
(2)画图模块。
该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。
(3)移动箱子模块。
该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。
(4)移动小人模块。
该模块用于控制小人移动,从而推动箱子到目的地。
(5)功能控制模块。
该模块是几个功能函数的集合,包括屏幕输出功能和指定位置状态判断功能。
5.2任务执行流程
游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的按退出按钮进行退出。
如果游戏无成功希望,可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关。
5.3小人移动流程
小人移动的方向有4个,moving()函数(处理小人移动的函数)对这4个方向移动的处理都一致,只是调用函数时的参数有所不同。
首先判断小人移动的方向,然后根据小人所处世的当前状态、下一步状态或者下下一步状态进行适当的处理。
6界面实现
6.1界面区
这个区域主要负责窗体的大小,背景,名称以及窗体不可改变等元素。
a.界面大小:
this.setSize(540+4,440+62);
b.界面背景:
this.setBackground(Color.BLACK);
c.界面大小不可改变:
this.setResizable(false);//不能改变窗体大小
d.界面名称:
this.setTitle("英雄传说II---吕季干");
e.界面的实现如下:
f.界面区总代码:
importjava.awt.Toolkit;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjavax.swing.JFrame;
publicclassGameFrameextendsJFrame{
privateGamePanelgp=newGamePanel();
privateImageUtiliu=newImageUtil();//加载图片的工具
publicGameFrame(){
init();
}
publicvoidinit(){
this.add(gp);//加入画纸
this.setSize(540+4,440+62);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(
iu.getImage("cursor.png"),newPoint(26,29),"aaa"));
this.setResizable(false);//不能改变窗体大小
this.setResizable(false);
this.setTitle("英雄传说II---吕季干");
//加一个监听器,保镖,匿名类:
匿名类的格式new接口名(){接口中的方法的实现}
this.add