J2ME打砖块答辩Word文档格式.docx
- 文档编号:8598302
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:35
- 大小:886.05KB
J2ME打砖块答辩Word文档格式.docx
《J2ME打砖块答辩Word文档格式.docx》由会员分享,可在线阅读,更多相关《J2ME打砖块答辩Word文档格式.docx(35页珍藏版)》请在冰点文库上搜索。
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()<
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;
caseLEFT:
dx=-1;
caseRIGHT:
dx=1;
}
Plank木板类:
在游戏中控制木板的移动,当判断语句符合条件,做相应的动作,有木板的左移和木板的右移;
获取木板当前的位置信息以确定木板的位置。
木板的左移和右移:
publicvoidmoveLeft(){//木板左移
if(plank.getX()>
plank.move(-2,0);
publicvoidmoveRight(){//木板右移
if(plank.getX()<
screenWidth-plank.getWidth()){
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
游戏的代码实现和分析
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(){
protectedvoidstartApp()throwsMIDletStateChangeException{
changeForm("
Welcome"
);
publicvoidchangeForm(Stringstr){
if(str.equals("
)){
display.setCurrent(welcome);
elseif(str.equals("
WinGame"
display.setCurrent(wingame);
LostGame"
display.setCurrent(lostgame);
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("
暂停"
//暂停
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<
bricksXnum;
i++){//初始化砖块数量
for(intj=0;
j<
bricksYnum;
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"
playerGame=Manager.createPlayer(isGame,"
audio/midi"
playerGame.setLoopCount(-1);
//重复播放音乐
playerPZ=Manager.createPlayer(ispz,"
audio/x-wav"
}catch(IOExceptione){
}catch(MediaExceptione){
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
playerPZ.start();
}catch(MediaExceptione){
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("
break;
//跳出线程
}
if(apple.getY()>
height){
//结束playerGame音乐
parent.lostgame=newLostG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2ME 砖块 答辩
![提示](https://static.bingdoc.com/images/bang_tan.gif)