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

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

?? tetrisgamecanvas.java

?? 我做的手機游戲。有關寵物的
?? JAVA
字號:
//totalscore   得分
import javax.microedition.lcdui.*;

class TetrisGameCanvas extends Canvas implements Runnable,CommandListener {

	Thread t;
	private Command goHome;
	private PetMIDlet midlet;
	private Command startCommand = new Command("Start",Command.SCREEN,1);
	private Command pauseCommand = new Command("Pause", Command.SCREEN, 1);

	private static final int CELLNUM = 7;//方塊類型總數

	private static final int WIDTH_NUMBER = 10; //寬10方格

	private static final int HEIGHT_NUMBER = 16;//高16方格

	private static final int WIDTH = 100; //寬10方格

	private static final int HEIGHT = 160;//高16方格

	private static final int GRIDWIDTH = 10;

	private static final int bx = 10;

	private static final int by = 10;

	private int grid[][];

	private int row = 0, column = 0;//坐標從0開始(row,column) =( 行,列)

	private boolean ifhaddown = false;//判斷方塊是否已經不在下落,false表示不在下落

	private int[][] getboardcell = new int[4][4];//存儲獲得當前得方塊

	private boolean pause = false;//是否暫停游戲

	private boolean begin = false;//是否開始游戲

	private int cellstyle;//方塊類型

	private int totalscore; //得分

	private String text = "得分:";

	Board board = new Board(WIDTH, HEIGHT, GRIDWIDTH);

	BoardCells bcell = new BoardCells();

	private Image offScreenImage;

	private Graphics offScreenGraphics;

	TetrisGameCanvas(PetMIDlet midlet) {
		
		this.midlet = midlet;
		goHome=new Command("我要回家",Command.BACK,1);
		addCommand(goHome);
		addCommand(startCommand);
		addCommand(pauseCommand);
		
		setCommandListener(this);

		t = new Thread(this);
		t.start();

		//		初始化離屏緩沖區

		if (offScreenImage == null) {
			offScreenImage = Image.createImage(this.getWidth(), this
					.getHeight());
			offScreenGraphics = offScreenImage.getGraphics();
		}
		//定義方格
		grid = new int[HEIGHT_NUMBER][WIDTH_NUMBER];
		clearBoard();
		

	}

	protected void start() {
		pause = false;
	}

	protected void pause() {
		pause = true;
	}

	private void clearBoard() {
		int i, j;
		//初始化方塊是否顯示
		for (i = 0; i <= HEIGHT_NUMBER - 1; i++)
			for (j = 0; j <= WIDTH_NUMBER - 1; j++) {
				grid[i][j] = 0;
			}
	}

	//判斷方塊占用得行數和列數 ,即存在1的行數和列數
	private int[] GetRowColumn(int x, int y, int[][] bcell) {
		int[] rtn = new int[2];
		int i, j, getx = 4, gety = 4;
		boolean isAllZero = false;
		//判斷方塊占用得行數和列數
		for (i = 4; i >= 1; i--) {
			for (j = 1; j <= 4; j++) {
				if (bcell[j - 1][i - 1] == 0) {
					isAllZero = true;
				} else {
					isAllZero = false;
					break;
				}

			}
			if (isAllZero == true)
				gety = gety - 1;
			isAllZero = false;
		}
		isAllZero = false;
		for (i = 4; i >= 1; i--) {
			for (j = 1; j <= 4; j++) {
				if (bcell[i - 1][j - 1] == 0) {
					isAllZero = true;
				} else {
					isAllZero = false;
					break;
				}

			}
			if (isAllZero == true)
				getx = getx - 1;
			isAllZero = false;
		}
		rtn[0] = getx;
		rtn[1] = gety;
		return rtn;
	}

