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 )。 } } //随机产生敌方坦克。j2me设计论文--坦克大战游戏
相关推荐
性的意见 ◎ 关心顾客的利益,急顾客所急 ◎ 帮助顾客作出正确的楼盘选择 ◎ 耐心地倾听顾客的意见和要求 ◎ 记住老顾客的偏好 第 0 页 共 100 页 销售人员的任务与个人素质、性格的关系 销售人员的任务 有关个人的素质和性格 确定未来顾客需要 创造力、机智、想象力、见闻广博、分析技巧 说明楼盘如何配合未来顾客需要 语言能力、文字好、知识丰富、热情 获得未来顾客的合约 说服能力、机智、坚定
((leftpre_left)*box_size, (toppre_top)*box_size)。 (g, box_size, [colorIndex])。 } else { // just changed: (left*box_size, top*box_size)。 (g, box_size)。 // draw new position: (g, box_size,
甚至对非常简单的查询 , 其选项也非常复杂。 而 JDBC 恰好相反 , 其尽量保证简单功能的简便性 , 而同时在必要时允许使用高级功能。 4. 启用纯 Java 需要象 JDBC 这样的 Java API 发送 SQL 语句时 , 连接一旦建立 , 就可用来向它所涉及的数据库传送 SQL 语句。 JDBC 对可被发送的SQL语句类型不加任何限制。 这就提供了很大的灵活性 ,
开位,龙义线送电 无问题。 联系省调 , 核对 220KV 故障录波器定值正确后投入。 合上龙义线 22161 及 22166 刀闸,合上 220KVI 母线 PT 刀闸。 合上龙义线2216 开关。 1 主变送电方案 将 1 主变 2201 分接头均置于“ 9”位置;检查保护投入情况。 检查 01 号主变高压侧 2201 开关、 22020 刀闸、 01
5 个工作 日内 通过 丽水采购 与 招标网 形式予以解答。 由此而产生的对招标文件内容的修改,以修改招标文件的方式发出。 其中工程量清单在投标截止前不需要投标人进行澄清和修改。 2.招标人发布紧急公告 (对招标文件非实质性内容的修改) ,将在开标 前 5 个工作 日通过 丽水采购 与 招标网 通知所有投标人。 (十)招标文件的修改 在投标截止 时间前 15 个 工作日 ,招标人通过
团队匹配分析等。 除此之外,因应协同和集成的需要,用友 eHR,还提供员工、经理和总裁的自助服务系统,这将发展成为员工和领导的门户系统。 优异的开放性和可扩展性 在今天,没有一家公司可以满足所有客户现在和未来的所有需要,系统的开放性、灵活性及可扩展性,成为 eHR 选型的重要因素。 用友 eHR,在架构设计上,可以由用户自定义多种信息数据类目,可实现业务流程自定义和重组