J2ME打砖块答辩.docx

上传人:b****6 文档编号:7871210 上传时间:2023-05-12 格式:DOCX 页数:35 大小:886.05KB
下载 相关 举报
J2ME打砖块答辩.docx_第1页
第1页 / 共35页
J2ME打砖块答辩.docx_第2页
第2页 / 共35页
J2ME打砖块答辩.docx_第3页
第3页 / 共35页
J2ME打砖块答辩.docx_第4页
第4页 / 共35页
J2ME打砖块答辩.docx_第5页
第5页 / 共35页
J2ME打砖块答辩.docx_第6页
第6页 / 共35页
J2ME打砖块答辩.docx_第7页
第7页 / 共35页
J2ME打砖块答辩.docx_第8页
第8页 / 共35页
J2ME打砖块答辩.docx_第9页
第9页 / 共35页
J2ME打砖块答辩.docx_第10页
第10页 / 共35页
J2ME打砖块答辩.docx_第11页
第11页 / 共35页
J2ME打砖块答辩.docx_第12页
第12页 / 共35页
J2ME打砖块答辩.docx_第13页
第13页 / 共35页
J2ME打砖块答辩.docx_第14页
第14页 / 共35页
J2ME打砖块答辩.docx_第15页
第15页 / 共35页
J2ME打砖块答辩.docx_第16页
第16页 / 共35页
J2ME打砖块答辩.docx_第17页
第17页 / 共35页
J2ME打砖块答辩.docx_第18页
第18页 / 共35页
J2ME打砖块答辩.docx_第19页
第19页 / 共35页
J2ME打砖块答辩.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

J2ME打砖块答辩.docx

《J2ME打砖块答辩.docx》由会员分享,可在线阅读,更多相关《J2ME打砖块答辩.docx(35页珍藏版)》请在冰点文库上搜索。

J2ME打砖块答辩.docx

J2ME打砖块答辩

漳州职业技术学院

《手机游戏开发实战》

 

题目虫虫大作战

系别计算机工程系

专业及班级10嵌入式2班

学号及姓名1006003209林情、

1006003214陈家稳、

1006003223林清

指导老师庄景晖

日期2012年12月30日

摘要

随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,

包括医药,汽车工业,手机行业,游戏,等等地方。

Java游戏的开发为满足人们娱乐所需而设计。

本游戏为虫虫大作战游戏,是基于Java的图形用户界面而开发的,可以放松心情的小游戏。

游戏从系统操作简便、界面友好、灵活、上手即会的基本要求出发,完成整款游戏的开发。

游戏更设置了暂停、音乐功能,为用户带来愉悦的体验。

本课程设计报告介绍了游戏的构想,分析,开发,实现的过程。

论述了游戏的功能开发,设计构思。

给出了游戏的设计步骤,游戏系统关键的设计思想;在游戏系统实现章节给出了部分功能流程和相关代码。

 

关键词:

游戏,虫虫大作战

 

目录

摘要1

1、前言3

1.1背景3

1.2设计内容3

1.3任务分工4

2、游戏总体设计4

2.1游戏设计目标4

2.2游戏设计思路4

2.3系统总体架构4

2.4系统流程图5

3、打虫虫游戏系统的设计6

3.1系统需求分析6

3.2系统主要功能要求6

3.3游戏主要函数6

3.4功能实现截图10

4、小结11

5、参考文献12

6、附录:

游戏的代码实现和分析12

1、前言

1.1背景