	//是否可以移動,翻轉等;
	private boolean Movable(int x, int y, int[][] bcell) {
		int i, j, getx, gety;
		int[] rtn = new int[2];
		//獲得方塊占用的行數和列數
		rtn = GetRowColumn(x, y, bcell);
		getx = rtn[0];
		gety = rtn[1];
		//如果越界,返回不能移動
		if ((x + getx > HEIGHT_NUMBER) || (y + gety > 10) || (x < 0) || (y < 0)) {
			return false;
		}
		//是否與以前下落得方塊碰撞
		for (i = 1; i <= getx; i++)
			for (j = 1; j <= gety; j++) {
				if (grid[x + i - 1][y + j - 1] * bcell[i - 1][j - 1] == 1)
					return false;
			}
		return true;
	}

	//在不會沖突得時候,拷貝單元
	private void copycell(int x, int y, int[][] bcell) {
		int i, j, getx, gety;
		int[] rtn = new int[2];
		//獲得某一形狀的方塊的行數和列數
		rtn = GetRowColumn(x, y, bcell);
		getx = rtn[0];
		gety = rtn[1];
		for (i = 1; i <= getx; i++)
			for (j = 1; j <= gety; j++) {
				if (bcell[i - 1][j - 1] == 1)
					grid[x + i - 1][y + j - 1] = 1;
			}

	}

	//清除單元,也就是恢復拷貝單元 前的操作
	private void clearcell(int x, int y, int[][] bcell) {
		int i, j, getx, gety;
		int[] rtn = new int[2];
		//獲得某一形狀的方塊的行數和列數
		rtn = GetRowColumn(x, y, bcell);
		getx = rtn[0];
		gety = rtn[1];
		for (i = 1; i <= getx; i++)
			for (j = 1; j <= gety; j++) {
				if (bcell[i - 1][j - 1] == 1)
					grid[x + i - 1][y + j - 1] = 0;
			}

	}

	//清除沒有空白的一行方塊 ,并把上方的方塊下移
	//可以消行,返回true
	private boolean ClearLine() {
		boolean isLine = false, hasline = false;
		int i, j, m, n;
		for (i = HEIGHT_NUMBER - 1; i >= 4; i--) {
			for (j = 0; j <= WIDTH_NUMBER - 1; j++) {
				if (grid[i][j] == 0) {
					isLine = false;
					break;
				} else {
					isLine = true;
				}
			}
			//如果是整行,移動方塊
			if (isLine == true) {
				for (m = i; m >= 4; m--)
					for (n = 0; n <= WIDTH_NUMBER - 1; n++) {
						grid[m][n] = grid[m - 1][n];
					}
				i = i + 1;
				totalscore = totalscore + 1;
				//顯示當前得分
				text = "得分:" + String.valueOf(totalscore);
				hasline = true;
			}
		}
		return hasline;
	}

	private boolean GameOver() {
		boolean gameover = false;
		int i, j;
		for (i = HEIGHT_NUMBER - 1; i >= 0; i--) {
			for (j = 0; j <= WIDTH_NUMBER - 1; j++) {
				if (grid[i][j] == 1) {
					gameover = false;
					break;
				} else {
					gameover = true;
				}
			}
			//如果是整行,移動方塊
			if (gameover == true) {
				if (i <= 1)
					return true;
				else
					return false;
			}
		}
		return false;
	}

	//畫3維方格
	public static void drawBrick(int px, int py, int width, Graphics g) {
		//畫白邊
		g.setColor(255, 255, 255);
		g.fillRect(px, py, 1, width);
		g.fillRect(px, py, width, 1);
		//畫中心
		int color = 0x00FFFF00;
		g.setColor(color);
		g.fillRect(px + 1, py + 1, width - 1, width - 1);
		//畫灰邊
		g.setColor(0x00c0c0c0);
		g.fillRect(px + width - 1, py + 1, 1, width - 1);
		g.fillRect(px + 1, py + width - 1, width - 2, 1);
	}

