亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? maincanvas.java

?? 坦克大戰(zhàn) 主要就是和黑白機(jī)上的相似
?? JAVA
字號(hào):
import java.io.IOException;
import java.util.Random;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
//定義游戲畫布屏幕
public class MainCanvas extends GameCanvas
			implements Runnable,CommandListener  {
	//聲明自己的坦克對(duì)象
	private MyTank m_Tank;
	//設(shè)置敵人坦克數(shù)量
	private int	m_nTotalETank	= 20;
	//設(shè)置已經(jīng)消滅敵人坦克數(shù)量
	private int	m_nDestroyETank = 0;
	//聲明敵人坦克數(shù)組
	private EnemyTank m_eTank[];
	//設(shè)置場(chǎng)景對(duì)象
	private Scene m_Scene;
	//聲明代表子彈爆炸的精靈的數(shù)組
	public static ExplosionSprite m_aExplosion[];
	//設(shè)置游戲結(jié)束標(biāo)志
	private boolean m_bGameEnd;
	//聲明圖層管理器
	public static LayerManager m_LayerManager;
	public static int m_nScrWidth;
	public static int m_nScrHeight;
	private TankMidlet m_midlet;
	private  Command CommandExit;
	private Random m_Random;
	private MyUI m_UI;
	//構(gòu)造函數(shù)
	public MainCanvas(TankMidlet midlet) throws IOException {
	    super(true);
	    m_midlet = midlet;
	    setCommandListener(this);	
	    m_UI = new MyUI( getWidth(), getHeight() );
	    Thread t = new Thread(this);
	    t.start();
	   
	    
	}

	public  void Start() {
		m_UI = null;
		CommandExit = new Command("退出", Command.EXIT, 0);
	    addCommand(CommandExit);
	    m_Random = new Random();
	    m_eTank 	= new EnemyTank[2];
	    m_aExplosion 	= new ExplosionSprite[3];
	    try{ 
			Image image = Image.createImage("/tank.png");
			m_Tank = new MyTank( image, 13, 13 );
			image = Image.createImage("/enemyTank.png");
			for( int n = 0; n < m_eTank.length; n ++ ){
				m_eTank[n] = new EnemyTank( image, 13, 13 );
			}
			image = Image.createImage("/Explosion.png");
			for( int m = 0; m < m_aExplosion.length; m ++ ){
				m_aExplosion[m] = new ExplosionSprite( image, 21, 17 );
				m_aExplosion[m].setVisible(false);
			}
			
		}
	    catch(IOException ioe){}
	    catch(Exception e){}
	    
	    m_Scene = new Scene();
	    m_LayerManager = new LayerManager();
	    for( int m = 0; m < m_aExplosion.length; m ++ ){
	    	m_LayerManager.append(m_aExplosion[m]);
		}
	    m_LayerManager.append(m_Scene.m_LyCanPass);
	    m_LayerManager.append( m_Tank );
	    m_LayerManager.append( m_Tank.m_Bullet );
	    for( int n = 0; n < m_eTank.length; n ++ ){
	    	m_LayerManager.append(m_eTank[n]);
	    	m_LayerManager.append(m_eTank[n].m_Bullet);
		}
	    m_LayerManager.append(m_Scene.m_LyBulletPass);
	    m_LayerManager.append(m_Scene.m_LyCanHit);
	    m_LayerManager.append(m_Scene.m_LyNotPass);
	    m_LayerManager.append(m_Scene.m_LyHQ);
	    
		m_Scene.LoadMap();
		m_Tank.Start( 15 * 3 + 7, 15 * 10 + 7, 0, 2 );
		SetViewWindow();
		
	}
	//游戲主循環(huán)
	public void run() {	    
		while (true) {
			long times_s= System.currentTimeMillis();
			Input(); 
			Logic();
			Render();
		 
			long times_e=System.currentTimeMillis();
			long times=times_e-times_s;
		 
			if( times >80 ){
				times =80;
			}
			try{
				Thread.sleep(80- times );
			}catch(InterruptedException ie){
				ie.printStackTrace();
			} 
		}
	}
    //獲取鍵盤輸入
	private void Input() {
		int keyStates = getKeyStates();
		if( m_UI != null ){
			if( m_UI.Input( keyStates ) == true ){
				Start();
			}
			return;
		}
		m_Tank.Input( keyStates );
		SetViewWindow();
	}
	//程序邏輯調(diào)用方法
	private void Logic() {
		if( m_UI != null ){
			return;
		}
		for( int m = 0; m < m_aExplosion.length; m ++ ){
			m_aExplosion[m].Logic();
		}
		m_Tank.Logic();
	    for( int n = 0; n < m_eTank.length; n ++ ){
	    	m_eTank[n].Logic();
		}
	    CheckCollision();
	    CreateETank();
	}
	  
	private void Render() {
		Graphics g = getGraphics();
		//填充屏幕
	    g.setColor(0x000000);
	    g.fillRect(0, 0, getWidth(), getHeight());
	    if( m_UI != null ){
			m_UI.Paint( g );
			flushGraphics();
			return;
		}
	    //繪制圖層管理器
	    m_LayerManager.paint(g, 0, 0);
        //游戲結(jié)束,顯示的屏幕
		if (m_bGameEnd)
		{  
			int w = getWidth();
			int h = getHeight();
			//g.setColor(0x000000);
			//g.fillRect(0, 0, w, h);
			g.setColor(0xffffff);
			g.drawString("GAME OVER",w/2-80,h/2,Graphics.LEFT|Graphics.TOP); 
			g.drawString("Tank 1.0 B",w/2-80,h/2+15,Graphics.LEFT|Graphics.TOP); 
			g.drawString("java手機(jī)游戲開發(fā)培訓(xùn)教程",w/2-80,h/2+30,Graphics.LEFT|Graphics.TOP); 
		}
		//繪制到屏幕
		flushGraphics();
	}
	//按鍵處理程序
	public void commandAction(Command c, Displayable s) {
		if (c.getCommandType() == Command.EXIT) {
			m_midlet.notifyDestroyed();
	    }
	}
	//設(shè)置可視窗口
	public void SetViewWindow(){
		if( m_LayerManager == null )
			return;
		int nX = m_Tank.getRefPixelX() - getWidth()/2;
		int nY = m_Tank.getRefPixelY() - 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();
		m_LayerManager.setViewWindow( nX, nY, getWidth(), getHeight() );
	}
	//判斷碰撞檢測(cè)
	private void CheckCollision(){
					
		BulletSprite mB = m_Tank.m_Bullet;
		BulletSprite mEB = null;
		for( int n = 0; n < m_eTank.length; n ++ ){
			mEB = m_eTank[n].m_Bullet;
			//敵人子彈和我方坦克碰撞
			if( mEB.collidesWith( m_Tank, false ) ){
				mEB.setVisible(false);
				m_bGameEnd = true;
				break;
			}
			//我方子彈和敵人坦克碰撞
			if( mB.collidesWith( m_eTank[n], false ) ){
				CreateExplosion(mB.getRefPixelX(), mB.getRefPixelY());
				mB.setVisible( false );
				m_eTank[n].setVisible( false );
				m_nDestroyETank ++;
				if( m_nDestroyETank >= 20 ){
					m_bGameEnd = true;
					return;
				}
			}
			//我方坦克和敵人碰撞
			if( m_Tank.collidesWith( m_eTank[n], false ) ){
				m_Tank.MoveBack();
				m_eTank[n].MoveBack();
			}
			//敵人和地圖
			if( m_eTank[n].collidesWith( m_Scene.m_LyBulletPass, false ) ){
				m_eTank[n].MoveBack();
			}
			else if( m_eTank[n].collidesWith( m_Scene.m_LyCanHit, false ) ){
				m_eTank[n].MoveBack();
			}
			else if( m_eTank[n].collidesWith( m_Scene.m_LyNotPass, false ) ){
				m_eTank[n].MoveBack();
			}		
			//敵人子彈與地圖相撞
			int nERow = mEB.GetCurRow();
			int nECol = mEB.GetCurCol();
			if( nERow < 0 || nERow >= m_Scene.m_LyCanHit.getRows() ||
					nECol < 0 || nECol >= m_Scene.m_LyCanHit.getColumns() ){
				mEB.setVisible(false);
				continue;
			}
			if( mEB.collidesWith( m_Scene.m_LyHQ, false ) ){
				m_Scene.m_LyHQ.setCell( nECol, nERow, 6 );
				CreateExplosion(mEB.getRefPixelX(), mEB.getRefPixelY());
				mEB.setVisible( false );
				m_bGameEnd = true;
				return;
			}
			if( mEB.collidesWith( m_Scene.m_LyCanHit, false ) )
			{
				m_Scene.m_LyCanHit.setCell( nECol, nERow, 0 );
				CreateExplosion(mEB.getRefPixelX(), mEB.getRefPixelY());
				mEB.setVisible( false );
			}
			else if( mEB.collidesWith( m_Scene.m_LyNotPass, false ) ){
				CreateExplosion(mEB.getRefPixelX(), mEB.getRefPixelY());
				mEB.setVisible( false );
			}
		}
//		我方坦克和地圖
		if( m_Tank.collidesWith( m_Scene.m_LyBulletPass, false ) ){
			m_Tank.MoveBack();
		}
		else if( m_Tank.collidesWith( m_Scene.m_LyCanHit, false ) ){
			m_Tank.MoveBack();
		}
		else if( m_Tank.collidesWith( m_Scene.m_LyNotPass, false ) ){
			m_Tank.MoveBack();
		}		
		//我方子彈與地圖相撞
		
		int nRow = mB.GetCurRow();
		int nCol = mB.GetCurCol();
		if( nRow < 0 || nRow >= m_Scene.m_LyCanHit.getRows() ||
				nCol < 0 || nCol >= m_Scene.m_LyCanHit.getColumns() ){
			mB.setVisible(false);
			return;
		}
			
		if( mB.collidesWith( m_Scene.m_LyHQ, false ) ){
			m_Scene.m_LyHQ.setCell( nCol, nRow, 6 );
			CreateExplosion(mB.getRefPixelX(), mB.getRefPixelY());
			m_bGameEnd = true;
			mB.setVisible( false );
		}
		else if( mB.collidesWith( m_Scene.m_LyCanHit, false ) )
		{
			m_Scene.m_LyCanHit.setCell( nCol, nRow, 0 );
			CreateExplosion(mB.getRefPixelX(), mB.getRefPixelY());
			mB.setVisible( false );
		}
		else if( mB.collidesWith( m_Scene.m_LyNotPass, false ) )
		{
			CreateExplosion(mB.getRefPixelX(), mB.getRefPixelY());
			mB.setVisible( false );
		}
	}
	//創(chuàng)建敵人坦克的方法
	public void  CreateETank() {
		if( m_nTotalETank <= 0 )
			return;
		int nRs = m_Random.nextInt() % 20;
		if( Math.abs(nRs) != 0 )
			return;
		for( int n = 0; n < m_eTank.length; n ++ ){
	    	if( m_eTank[n].isVisible() )
	    		continue;
	    	m_eTank[n].Start( n * 2 * 15 + 15 + 7, 15 + 7, 2, 1 );
	    	break;
		}
	}
	//創(chuàng)建子彈爆炸對(duì)象
	public void CreateExplosion( int nX, int nY ){
		for( int m = 0; m < m_aExplosion.length; m ++ ){
	    	if( m_aExplosion[m].isVisible() )
	    		continue;
	    	m_aExplosion[m].Start( nX, nY );
	    	break;
		}
	}
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合天天做天天综合| 午夜激情久久久| 蜜臀av在线播放一区二区三区| 精品国产网站在线观看| 色综合中文字幕国产| 国产最新精品免费| 亚洲国产日日夜夜| 国产精品水嫩水嫩| 99久久综合99久久综合网站| 日日夜夜精品视频免费| 亚洲欧洲精品成人久久奇米网| 欧美不卡视频一区| 欧美日韩色一区| 99久久综合精品| 国产91精品免费| 国产精品综合在线视频| 久久不见久久见免费视频7| 精品国产乱码久久| 91精品在线观看入口| 91成人国产精品| 蜜臀av性久久久久av蜜臀妖精| 亚洲精品国产一区二区精华液 | 色婷婷精品久久二区二区蜜臀av | 精品国产免费视频| 欧美电影一区二区三区| 91久久久免费一区二区| 91免费看片在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美三级三级三级爽爽爽| www.欧美.com| 成人免费视频免费观看| 一区二区三区四区亚洲| 欧美精品tushy高清| 欧美制服丝袜第一页| 久国产精品韩国三级视频| 欧美国产一区在线| 久久亚洲一级片| 欧美色精品在线视频| 久久99精品久久久久久国产越南| 国产精品久久久久久久岛一牛影视| 国产视频一区二区在线观看| 久久久一区二区| 国产午夜精品理论片a级大结局| 26uuu亚洲综合色欧美| 91影院在线观看| 一本高清dvd不卡在线观看| 色哟哟精品一区| 91久久香蕉国产日韩欧美9色| 捆绑变态av一区二区三区| 亚洲区小说区图片区qvod| 日韩美女在线视频| 91美女片黄在线观看91美女| av毛片久久久久**hd| 久久精品国产色蜜蜜麻豆| 九九热在线视频观看这里只有精品| 中文字幕一区二区在线播放| 亚洲欧洲日本在线| 夜夜嗨av一区二区三区| 久久一日本道色综合| 欧美精选一区二区| 日本道免费精品一区二区三区| 国产福利精品一区二区| 成人深夜在线观看| 91丨九色porny丨蝌蚪| 国产一级精品在线| aaa欧美日韩| 成人一区二区视频| 久久精品国产精品亚洲红杏| 高清视频一区二区| 激情文学综合网| av在线免费不卡| 欧美日韩国产精品成人| 精品不卡在线视频| 中文字幕综合网| 男人的天堂久久精品| 亚洲国产一区二区a毛片| 日韩电影一区二区三区| 国产成人精品www牛牛影视| 久久国产婷婷国产香蕉| 成人三级在线视频| 国产东北露脸精品视频| 精品亚洲欧美一区| 色94色欧美sute亚洲线路一ni| 成人午夜电影小说| 欧美日本视频在线| 中文字幕的久久| 日韩电影在线免费观看| 99精品国产一区二区三区不卡| 国产伦精品一区二区三区在线观看| 成人激情文学综合网| 3atv一区二区三区| 欧美精品黑人性xxxx| 欧美日韩一区二区欧美激情 | 欧美久久一二区| 中文一区一区三区高中清不卡| 亚洲国产日韩综合久久精品| 亚洲国产日韩在线一区模特 | 国产成人三级在线观看| 4438x亚洲最大成人网| 亚洲欧美日韩精品久久久久| 亚洲视频网在线直播| 久久精品国产99久久6| 色综合久久中文综合久久97| 欧美唯美清纯偷拍| 91精品欧美福利在线观看| 欧美一区二区视频免费观看| 日韩欧美国产麻豆| 亚洲综合久久久久| 美女一区二区三区在线观看| 日本韩国欧美国产| 综合在线观看色| 国产伦精品一区二区三区免费迷| 成人性视频免费网站| 久久一区二区三区四区| 日韩1区2区3区| 欧美伦理电影网| 精品国产百合女同互慰| 国产精品午夜电影| 精品亚洲国内自在自线福利| 豆国产96在线|亚洲| 精品国产乱码久久久久久影片| 无码av免费一区二区三区试看 | 欧美日韩免费观看一区三区| 欧美精品xxxxbbbb| 国产亚洲女人久久久久毛片| 麻豆传媒一区二区三区| 67194成人在线观看| 午夜视频在线观看一区二区三区| 色94色欧美sute亚洲线路二| 日韩欧美成人一区二区| 国产精品久久三区| 成人一区在线看| 欧美久久一区二区| 午夜精品久久久久久久久| 欧美三级电影在线看| 一区二区三区不卡视频| 色婷婷综合五月| 精品剧情在线观看| 国产一区久久久| 欧美亚洲国产一区二区三区va | 久久精品视频一区二区三区| 狠狠色丁香婷综合久久| 精品电影一区二区| 亚洲大片精品永久免费| 6080国产精品一区二区| 国产精品女主播av| 成人黄页在线观看| 亚洲视频在线观看三级| 国产伦精品一区二区三区免费迷| 在线观看日韩一区| 一级做a爱片久久| 欧美日韩一区二区三区高清| 国产精品国产三级国产普通话99 | 国产专区综合网| 色欲综合视频天天天| 久久久久高清精品| 大桥未久av一区二区三区中文| 欧美精品乱码久久久久久| 亚洲成人一区在线| 2022国产精品视频| 不卡在线观看av| 亚洲影院理伦片| 日韩午夜电影av| 成人动漫在线一区| 亚洲国产视频网站| 91在线看国产| 中文子幕无线码一区tr| 97精品超碰一区二区三区| 亚洲va欧美va人人爽| 97精品国产97久久久久久久久久久久| 久久久久国产免费免费| 极品少妇一区二区三区精品视频| 久久精品欧美一区二区三区不卡 | 国产**成人网毛片九色| 亚洲精品国产无天堂网2021| aaa欧美日韩| 国产精品久久久久久久浪潮网站| 欧美影视一区在线| 亚洲欧美乱综合| 欧美一区二区三区播放老司机| 亚洲成在人线免费| 欧美亚洲综合一区| 亚洲色图在线播放| 91精品国产91综合久久蜜臀| 国产成人一级电影| 国产精品免费视频一区| 91精品一区二区三区在线观看| 午夜精品国产更新| 国产精品美女www爽爽爽| www.欧美精品一二区| 国产精品美女久久久久aⅴ| 99精品欧美一区二区三区综合在线| 午夜伦理一区二区| 国产精品久久久久久久午夜片| 成人黄页毛片网站| 亚洲裸体xxx| 欧美日韩中文字幕一区二区| 国产制服丝袜一区| 日韩中文字幕av电影| 一区二区三区日韩欧美|