J2ME(Java2MicroEdition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。

它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案。

游戏是全苹果最大的娱乐经济项目之一,已经被命名为“第九艺术”。

而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。

面对游戏产业如此巨大的市场空间,国内各大城市纷纷加大了这方面的人才培养,中国的游戏人才培训已随着游戏行业的总体发展开始逐步迈入了正轨。

虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。

在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。

所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。

1.2设计内容

虫虫大作战游戏是一种动作电子游戏的名称。

玩家操作一根萤幕上水平的弹板,让一颗不断弹来弹去的“苹果”在撞击作为过关目标消去的“虫子”的途中不会落到屏幕底下。

苹果碰到虫虫、弹板与底下以外的三边会反弹,落到底下会游戏结束,把虫子全部消去就可以破关。

游戏的功能包含以下内容:

基本的游戏操作

用户可以通过鼠标或者键盘来操作弹板,尽量让苹果不要掉下底下。

开始按钮和暂停按钮可以控制游戏的进行。

1.3任务分工

林情(Word文档及PPT的编写,游戏素材的搜集修改,协助调试程序);

陈家稳(设计游戏程序,优化游戏程序,游戏素材的修改);

林清(设计游戏主框架,调试程序)。

2、游戏总体设计

2.1游戏设计目标

掌握用无线Java应用技术即J2ME技术的软件系统设计方法,通过开发虫虫大作战这个小游戏,熟练使用J2ME开发平台,了解java各组件的使用。

此小游戏是为群众闲暇消遣之用,玩家在进入游戏后,按游戏规则用苹果打掉屏幕上方上的全部虫子,直至虫子全部消灭完毕,游戏通关。

2.2游戏设计思路

此程序设计是一个小游戏(弹虫虫)的实现,主要运用了用户图形界面,程序接口和基本函数绘制来实现,事件监听(包括鼠标事件,键盘事件,响应时间)也是这个程序的特色。

此程序用到了图片的引用,虫虫、弹板应用了函数绘制和图片引用,弹苹果的设计外且安全是应用函数绘制。

游戏还实现了播放声音。

总之,本游戏在用户界面的可操作性、游戏的美观度、结果方便都基本完善,有一定的可玩性。

2.3系统总体架构

图2-1系统总体架构

2.4系统流程图

图2-2系统流程图

3、打虫虫游戏系统的设计

3.1系统需求分析

打虫虫的设计目标为:

实现打虫虫游戏功能,有背景音乐,可用键盘或者鼠标控制挡板以及游戏可以实现暂停恢复。

3.2系统主要功能要求

本系统为了实现游戏打虫虫。

本系统主要实现如下功能:

q系统界面美观大方舒适。

q画面流畅,具有可玩性。

q没有较大的游戏BUG。

q实现多种虫虫的排列模型。

q系统最大限度地实现了易维护性和易操作性。

q系统运行稳定、安全可靠。

3.3游戏主要函数

Apple苹果类:

苹果在整个游戏类中应该属于相对灵活的对象,整个游戏关键是苹果的碰撞反弹,苹果经过碰撞--->反弹--->碰撞来实现打虫虫的效果。

苹果的移动:

根据苹果的位置和活动范围进行碰撞检测和反弹控制,函数如下:

publicvoidmove(){//根据球位置和活动范围进行碰撞检测和反弹控制

if(apple.getY()<0){

dy=1;

}

elseif(apple.getY()>screenHeight){

}

elseif(apple.getX()<0){

dx=1;

}

elseif(apple.getX()>screenWidth-20){//20是球的直径

dx=-1;

}

apple.move(dx,dy);//在当前速度下移动球

apple.paint(graphics);

}

改变苹果的方向,函数如下:

publicvoidchangeDirect(inttype){//改变球的行进方向

switch(type){

caseUP:

dy=-1;

break;

caseDOWN:

dy=1;

break;

caseLEFT:

dx=-1;

break;

caseRIGHT:

dx=1;

break;

}

}

Plank木板类:

在游戏中控制木板的移动,当判断语句符合条件,做相应的动作,有木板的左移和木板的右移;获取木板当前的位置信息以确定木板的位置。

木板的左移和右移:

publicvoidmoveLeft(){//木板左移

if(plank.getX()>0){

plank.move(-2,0);

}

}

publicvoidmoveRight(){//木板右移

if(plank.getX()

plank.move(2,0);

}

}

获取木板当前的位置信息:

publicSpritegetPlank(){//获得挡板对象

returnplank;

}

publicintgetX(){//获得位置信息:

X位置

returnplank.getX();

}

publicintgetY(){//获得位置信息:

Y位置

returnplank.getY();

}

MyGameCanvas游戏类:

MyGameCanvas是游戏的主要类,协调各函数进行调用,实现整个游戏的线程。

MyGameCanvas类实现游戏主要状态的控制,例如游戏开始、返回、暂停、继续。

在不同的状态下跳转到相应的界面,所以在MyMIDlet主类中定义一个界面切换的函数,通过构造函数的参数传递,实现该功能。

MyGameCanvas类中主要的算法

ballHitBricks()函数:

虫虫和苹果的碰撞检测,当苹果和虫虫发生碰撞,虫虫就从定义的集合中移除一个;苹果的反弹控制,苹果经过碰撞虫虫后,改变苹果的运动方向。

publicvoidplankAction(){

If(){

}

Else(){

}

}

plankAction()函数:

苹果的碰撞检测,检测苹果和木板的碰撞,当苹果碰撞到木板,改变苹果的运动方向;调用木板移动函数,控制木板的运动方向。

if(flagUp){

apple.changeDirect(Apple.UP);

}elseif(flagDown){

apple.changeDirect(Apple.DOWN);

}

if(flagLeft){

apple.changeDirect(Apple.LEFT);

}elseif(flagRight){

apple.changeDirect(Apple.RIGHT);

}

线程:

主要调用ballHitBricks()函数和plankAction()函数;速度因子和判断,获取系统当前的运行时间和获取系统运行线程第一轮的时间来判断;线程一直运行,用boolean型来控制线程的开启、关闭和暂停游戏的功能。

3.4功能实现截图

图3-1图3-2

图3-3图3-4

图3-5图3-6

4、小结

由于市场需要,游戏的更新速度步步加快,为了适应社会的需要,社会对游戏开发人员的需求,在游戏编程的学习过程中,必须理论与实践结合,提高编程能力与水平。

通过小游戏的设计,对以学过的内容加深理解,对游戏开发的过程有初步的认识,为以后的游戏开发设计和更加深入的学习计算机语言打下夯实的基础。

目前竞争日益激烈的行业环境,对于未来行业的前景,还是要保持乐观的心态。

毕竟游戏并不是一下子就可以编写成的。

需要不断的技术积累,需要团队的合作,提高了工作的效率,才算是在游戏开发的道路上成功了一半。

在现在这个信息化飞速发展的道路上,要成为一名合格的编程人员,那就必须走好每一步现在的路。

本游戏是基于J2ME的小游戏,满足了用户娱乐的需求,已经达到了预期的目标。

虽然该游戏大部分功能基本上已经实现,但是还是会存在一些不足:

(1)游戏的关卡太少,样式不够多样化,不能满足用户对该游戏的挑战。

(2)游戏的色彩不够多样化,色彩单一,不能给用户增加新鲜的娱乐感。

(3)对于用户信息以及积分榜方面,由于该程序没有涉及到数据库的相关内容,在用户信息和积分存储,用户信息和积分的更新功能方面表现欠佳。

在这些功能方面有待进一步改善。

虽然游戏在功能和界面上不能算的上很棒,但是麻雀虽小,五脏俱全,游戏具备了打虫虫这个游戏应该具有的基本雏形。

通过这一设计,我们对这个游戏应该有了比较宏观的了解,我们将在这一基础上探究游戏更完美的改变。

5、参考文献

[1](美)埃克尔著陈昊鹏,饶若楠等译.Java编程思想[J].机械工业出版社,2005

[2](美)GaryJ.Bronson著张珑刘雅文译.Java编程原理[J].清华大学出版社,2004

[3](美)MichaelMorrison著徐刚,于健,薛雷译.游戏编程入门[J].人民邮电出版社,2005.9

[4](美)WendyStahler著冯宝坤,曹英译.游戏编程中的数理应用[J].红旗出版社,2005

[5](美)克罗夫特(DavidWallaceCroft)著彭晖译.Java游戏高级编程[J].清华大学出版社,2005

[6](美)DavidBrackeen著邱仲潘译.Java游戏编程[J].科学出版社,2004

[7]聂庆亮编著.Java应用开发指南[J].清华大学出版社,2010

[8]耿祥义,张跃平编著.Java面向对象程序设计[J].清华大学出版社,2010

[9]杨绍方编著.Java编程实用技术与案例[J].清华大学出版社,2000.11

[10]明日科技编著.Java编程全能词典[J].电子工业出版社,2010

6、附录:

游戏的代码实现和分析

MyMIDlet.java

importjavax.microedition.lcdui.Display;

importjavax.microedition.midlet.MIDlet;

importjavax.microedition.midlet.MIDletStateChangeException;

 

publicclassMyMIDletextendsMIDlet{

privateDisplaydisplay;

publicMyGameCanvasmgc;

publicWelcomewelcome;

publicWinGamewingame;

publicLostGamelostgame;

publicMyMIDlet(){

display=Display.getDisplay(this);

welcome=newWelcome(this);

//mgc=newMyGameCanvas(this);

//wingame=newWinGame(this);

//lostgame=newLostGame(this);

}

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{

//TODOAuto-generatedmethodstub

}

protectedvoidpauseApp(){

//TODOAuto-generatedmethodstub

}

protectedvoidstartApp()throwsMIDletStateChangeException{

changeForm("Welcome");

}

publicvoidchangeForm(Stringstr){

if(str.equals("Welcome")){

display.setCurrent(welcome);

}

elseif(str.equals("WinGame")){

display.setCurrent(wingame);

}

elseif(str.equals("LostGame")){

display.setCurrent(lostgame);

}

elseif(str.equals("MyGameCanvas")){

display.setCurrent(mgc);

}

}

}

MyGameCanvas.Java

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.Vector;

importjavax.microedition.lcdui.Command;

importjavax.microedition.lcdui.CommandListener;

importjavax.microedition.lcdui.Displayable;

importjavax.microedition.lcdui.Graphics;

importjavax.microedition.lcdui.Image;

importjavax.microedition.lcdui.game.GameCanvas;

importjavax.microedition.media.Manager;

importjavax.microedition.media.MediaException;

importjavax.microedition.media.Player;

 

publicclassMyGameCanvasextendsGameCanvasimplementsCommandListener,Runnable{

privateGraphicsg;

privateMyMIDletparent;

privateImageimgBJ;

privatePlayerplayerGame,playerPZ;//定义游戏音乐和碰撞音乐

privateAppleapple;//定义球类

privateVectorbricks;//砖块集合

privatePlankplank;//一个挡板

privateThreadt,t1,t2;//线程t,t1,t2

privatebooleanRUN=true;//是否运行

privatebooleanSTART=false;//是否开始

privatebooleanBACK=false;//是否返回

privateCommandstart=newCommand("开始",Command.OK,1);//开始

privateCommandresume=newCommand("继续",Command.BACK,1);//继续

privateCommandpause=newCommand("暂停",Command.BACK,1);//暂停

privateCommandback=newCommand("返回",Command.EXIT,1);//返回

privateintwidth;//手机屏幕宽度

privateintheight;//手机屏幕宽度

MyGameCanvas(MyMIDletparent){

super(true);

g=this.getGraphics();//获得画布画图对象

this.parent=parent;

width=this.getWidth();//获得手机屏幕的宽度

height=this.getHeight()-10;//获得手机屏幕的高度

apple=newApple(g,width,height);//实例化球

plank=newPlank(g,width,width/2-30,height-10);//实例化挡板

bricks=newVector();//砖块集合实例化

intbricksXnum=width/200;//计算屏幕横向的长度的砖块数量

intbricksXLeft=(width-bricksXnum*30)/2;//计算总数量

intbricksYnum=(height-90)/80;//计算屏幕纵向的长度的砖块数量

for(inti=0;i

for(intj=0;j

bricks.addElement(newBug(g,bricksXLeft+i*30,20*j));

}

}

try{

imgBJ=Image.createImage("/beijing.jpg");//加载背景图片

}catch(IOExceptione){

e.printStackTrace();

}

InputStreamisGame=this.getClass().getResourceAsStream("/game.mid");

InputStreamispz=this.getClass().getResourceAsStream("/select.wav");

try{

playerGame=Manager.createPlayer(isGame,"audio/midi");

playerGame.setLoopCount(-1);//重复播放音乐

playerPZ=Manager.createPlayer(ispz,"audio/x-wav");

}catch(IOExceptione){

e.printStackTrace();

}catch(MediaExceptione){

e.printStackTrace();

}

MusicGame();

this.addCommand(start);

this.addCommand(back);

this.setCommandListener(this);

t=newThread(this);

t.start();

}

publicvoidMusicGame(){//线程t1

Runnabler=newRunnable(){

publicvoidrun(){

try{

playerGame.start();

}catch(MediaExceptione){

e.printStackTrace();

}

}

};

t1=newThread(r);

t1.start();

}

publicvoidMusicPZ(){//线程t2

Runnabler=newRunnable(){

publicvoidrun(){

try{

playerPZ.start();

}catch(MediaExceptione){

e.printStackTrace();

}

}

};

t2=newThread(r);

t2.start();

}

publicvoidrun(){

while(true){

g.setColor(255,255,255);

g.fillRect(0,0,this.getWidth(),this.getHeight());

paint();//画背景图片

if(START){

if(RUN){

if(bricks.size()==0){

playerGame.close();//结束音乐

parent.wingame=newWinGame(parent);

parent.changeForm("WinGame");

break;//跳出线程

}

if(apple.getY()>height){

playerGame.close();//结束playerGame音乐

parent.lostgame=newLostG

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2