推箱子实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛大学软件技术学院

游戏制作实践实训题目名称推箱子游戏

姓名丁帅帅

专业数字媒体艺术

班级 3班

指导教师解新峰

2014 年 1 月 16 日

目录

1 引言 (3)

1.1选题目的 (3)

1.2项目目标 (3)

2推箱子系统概述 (4)

2.1系统总体设计 (4)

2.2系统功能模块规划 (4)

2.3系统功能结构图 (4)

3推箱子系统的详细设计 (5)

3.1程序中自定义类说明 (5)

3.2程序中主要方法说明 (5)

3.2.1界面框架与按钮设计 (5)

3.2.2地图的绘制形成 (5)

3.2.3推箱子游戏的游戏性 (6)

3.2.4小人与箱子移动的算法 (6)

3.2.5栈的应用 (6)

4 推箱子系统的实现和运行 (7)

4.1运行结果 (7)

小结 (9)

参考文献 (9)

1 引言

1.1选题目的

随着科学技术的发展,人们的生活水平越来越繁忙,在充满竞争的社会条件下,压力往往带给人们很多烦恼,所以合理的解压方式称为现代人的共同心愿。为了给大家提供一个合理的解压平台, 我们在本次课程设计中为大家开发了一款适合休闲娱乐的小游戏, 本次课程设计是配合JAVA 程序设计课程,深入学习掌握JAVA 语言,熟练运用Java 工具对系统的编写。通过课程设计各个项目的综合训练,培养学生实际分析问题,编程和动手能力,提高学生的综合素质。

1.2项目目标

本设计要求采用java语言编程,java中的类和封装特性,实现游戏中控制游戏中的人物行走推移箱子,选关,选音乐等游戏的基本功能。对该游戏系统功能模块进行详细分析,写出详细设计说明文档,编写程序代码。调试程序使其能正确运行。

2推箱子系统概述

2.1系统总体设计

在此游戏中本着娱乐为目的,游戏者不仅可以在玩游戏还可以享受音乐,游戏界面简单,操作容易,在玩游戏的同时还可以锻炼大家的反应速度及灵敏程度,在游戏中设置关数,级别由低到高,一关比一关难,提高大家的兴趣,玩家可以自由的选关,并设置了分数的存储系统。系统中又增加了音乐的设置可以让玩家享受音乐。通过对小人移动箱子是否到达墙边进行判断决定胜负及是否可以进入下一关。

2.2系统功能模块规划

在该系统中总共划分了五个模块

(1)初始化模块,对游戏界面进行初始化操作,对各个按钮的功能进行操作使之当动作发生时有一定的反应及相应。

(2)画图模块,主要是对地图的绘制进行画图的操作,在此游戏中不同的数字代表不同的含义。

(3)移动箱子模块,在推箱子游戏中最主要的模块,用户可以移动箱子到界面中的各个地方,以完成游戏设定的任务。

(4)移动小人模块,同过对小人的操作使之小人能够操作木块到各个位置。(5)功能控制模块,通过对此功能的设置,可以对游戏的功能进行设置,可以设置背景音乐,及通过的关数进行一些必要的设定。

2.3系统功能结构图

推箱子游戏主要分为初始化模块, 画图模块, 移动箱子模块, 移动小人模块, 功能控制模块.推箱子游戏功能模块图(如图2.3 所示)。

图 2.3

3推箱子系统的详细设计

3.1程序中自定义类说明

(1)重来:重新开始当前关;

(2)悔一步:返回上一移动状态(可以连续返回多步) ;

(3)第一关:游戏系统默认开始关为第一关,此按钮可以将关从其它关跳跃到第一关;(4)上一关:返回到当前关的上一关;

(5)下一关:返回到当前关的下一关;

(6)最终关:跳跃到最后一关,即第五十关;

(7)选关:选择想要玩的关;

(8)音乐关(开):默认为开,点击自动关闭音乐和开启音乐;

(9)更换音乐:从不同的音乐中选取适合玩家的音乐。

3.2程序中主要方法说明

3.2.1界面框架与按钮设计

界面设计中包括了,所有你所直观见到的图形界面,窗体的大小,下拉菜单中的功能菜单。使得玩家能够很直观的见到所有游戏中的功能,界面中有菜单,包括:“选项”“设置音乐”“帮助”,按钮包括:“重来”“悔一步”“第一关”“上一关”“下一关”“最终关”“选关”“音乐”,部分代码如下:

Menu setmuc=new Menu("设置音乐");

setmuc.add(nor);

setmuc.add(qin);

setmuc.add(po);

音乐调用代码如下:

void mystop(){

midi.stop();

midi.close();

sign=false;

}

boolean isplay(){

return sign;

}

3.2.2地图的绘制形成

地图以二维数组的形式进行存储的,不同的数字有着不同的含义。在地图当中不同的数字代表不同的含义我当时是将 0~9 解读成为不同的图形与图像。

①"0"代表"地图以内的空位";

②"1"代表"地图中的边缘";

③"2"代表"地图以内的空位非点位;

④"3"代表"地图中的箱子";

⑤"4"代表"点位";

⑥"5"代表"小人面部朝下";

⑦"6"代表"小人面部朝左";

⑧"7"代表"小人面部朝右";

⑨"8"代表"小人面部朝上";

⑩"9"代表"箱子已经到达点位。

3.2.3推箱子游戏的游戏性

其主要功能是给用户一个友好的游戏界面,游戏中包括50关的地图,推箱子这个游戏的50个地图是事先完成的,将所有地图上面的信息以数字的形式储存在一个20*20 的二维数组当中;然后每一关都按照数组重新绘制地图,这样就拥有了50张地图。

3.2.4小人与箱子移动的算法

移动中包括正移动,与"悔一步"的负移动。正移动:小人上下左右的移动是,归结起来上下左右是一个判断的算法,判断都是通过判断小人前面是否是空位箱子或者是墙,如果没有,就移动;有的话,据判断箱子是否可以移动,最后讨论箱子推过的,小人移动,以及被遮挡住点的图形变化,重新绘制地图,算法判断完毕.传出数据记录在一个栈当中,以备“悔一步”使用。负移动:通过记录在栈中的数据判断,前一步是的移动方向以及移动使用过的算法,逆向将代码重新运行,同时绘制地图以达到前一步的状态。程序代码程序类如下:

void moveup();

void backup();

void movedown();

void backdown();

void moveleft();

void backleft();

void moveright();

void backright();

3.2.5栈的应用

推箱子中的数据存储是很重要的,不然无法进行“悔一步”的操作本系统。采用栈的存储方式来存储并控制人物,箱子的移动和地图的变换,悔一步操作让玩家有了反悔的一步,这节省玩家的时间,避免因错位导致重新开始。

相关文档
最新文档