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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gamescreen.java

?? 《j2me手機程序eclipse開發基礎》源代碼
?? JAVA
字號:
/*
 * 創建日期 2005-6-30
 *
 * TODO 要更改此生成的文件的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */
package game;

import java.util.Random;
import java.util.Timer;

import javax.microedition.lcdui.Canvas;
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.midlet.MIDletStateChangeException;

/**
 * @author Administrator
 *
 * TODO 要更改此生成的類型注釋的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */
public class GameScreen extends Canvas implements CommandListener {
	private final RussiaBoxMIDlet midlet;
	private final Command exitCommand;
	private final Command newGameCommand;
	public Graphics graph;
	private Random rand = new Random();
	public Timer timer = new Timer();
	public Square sq = new Square();
	public boolean isGameOver = true;


	public int screenWidth, screenHeight;
	public boolean isNextOne = true;	
	public int SQUARE_AMOUNT = 8;
	public int UNIT_SIZE = 15;
	public int xFirstUnitPos = 4;
	private int i = 0;
	private int j = 0;
	public Image fangkuai;
	public int Score = 0;


	public boolean IsFilled[][] = new boolean[SQUARE_AMOUNT][SQUARE_AMOUNT];
	private static final int WHITE = 0x00FFFFFF;
	
	/**
	 * 
	 */
	public GameScreen(RussiaBoxMIDlet midlet) {
		this.midlet = midlet;
		
		// 獲取屏幕大小
		screenWidth = getWidth();
		screenHeight = getHeight();
		
		// 添加屏幕命令
		exitCommand = new Command("退出", Command.EXIT, 1);
		newGameCommand = new Command("開始", Command.SCREEN, 2);
		addCommand(exitCommand);
		addCommand(newGameCommand);
		
		// 偵聽命令按鍵
		setCommandListener(this);

		// 裝載位圖片段
		try 
		{
			fangkuai = Image.createImage("/fangkuai.png");
		}
		catch (Exception e)	{}
	}
	
	/* (非 Javadoc)
	 * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command, javax.microedition.lcdui.Displayable)
	 */
	public void commandAction(Command arg0, Displayable arg1) {
		if (arg0 == exitCommand) {
			timer.cancel();
			isGameOver = true;
			
			try {
				// 退出
				midlet.quit();
			} catch (MIDletStateChangeException e) {
				// TODO 自動生成 catch 塊
				e.printStackTrace();
			}
		}
		else if (arg0 == newGameCommand) {
			// 開始游戲
			initialize();
		}
	}
	
	private void initialize() {
		// 初始化數據	
		for (i = 0; i < SQUARE_AMOUNT; i++)
		{
			for (j = 0; j < SQUARE_AMOUNT; j++)
				IsFilled[j][i] = false;
		}
		
		for (i = 0; i < 4; i++)
		{
			sq.ps_x[i] = sq.ps_y[i]= 0;
			sq.type = 0;
		}
		Score = 0;

		// 白色清空畫布 
		graph.setColor(WHITE);
		graph.fillRect(0, 0, screenWidth, screenHeight);

		// 重繪屏幕
		isGameOver = false;
		isNextOne = true;
		repaint();	
		
	}
	
	public void paint(Graphics g) {
		graph = g;
		if (isGameOver == true)
			return;

		// 重繪
		if (isNextOne == true)
			OnNewSquare();
	}
	
	public void erasebackground(){
		// 白色清空畫布 
		graph.setColor(WHITE);

		// 擦除上次停留位置
		for (i = 0; i < 4; i++)
		{
			if (sq.ps_x[i] >= 0 && sq.ps_y[i] >= 0)
				graph.fillRect(sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, UNIT_SIZE, UNIT_SIZE);
		}
	}
	
