j2me设计论文--坦克大战游戏内容摘要:

and(MenuCommand)。 setCommandListener(this)。 } if( m_TextSp == null ){ //创建图形文字对象 try{ Image img = (/demo/)。 m_TextSp = new Sprite(img, 82, 25)。 本科课程设计论文 11 (41, 23)。 int x = getWidth()/2。 int y = getHeight()/2 10。 (x, y)。 } catch(Exception exception){} } } //设置游戏画面的显示区域 private void SetViewWindow(){ if( m_LayerManager == null ) return。 //根据玩家坦克的位置,设置游戏画面的显示区域 int nX = () getWidth()/2。 int nY = () getHeight()/2。 if( nX 0 ) nX = 0。 else if( nX 15 * 13 getWidth() ) nX = 15 * 13 getWidth()。 if( nY 0 ) nY = 0。 else if( nY 15 * 12 getHeight() ) nY = 15 * 12 getHeight()。 ( nX, nY, getWidth(), getHeight() )。 } private void setState( int state ){ //设置游戏状态 if( state 0 || state = GAME_STATE_NUM ) return。 m_nState = state。 switch( m_nState ){ case GAME_UI: //进入用户界面 ()。 //显示标题界面 //设置本游戏的按钮类型,本游戏有 :开始及退出两种按钮 ().setShow(true, false, false, false, false, true )。 break。 case GAME_BUTTON: //在游戏中途显示按钮 ()。 //游戏中途,显示复位与退出按钮 ().setShow(false, true, false, false, false, true )。 break。 case GAME_GAMING: //正在游戏 ()。 break。 case GAME_END: //游戏结束 ()。 break。 } } public void Start(){ m_bRunning = true。 Thread thread = new Thread(this)。 //分配新线程 ()。 //线程启动 } public void run() { 本科课程设计论文 12 //得到系统当前时间 ,并将时间换算成毫秒 long T1 = ()。 long T2 = T1。 while(m_bRunning){ T2 = ()。 if( T2 T1 50 ){ //间隔 50 毫秒 T1 = T2。 Input()。 Logic()。 Paint()。 } } } public void Stop(){ m_bRunning = false。 } public void Input(){ int keyStates = getKeyStates()。 switch( m_nState ){ case GAME_UI: { switch( ( keyStates ) ){ case : //按下开始键 Reset()。 setState(GAME_GAMING)。 break。 case : //按下退出键 ()。 break。 } } break。 case GAME_GAMING: //游戏中 ( keyStates )。 SetViewWindow()。 break。 case GAME_BUTTON: //游戏中途显示按钮 { switch( ( keyStates ) ){ case : //按下复位键 Reset()。 setState(GAME_GAMING)。 break。 case : //按下退出键 ()。 break。 } } break。 case GAME_END: if( ( keyStates amp。 ) != 0 ){ Reset()。 setState(GAME_GAMING)。 } break。 本科课程设计论文 13 } } public void Logic(){ switch( m_nState ){ case GAME_GAMING: //爆炸逻辑 for( int m = 0。 m。 m ++ ){ m_aExplosion[m].Logic()。 } //坦克逻辑 ()。 for( int n = 0。 n。 n ++ ){ m_eTank[n].Logic()。 } //碰撞检测 CheckCollision()。 //产生新的敌方坦克 CreateETank()。 break。 } } public void Paint(){ Graphics g = getGraphics()。 //用黑色清屏 (0)。 ( 0, 0, getWidth(), getHeight() )。 (0xFFFF0000)。 switch( m_nState ){ case GAME_UI: //显示界面 (g, getWidth(), getHeight())。 break。 case GAME_GAMING: //显示游戏画面 case GAME_BUTTON: case GAME_END: (g, 0, 0)。 if( m_nState == GAME_END ) (g)。 (g, getWidth(), getHeight())。 break。 } flushGraphics()。 } //碰撞检测 private void CheckCollision() { BulletSprite mB =。 BulletSprite mEB = null。 for( int n = 0。 n。 n ++ ){ mEB = m_eTank[n].m_Bullet。 //敌人子弹和我方坦克碰撞 if( ( m_Tank, false ) ){ (false)。 //游戏失败 本科课程设计论文 14 (1)。 setState(GAME_END)。 break。 } //我方子弹和敌人坦克碰撞 if( ( m_eTank[n], false ) ){ CreateExplosion((), ())。 ( false )。 m_eTank[n].setVisible( false )。 m_nDestroyETank ++。 if( m_nDestroyETank = 20 ){ //消灭的所有坦克,游戏胜利 (0)。 setState(GAME_END)。 return。 } } //我方坦克和敌人碰撞 if( ( m_eTank[n], false ) ){ //都向后退 ()。 m_eTank[n].MoveBack()。 } //敌人和地图碰撞,敌人向后退 if( m_eTank[n].collidesWith( , false ) ){ m_eTank[n].MoveBack()。 } else if( m_eTank[n].collidesWith( , false ) ){ m_eTank[n].MoveBack()。 } else if( m_eTank[n].collidesWith( , false ) ){ m_eTank[n].MoveBack()。 } //敌人子弹与地图相撞 int nERow = ()。 int nECol = ()。 if( nERow 0 || nERow = () || nECol 0 || nECol = () ) {//子弹超出场景范围 (false)。 continue。 } if( ( , false ) ) {//子弹打到司令部 ( nECol, nERow, 6 )。 CreateExplosion((), ())。 ( false )。 //游戏失败 (1)。 setState(GAME_END)。 return。 } if( ( , false ) ) 本科课程设计论文 15 {//子弹打到可摧毁的区域 ( nECol, nERow, 0 )。 CreateExplosion((), ())。 ( false )。 } else if( ( , false ) ) {//子弹打到不可摧毁的区域 CreateExplosion((), ())。 ( false )。 } } //我方坦克和地图碰撞,则向后退 if( ( , false ) ){ ()。 } else if( ( , false ) ){ ()。 } else if( ( , false ) ){ ()。 } //我方子弹与地图相撞 int nRow = ()。 int nCol = ()。 if( nRow 0 || nRow = () || nCol 0 || nCol = () ) {//子弹超出场景范围 (false)。 return。 } if( ( , false ) ) {//子弹打到司令部 ( nCol, nRow, 6 )。 CreateExplosion((), ())。 //游戏失败 (1)。 setState(GAME_END)。 ( false )。 } else if( ( , false ) ) {//子弹打到可摧毁的区域 ( nCol, nRow, 0 )。 CreateExplosion((), ())。 ( false )。 } else if( ( , false ) ) {//子弹打到不可摧毁的区域 CreateExplosion((), ())。 ( false )。 } } //随机产生敌方坦克。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。