	protected void paint(Graphics g) {
		offScreenGraphics.setColor(0x000000);
		offScreenGraphics.fillRect(0, 0, this.getWidth(), this.getHeight());

		board.DrawBoard(offScreenGraphics, bx, by, false);
		offScreenGraphics.setColor(0x00FF00FF);

		offScreenGraphics.setColor(0x00ffff00);
		//繪制提示信息:
		offScreenGraphics.drawString("按#新游戲", bx + WIDTH + 10, by, Graphics.TOP
				| Graphics.LEFT);
		//繪制得分信息:
		offScreenGraphics.drawString(text, bx + WIDTH + 10, by + 20,
				Graphics.TOP | Graphics.LEFT);

		int i, j;
		for (i = 0; i < HEIGHT_NUMBER; i++)
			for (j = 0; j < WIDTH_NUMBER; j++) {
				if (grid[i][j] == 1) {

					drawBrick(bx + j * GRIDWIDTH, by + i * GRIDWIDTH,
							GRIDWIDTH, offScreenGraphics);
				}
			}
		g.drawImage(offScreenImage, 0, 0, Graphics.TOP | Graphics.LEFT);
	}

	public void run() {

		while (true) {

			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				System.out.println("sleep error : " + e.getMessage());
			}
			if (begin = true && pause == false) {
				playGame();
			}

		}

	}

	protected synchronized void keyRepeated(int keyCode) {
		if (pause == true)
			return;

		int action = getGameAction(keyCode);
		if (action == Canvas.DOWN) {
			clearcell(row, column, getboardcell);
			if (Movable(row + 1, column, getboardcell)) {

				row = row + 1;
				copycell(row, column, getboardcell);
				repaint();

			} else {
				copycell(row, column, getboardcell);
			}
		}

	}

	protected synchronized void keyPressed(int keyCode) {
		//如果游戲暫停,則按鍵無效
		if (pause == true)
			return;

		int action = getGameAction(keyCode);

		switch (action) {
		case Canvas.LEFT:

			/* 左移 */
			clearcell(row, column, getboardcell);
			if ((Movable(row, column - 1, getboardcell)) && (ifhaddown == true)) {

				column = column - 1;
				copycell(row, column, getboardcell);
				repaint();

			} else {
				copycell(row, column, getboardcell);
			}
			break;
		case Canvas.RIGHT: /* 右移 */
			clearcell(row, column, getboardcell);
			if ((Movable(row, column + 1, getboardcell)) && (ifhaddown == true)) {

				column = column + 1;
				copycell(row, column, getboardcell);
				repaint();

			} else {
				copycell(row, column, getboardcell);
			}

			break;
		case Canvas.UP: /* 下墜塊變化 */
			clearcell(row, column, getboardcell);
			if ((Movable(row, column, bcell
					.GetWorkcell((cellstyle + 1) % 4 + 1)))
					&& (ifhaddown == true)) {

				cellstyle = (cellstyle + 1) % 4;
				getboardcell = bcell.GetWorkcell(cellstyle + 1);
				copycell(row, column, getboardcell);
				repaint();

			} else {
				copycell(row, column, getboardcell);
			}

			break;
		case Canvas.DOWN:/* 下移 */
			clearcell(row, column, getboardcell);
			if (Movable(row + 1, column, getboardcell)) {

				row = row + 1;
				copycell(row, column, getboardcell);
				repaint();

			} else {
				copycell(row, column, getboardcell);
			}
			break;
		case Canvas.FIRE: /* 下墜塊變化 */

			break;
		}

		if (keyCode == Canvas.KEY_POUND) {//開始新游戲
			clearBoard();
			repaint();
			ifhaddown = false;
			totalscore = 0;
			begin = true;

		}

	}

	protected void playGame() {
		int i = 0;
		int m, n;

		//判斷是否從新出現新的方塊
		if (ifhaddown == false) {
			row = 0;
			column = 4;
			ifhaddown = true;
			getboardcell = bcell.SetNewCells();
			cellstyle = bcell.GetNewCellCount();
			copycell(row, column, getboardcell);
			repaint();
			return;
		}

		clearcell(row, column, getboardcell);

		boolean ifmovable = Movable(row + 1, column, getboardcell);
		if (ifmovable == true) //如果能繼續下落
		{
			row++;
			copycell(row, column, getboardcell);
			repaint();
		} else {
			copycell(row, column, getboardcell);
			ifhaddown = false;
			//如果可以消行
			if (ClearLine()) {
				repaint();
			}
		}

		if ((GameOver() == true) && (ifhaddown == false)) {
			begin = false;
			//note.setText("游戲 結束! 按S重新開始游戲");
			//timer.stop();
			return;
		}
	}

	public void commandAction(Command c, Displayable d) {
		if(c==goHome){
			midlet.intoHomeCanvas();
		}
		
		if (c ==startCommand) {	
			addCommand(pauseCommand);
			removeCommand(startCommand);
			start();
			
			
		}
		if (c == pauseCommand) {		
			removeCommand(pauseCommand);
			addCommand(startCommand);
			
			pause();
			
			
		}
		
		
	}

	
	
	
	
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91美女片黄在线| 久久理论电影网| 欧美videos大乳护士334| 国产欧美在线观看一区| 亚洲午夜精品17c| 波多野结衣的一区二区三区| 精品国产成人系列| 亚洲国产综合91精品麻豆| 国产成人精品一区二区三区四区 | 欧洲视频一区二区| 久久免费看少妇高潮| 日韩国产精品久久久| 色综合久久久久综合体| 国产精品视频看| 国产一区二区三区av电影| 日韩一区二区三区四区| 亚洲大型综合色站| 欧美日韩在线综合| 亚洲国产欧美另类丝袜| 91一区二区在线| 国产精品免费视频一区| 91在线国产福利| 成人美女视频在线看| 精品国产乱码久久| 国产成人免费视频一区| 成人sese在线| 亚洲人一二三区| 欧美亚洲动漫精品| 亚洲午夜视频在线观看| 中文字幕一区二区三区四区| 久久久99久久| 久久综合色8888| 久久久久国色av免费看影院| 久久综合久久99| 久久久美女毛片| 亚洲柠檬福利资源导航| 亚洲免费伊人电影| 麻豆精品视频在线观看| 99精品1区2区| 精品国产制服丝袜高跟| 青青草原综合久久大伊人精品 | 日韩女优av电影| 2024国产精品视频| 亚洲视频资源在线| 日韩av电影免费观看高清完整版| 国产aⅴ综合色| 26uuu久久综合| 国产欧美日本一区视频| 亚洲黄色性网站| 精品一区二区三区在线播放| eeuss影院一区二区三区| 欧美自拍丝袜亚洲| 中文字幕一区二区三中文字幕| 亚洲精品乱码久久久久久久久 | 日韩av在线免费观看不卡| 黄一区二区三区| 日韩色视频在线观看| 午夜欧美电影在线观看| 日精品一区二区| 日韩电影免费在线观看网站| 毛片一区二区三区| 91免费视频网| 国产精品二区一区二区aⅴ污介绍| 午夜av一区二区三区| 在线免费亚洲电影| 亚洲天堂成人在线观看| 9久草视频在线视频精品| 色综合久久天天| 日本丰满少妇一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 狠狠色丁香婷综合久久| 91精品国产欧美日韩| 亚洲狠狠爱一区二区三区| 欧美综合视频在线观看| 极品尤物av久久免费看| 亚洲品质自拍视频网站| 2021中文字幕一区亚洲| proumb性欧美在线观看| 石原莉奈一区二区三区在线观看 | 日韩欧美一二区| 在线视频国内自拍亚洲视频| 老司机一区二区| 午夜久久福利影院| 亚洲欧美激情插| 综合激情网...| 亚洲人成影院在线观看| 欧美色综合网站| 色成人在线视频| av不卡免费电影| av在线不卡观看免费观看| 国产a区久久久| 国产不卡视频在线观看| 国产在线精品免费| 国产精品一区免费视频| 黄色成人免费在线| 天堂久久一区二区三区| 一区二区三区精密机械公司| 久久久亚洲精华液精华液精华液 | 欧美性猛交xxxxxx富婆| 精久久久久久久久久久| 亚洲午夜电影在线| 亚洲伦理在线免费看| 最新国产成人在线观看| 国产精品黄色在线观看| 欧美成人三级在线| 久久久久国产精品麻豆| 亚洲免费观看高清在线观看| 久久老女人爱爱| 久久久青草青青国产亚洲免观| 91免费精品国自产拍在线不卡| 日日骚欧美日韩| 首页亚洲欧美制服丝腿| 亚洲另类在线制服丝袜| 国产精品视频第一区| 日韩欧美国产系列| 2017欧美狠狠色| 亚洲激情一二三区| 午夜影院在线观看欧美| 麻豆精品一区二区| 成人夜色视频网站在线观看| 成人高清免费在线播放| 欧美体内she精高潮| 777色狠狠一区二区三区| 日韩精品在线看片z| 国产精品不卡在线| 亚洲国产欧美在线人成| 久久精品亚洲精品国产欧美| 国产精品福利电影一区二区三区四区| 日韩精品久久久久久| 色哟哟在线观看一区二区三区| 欧美日韩国产综合视频在线观看| 99精品国产一区二区三区不卡| 欧美日韩一区视频| 亚洲天堂网中文字| 国模少妇一区二区三区| 69av一区二区三区| 一区二区三区日韩欧美精品| 国产乱码字幕精品高清av | 亚洲女人的天堂| 精品一区二区免费在线观看| 欧美日韩成人综合| 日韩视频免费直播| 国内一区二区在线| 国产精品福利av| 欧美一区二区在线视频| 国内精品免费**视频| 国产精品电影院| 欧美日韩精品二区第二页| 蜜臀av性久久久久av蜜臀妖精| 亚洲精品一区二区在线观看| 国产jizzjizz一区二区| 五月婷婷久久丁香| 国产亚洲一区二区三区| 欧美亚洲图片小说| 国产91综合网| 免费成人在线视频观看| 欧美一区二区三区四区五区 | 亚洲精品视频观看| 色婷婷激情综合| 日韩激情中文字幕| 国产亚洲一区二区在线观看| 岛国精品在线播放| 一区二区欧美在线观看| 91精品国产欧美日韩| 国产精品一区在线观看乱码| 一区二区欧美在线观看| 国产日韩欧美一区二区三区综合| 91丨porny丨首页| 欧美国产日韩在线观看| 91在线视频官网| 国产精品1区2区| 狠狠色丁香久久婷婷综合_中| 亚洲www啪成人一区二区麻豆| 国产区在线观看成人精品| 国产福利精品一区| 国产精品午夜免费| 欧美日韩在线播放三区四区| 蜜桃视频在线观看一区| 国产日产欧美一区| 91麻豆精品国产无毒不卡在线观看| 美女任你摸久久| 亚洲在线观看免费| 国产午夜一区二区三区| 欧美剧情片在线观看| av网站免费线看精品| 国产精品一区在线观看你懂的| 亚洲成a人片在线观看中文| 日本一区二区久久| 精品国产污污免费网站入口| 欧美私模裸体表演在线观看| av资源站一区| 成人久久久精品乱码一区二区三区 | 欧美日韩国产大片| 在线免费观看一区| 色综合久久66| 91香蕉视频黄| 成人动漫一区二区| jlzzjlzz亚洲女人18| 国产精品一区二区三区乱码| 久久精品999|