java手机游戏实验5

上传人:xiao****1972 文档编号:84822337 上传时间:2019-03-05 格式:DOC 页数:7 大小:125.50KB
返回 下载 相关 举报
java手机游戏实验5_第1页
第1页 / 共7页
java手机游戏实验5_第2页
第2页 / 共7页
java手机游戏实验5_第3页
第3页 / 共7页
java手机游戏实验5_第4页
第4页 / 共7页
java手机游戏实验5_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《java手机游戏实验5》由会员分享,可在线阅读,更多相关《java手机游戏实验5(7页珍藏版)》请在金锄头文库上搜索。

1、实验五 射击游戏一、实验目的1. 熟悉射击类游戏规则。2. 学习游戏过程中的碰撞检测方法。3. 学习J2ME的记录管理系统。二、实验环境Eclipse、 WTK 、Proguard。三、实验内容完成打飞机游戏。游戏规则是:玩家控制一架飞机在夜空飞行,按手机方向键可移动飞机,按中心键可向前方发射导弹,游戏时背景不变,屏幕上会随时出现敌机,并不断开火。玩家的任务是尽可能多的消灭敌机。当玩家飞机中弹时游戏结束,系统提示本次战斗消灭的敌机数量,以及历史消灭敌机的最高记录。四、实验步骤1. 用Eclipse创建项目及MIDlet框架2. 准备好游戏所用资源图片:3.根据游戏中存在的对象以及对象之间的关系

2、,定义五个类分别管理导弹、飞机、玩家飞机、敌机和爆炸。4. 添加一个MainCanvas类。把MainCanas和Midlet框架联系起来。5.思考题(1)理解游戏流程.(2)本程序存在问题:游戏结束后记录本次得分和历史得分,玩家飞机还可以继续打敌机,分数继续累加。(3)修改代码: A) 本程序的RMS是否有效?去掉SaveHighScore()和LoadHighScore()观察运行结果有无差异? B)如何修改代码,使得每架玩家飞机可同时发射三枚导弹。怎么修改可以使得每家玩家飞机和敌机均可发射三枚导弹。 C)如何修改代码,使得玩家可以游戏三轮,每轮中弹后记录本次得分和历史最高分。重新一轮游戏

3、,分数应该从0开始重新计本轮得分。三轮之后游戏结束,保持游戏画面的静止。如何修改代码实现上述功能?(4)给游戏添加音效。主要类参考代码:BulletSpritepublic class BulletSprite extends Spriteprivate int m_nSpeedX = 0;private int m_nSpeedY = 0;BulletSprite(Image image, int frameWidth, int frameHeight)super( image, frameWidth, frameHeight );defineReferencePixel( frameWid

4、th / 2, frameHeight / 2 );setVisible(false);public void SetSpeed( int nSpeedX, int nSpeedY )m_nSpeedX = nSpeedX;m_nSpeedY = nSpeedY;public void Logic()if( isVisible() = false )return;int nX = getRefPixelX() + m_nSpeedX;int nY = getRefPixelY() + m_nSpeedY;setRefPixelPosition( nX, nY );if( getRefPixel

5、X() MainCanvas.m_nScrWidth + 10|getRefPixelY() MainCanvas.m_nScrHeight + 10 )setVisible(false);ExplosionSpritepublic class ExplosionSprite extends SpriteExplosionSprite(Image image, int frameWidth, int frameHeight)super( image, frameWidth, frameHeight );defineReferencePixel( frameWidth / 2, frameHei

6、ght / 2 );setVisible(false);public void Logic()if( isVisible() = false )return;int nFrame = getFrame();nFrame +;if( nFrame 7 )setVisible(false);return;setFrame( nFrame );PlaneSpritepublic class PlaneSprite extends Spriteprotected intm_nSpeedX = 0;protected intm_nSpeedY = 0;public BulletSprite m_Bull

7、et ;public PlaneSprite(Image img, int nWidth, int nHeight ) super(img, nWidth, nHeight);tryImage BImg = Image.createImage( /Bullet.png);m_Bullet = new BulletSprite( BImg, 5, 5 );catch (IOException e)setVisible( false );defineReferencePixel( nWidth / 2, nHeight / 2);public void SetSpeed( int nSpeedX,

8、 int nSpeedY )m_nSpeedX = nSpeedX;m_nSpeedY = nSpeedY;public void Logic()m_Bullet.Logic();MyPlane:import javax.microedition.lcdui.Image;import javax.microedition.lcdui.game.GameCanvas;public class MyPlane extends PlaneSpriteMyPlane( Image img, int nWidth, int nHeight )super( img, nWidth, nHeight );m

9、_nSpeedY = 2;m_nSpeedX = 2;public void Input( int keyStates )if( isVisible() = false )return;int nX = getRefPixelX();int nY = getRefPixelY();if( ( keyStates & GameCanvas.UP_PRESSED ) != 0 )nY -= m_nSpeedY; if( ( keyStates & GameCanvas.LEFT_PRESSED ) != 0 ) nX -= m_nSpeedX; if( ( keyStates & GameCanv

10、as.RIGHT_PRESSED ) != 0 ) nX += m_nSpeedX; if( ( keyStates & GameCanvas.DOWN_PRESSED ) != 0 ) nY += m_nSpeedY; if( ( keyStates & GameCanvas.FIRE_PRESSED ) != 0 ) CreateBullet(); setRefPixelPosition( nX, nY );public void Logic()super.Logic();private void CreateBullet()if( m_Bullet.isVisible() )return

11、;m_Bullet.setRefPixelPosition( getRefPixelX(), getRefPixelY();m_Bullet.SetSpeed( 0, -3 );m_Bullet.setVisible(true);Enemy:import java.util.Random;import javax.microedition.lcdui.Image;public class Enemy extends PlaneSpriteprivate Random m_Random;Enemy( Image img, int nWidth, int nHeight )super( img,

12、nWidth, nHeight );m_Random = new Random();public void Logic( )super.Logic();if( isVisible() = false )return;int nX = getRefPixelX() + m_nSpeedX;int nY = getRefPixelY() + m_nSpeedY;setRefPixelPosition( nX, nY );if( getRefPixelX() MainCanvas.m_nScrWidth + 10 |getRefPixelY() MainCanvas.m_nScrHeight + 1

13、0 )setVisible(false);CreateBullet();private void CreateBullet( )if( m_Bullet.isVisible() )return;int RS = Math.abs(m_Random.nextInt() % 30 );if( RS != 0 )return;int nSpeedX = m_Random.nextInt() % 2;int nSpeedY = Math.abs(m_Random.nextInt() % 2 ) + 1;m_Bullet.SetSpeed( nSpeedX, nSpeedY );m_Bullet.setRefPixelPosition( getRefPixelX(), getRefPixelY();m_Bullet.setVisible(true);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号