	// 生成方塊
	public void OnNewSquare(){
		int id = (int)(rand.nextLong());
		id = (int)(id % 6);
		switch (id){
			/* @@@@ */
			case 0:		
				sq.type = 0;
				for (i = 0; i < 4; i++)
				{
					sq.ps_x[i] = xFirstUnitPos + i;
					sq.ps_y[i] = 0;
					graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);	
				}
				break;

			/* @
			   @@@ */
			case 1:
				sq.type = 1;
				for (i = 0; i < 4; i++)
				{
					if (i == 0)
					{
						// @
						sq.ps_x[i] = xFirstUnitPos;
						sq.ps_y[i] = 0;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					} 
					else
					{
						// @@@
						sq.ps_x[i] = xFirstUnitPos + i - 1;
						sq.ps_y[i] = 1;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
				}	
				break;

				/* @@
				   @@ */
			case 2:
				sq.type = 2;
				for (i = 0; i < 4; i++)
				{
					if (i == 0 || i == 1)
					{
						// @@
						sq.ps_x[i] = xFirstUnitPos + i;
						sq.ps_y[i] = 0;
						graph.drawImage(fangkuai,sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
					else 
					{
						// @@
						sq.ps_x[i] = xFirstUnitPos + i - 2;
						sq.ps_y[i] = 1;
						graph.drawImage(fangkuai,sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
				}
				break;

			/* @
			  @@@*/
			case 3:
				sq.type = 3;
				for (i = 0; i < 4; i++)
				{
					if (i == 0)
					{
						//  @
						sq.ps_x[i] = xFirstUnitPos + 1;
						sq.ps_y[i] = 0;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
					else 
					{
						// @@@
						sq.ps_x[i] = xFirstUnitPos + i - 1;
						sq.ps_y[i] = 1;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
				}
				break;

			/* @@    
			    @@ */
			case 4:
				sq.type = 4;
				for (i = 0; i < 4; i++)
				{
					if (i == 0 || i == 1)
					{
						// @@
						sq.ps_x[i] = xFirstUnitPos + i;
						sq.ps_y[i] = 0;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
					else 
					{
						//  @@
						sq.ps_x[i] = xFirstUnitPos + i - 1;
						sq.ps_y[i] = 1;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
				}
				break;
		
			/* @@   
			  @@	*/
			default:
				sq.type = 5;
				for (i = 0;i < 4; i++)
				{
					if (i == 0 || i == 1)
					{
						//  @@
						sq.ps_x[i] = xFirstUnitPos + i + 1;
						sq.ps_y[i] = 0;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
					else 
					{
						// @@
						sq.ps_x[i] = xFirstUnitPos + i - 2;
						sq.ps_y[i] = 1;
						graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
					}
				}
				break;
		}

		// 開啟定時器
		Thinking thinking = new Thinking(this);
		timer.schedule(thinking, 500, 500);
	}
	
	protected void keyPressed(int keyCode) {
		if (isGameOver == true)
			return;
			
		// 得到按鍵動作
		int gameAction = getGameAction(keyCode);
		switch (gameAction) {
		// 右移
		case RIGHT:		
			
			// 進行右移可移性檢測 
			for (i = 0; i < 4; i++)
			{
				if (sq.ps_x[i] + 1 > SQUARE_AMOUNT - 1 || IsFilled[sq.ps_x[i] + 1][sq.ps_y[i]] == true)
					return;
			}
			
			// 擦除背景
			erasebackground();
			
			// 在新位置進行繪制
			for (i = 0; i < 4; i++)
			{
				sq.ps_x[i] = sq.ps_x[i] + 1;
				graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
			}
			break;

		// 左移
		case LEFT:	
			
			// 進行左移可移性檢測 
			for (i = 0; i < 4; i++)
			{
				if (sq.ps_x[i] - 1 < 0 || IsFilled[sq.ps_x[i] - 1][sq.ps_y[i]] == true)
					return; 				
			}

			// 擦除背景
			erasebackground();

			// 在新位置進行繪制
			for (i = 0;i < 4; i++)
			{
				sq.ps_x[i] = sq.ps_x[i] - 1;
				graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
			}
			break;

		// 方塊變形	
		case UP:	
			for (i = 0; i < 4; i++)
			{
				if (sq.ps_y[i] < 2)
					return;
			}
			
			// 擦除背景
			erasebackground();
		
			// 確定每個方塊的中軸方向
			int shaft = 0;
			switch(sq.type)
			{
				/* @#@@ */
				case 0:
					shaft = 1;	
					break;

				/* @
			       #@@ */
				case 1:
					shaft = 1;
					break;

				/* @@
			       @@ */
				case 2:
					return;

				/* @
			      @#@*/
				case 3:
					shaft = 2;
					break;

				/* @@
			        #@ */
				case 4:
					shaft = 2;
					break;

				/* #@
			      @@ */
				case 5:
					shaft = 0;
					break;
			}
			
			// 保存每個unit和中心軸模塊的距離,以判斷所在象限和區域
			int offset[][] = new int[4][2];
			for (i = 0; i < 4; i++)
			{
				offset[i][0] = sq.ps_x[i] - sq.ps_x[shaft];
				offset[i][1] = sq.ps_y[i] - sq.ps_y[shaft];
			}
				
			Square  sqTemp = sq;
			int tempx, tempy;
 			for (i = 0; i < 4; i++)
			{
 				// x軸正半軸
				if (offset[i][0] > 0 && offset[i][1] == 0)
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = 0 + sq.ps_x[shaft];
					sqTemp.ps_y[i] = tempx + sq.ps_y[shaft];
					
					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
				else if (offset[i][0] > 0 && offset[i][1] > 0 ) // 第一象限
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = -tempx + sq.ps_x[shaft];
					sqTemp.ps_y[i] = tempy + sq.ps_y[shaft];
					
					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
				else if (offset[i][0] == 0 && offset[i][1] > 0 ) // y軸正半軸
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = -tempy + sq.ps_x[shaft];
					sqTemp.ps_y[i] = 0 + sq.ps_y[shaft];

					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
				else if (offset[i][0] < 0 && offset[i][1] > 0 ) // 第二象限
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = tempx + sq.ps_x[shaft];
					sqTemp.ps_y[i] = -tempy + sq.ps_y[shaft];

					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
				else if (offset[i][0] < 0 && offset[i][1] == 0 ) // x軸負半軸
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = 0 + sq.ps_x[shaft];
					sqTemp.ps_y[i] = tempx + sq.ps_y[shaft];
						
					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1 )
						return;
				}
				else if (offset[i][0] < 0 && offset[i][1] < 0 ) // 第三象限
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = -tempx + sq.ps_x[shaft];
					sqTemp.ps_y[i] = tempy + sq.ps_y[shaft];

					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
				else if (offset[i][0] == 0 && offset[i][1] < 0) // y軸負半軸
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = -tempy + sq.ps_x[shaft];
					sqTemp.ps_y[i] = 0 + sq.ps_y[shaft];

					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
				else if (offset[i][0] > 0 && offset[i][1] < 0) // 第四象限
				{
					tempx = offset[i][0];
					tempy = offset[i][1]; 
					sqTemp.ps_x[i] = tempx + sq.ps_x[shaft];
					sqTemp.ps_y[i] = -tempy + sq.ps_y[shaft];

					// 檢測是否越界或是與已有方塊沖突
					if (IsFilled[sqTemp.ps_x[i]][sqTemp.ps_y[i]] ||
						sqTemp.ps_x[i] < 0 || sqTemp.ps_x[i] > SQUARE_AMOUNT - 1 ||
						sqTemp.ps_y[i] < 0 || sqTemp.ps_y[i] > SQUARE_AMOUNT - 1)
						return;
				}
			}
			sq = sqTemp;

			// 重新移動方塊
			for (i = 0; i < 4; i++)
				graph.drawImage(fangkuai, sq.ps_x[i] * UNIT_SIZE, sq.ps_y[i] * UNIT_SIZE, 0);
			break;
		default:    
			break;
		}

		isNextOne = false;
		repaint();
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久国产最好的精华液| 一区二区高清视频在线观看| 婷婷综合在线观看| 精品视频在线免费看| 亚洲综合激情网| 欧美日韩一区久久| 日本最新不卡在线| 精品国产免费人成电影在线观看四季 | 久久99精品国产.久久久久久| 日韩欧美的一区| 国产精品一区二区在线观看网站| 久久精品亚洲乱码伦伦中文 | 性感美女久久精品| 91精品国产入口| 国产精品影视天天线| 中文字幕永久在线不卡| 91老司机福利 在线| 亚洲超碰精品一区二区| 日韩欧美亚洲国产另类| 国产成都精品91一区二区三| 亚洲激情在线激情| 日韩女优电影在线观看| 成人永久看片免费视频天堂| 亚洲综合av网| 精品国产一区久久| 日本韩国一区二区三区视频| 美女被吸乳得到大胸91| 国产精品欧美久久久久无广告 | 不卡av在线网| 日韩精品亚洲一区| 国产精品色哟哟| 91精品蜜臀在线一区尤物| 粉嫩蜜臀av国产精品网站| 石原莉奈在线亚洲二区| 国产精品免费免费| 日韩一区二区中文字幕| 成人av网站在线观看| 日本vs亚洲vs韩国一区三区| 国产精品美女久久久久久久久| 欧美日韩一区二区三区四区五区 | 久久人人超碰精品| 日本高清不卡视频| 国产成人av资源| 免费观看91视频大全| 亚洲精品国产无天堂网2021| 久久久精品免费免费| 欧美日韩亚洲丝袜制服| 成人激情图片网| 韩国在线一区二区| 视频一区二区三区在线| 亚洲欧美成aⅴ人在线观看 | 制服丝袜亚洲精品中文字幕| 97se亚洲国产综合自在线观| 狠狠狠色丁香婷婷综合激情| 天天综合日日夜夜精品| 一区二区三区国产| 国产精品三级久久久久三级| 欧美精品一区二区三区四区 | 欧美最猛性xxxxx直播| 成人免费看片app下载| 极品尤物av久久免费看| 日韩电影在线观看网站| 亚洲高清中文字幕| 亚洲午夜私人影院| 1区2区3区国产精品| 国产精品理伦片| 国产视频一区二区三区在线观看| 欧美浪妇xxxx高跟鞋交| 欧美制服丝袜第一页| 色综合咪咪久久| 成人在线综合网| 国产suv精品一区二区6| 国产毛片精品视频| 国内外成人在线视频| 久久精品久久久精品美女| 日韩激情中文字幕| 婷婷久久综合九色综合绿巨人| 亚洲午夜日本在线观看| 一级日本不卡的影视| 一区二区三区日本| 一区二区三区国产豹纹内裤在线| 亚洲综合免费观看高清在线观看| 亚洲欧美日韩久久| 亚洲一二三四区不卡| 亚洲成人动漫在线观看| 国产精品综合在线视频| 成人免费福利片| 日本韩国一区二区三区视频| 欧美在线观看视频一区二区三区| 欧美色欧美亚洲另类二区| 欧美男男青年gay1069videost | 欧美日韩国产免费一区二区| 777午夜精品视频在线播放| 日韩三级中文字幕| 欧美激情在线一区二区三区| 中文字幕在线观看一区二区| 亚洲永久精品国产| 日本最新不卡在线| 丁香婷婷深情五月亚洲| 色综合天天在线| 制服丝袜激情欧洲亚洲| 国产日韩精品久久久| 亚洲人快播电影网| 日韩国产高清在线| 国产在线精品一区二区三区不卡| 成人avav影音| 欧美日韩在线不卡| 国产亚洲污的网站| 一区二区三区日本| 国产精品一区二区在线播放| www.欧美亚洲| 91麻豆精品国产91久久久久久久久 | 一本色道**综合亚洲精品蜜桃冫| 69堂亚洲精品首页| 亚洲国产精品二十页| 洋洋av久久久久久久一区| 狠狠色综合日日| 一本到高清视频免费精品| 日韩欧美一卡二卡| 亚洲激情欧美激情| 国产一区二区伦理片| 欧美三级日韩三级| 欧美国产综合一区二区| 亚洲6080在线| 成人avav影音| 精品成a人在线观看| 亚洲永久精品大片| 成人av影视在线观看| 欧美成人乱码一区二区三区| 一区二区三区国产精品| 国产成人av福利| 欧美精品一二三区| 一区二区三区免费观看| 国产乱色国产精品免费视频| 91美女福利视频| 亚洲一区在线观看免费观看电影高清| 国产精一区二区三区| 日韩一区二区三区四区五区六区 | 亚洲在线视频网站| 成人av电影免费观看| 久久一区二区视频| 日韩精品午夜视频| 在线视频你懂得一区| 国产精品无圣光一区二区| 狂野欧美性猛交blacked| 欧美日韩一区二区欧美激情| 国产精品的网站| 国产成人在线影院| 久久理论电影网| 久久99国产精品麻豆| 91 com成人网| 亚洲成人一二三| 欧美丝袜自拍制服另类| 国产精品黄色在线观看| 懂色av中文一区二区三区| 精品对白一区国产伦| 麻豆精品视频在线观看免费| 欧美另类变人与禽xxxxx| 亚洲123区在线观看| 欧美午夜不卡在线观看免费| 亚洲美女偷拍久久| 99v久久综合狠狠综合久久| 国产精品午夜在线| 国产成人在线网站| 久久综合九色综合97婷婷女人| 奇米影视7777精品一区二区| 日韩一级黄色片| 麻豆成人91精品二区三区| 日韩视频一区在线观看| 久久国产欧美日韩精品| 欧美电影免费观看高清完整版| 毛片不卡一区二区| 欧美精品一区二区三区蜜桃| 看电影不卡的网站| 国产欧美一区二区精品仙草咪| 国产另类ts人妖一区二区| 久久久亚洲国产美女国产盗摄| 国产在线日韩欧美| 中文字幕精品一区| 色婷婷av一区二区三区软件| 一区二区三区免费网站| 欧美喷潮久久久xxxxx| 精品一区二区三区在线播放视频| 2022国产精品视频| caoporen国产精品视频| 中文字幕在线免费不卡| 欧美性猛交xxxx黑人交| 日韩中文字幕亚洲一区二区va在线| 91麻豆精品91久久久久同性| 精品亚洲国内自在自线福利| 日本一二三不卡| 在线亚洲免费视频| 麻豆精品新av中文字幕| 国产精品久久久久久久久免费相片 | 色综合久久99| 日韩电影在线观看网站| 国产日韩v精品一区二区| 色综合中文综合网| 国产午夜精品理论片a级大结局| 成人免费高清视频在线观看|