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

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

?? blockcanvas.java

?? Block Application
?? JAVA
字號:
?import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import com.nec.media.AudioClip;
import com.nec.media.AudioListener;
import com.nec.media.Media;

/**
 * Canvas for block game
 */
public class BlockCanvas extends Canvas implements Runnable, AudioListener {

	// State-related
	private int state; // State
	private final int ACTIVE = 1;
	private final int GAME_OVER = 2;
	private final int CLEAR = 3;

	// Block-related
	private final int BLOCK_H = 7; // Number of horizontal blocks
	private final int BLOCK_V = 5; // Number of vertical blocks
	private final int BLOCK_WIDTH = getWidth() / BLOCK_H;
	private final int BLOCK_HEIGHT = BLOCK_WIDTH / 2;
	private boolean block[][] = new boolean[BLOCK_H][BLOCK_V];
	private int blockCount; // Number of blocks

	// Paddle-related (here referred to as a bar)
	private final int BAR_HEIGHT = 11;
	private final int BAR_WIDTH = 23;
	private int barX = 0;
	private int barY = getHeight() - BAR_HEIGHT;
	private int barMoveX = 0;
	// Ball-related
	private final int BALL_HEIGHT = 10;
	private final int BALL_WIDTH = 10;
	private int ballX;
	private int ballY;
	private int ballMoveX = 5;
	private int ballMoveY = 5;

	private Thread th;

	// Images
	private Image barImg = null;
	private Image ballImg = null;
	private Image blockImg = null;

	// Sounds
	AudioClip bgm; // Background music
	private AudioClip ballSound; // Sound of bouncing ball
	private AudioClip blockSound; // Sound of destroying blocks

	/********************************************
	 * Constructor
	 ********************************************/
	public BlockCanvas() {
		//Loads the audio data
		bgm = Media.getAudioClip("/bgm.mid");
		ballSound = Media.getAudioClip("/ball.mid");
		blockSound = Media.getAudioClip("/block.mid");
		bgm.addAudioListener(this);

		// Loads the images
		try {
			barImg = Image.createImage("/bar.png");
			ballImg = Image.createImage("/ball.png");
			blockImg = Image.createImage("/block.png");
		} catch (Exception e) {
			e.printStackTrace();
		}

		start(); // Starts the game
	}

	/**
	 * Starts the game
	 */
	public void start() {

		// Initializes the ball
		ballX = barX;
		ballY = barY - BALL_HEIGHT;

		// Initializes the blocks
		for (int i = 0; i < BLOCK_H; i++) {
			for (int j = 0; j < BLOCK_V; j++) {
				block[i][j] = true;
			}
		}
		blockCount = BLOCK_H * BLOCK_V;

		// Starts the game
		th = new Thread(this);
		th.start(); // Starts threads
		state = this.ACTIVE; // Sets the state to active
		bgm.play(); // Plays the background music
	}

	/**
	 * Drawing methods
	 */
	protected void paint(Graphics g) {
		// Clears the screen
		g.setColor(255, 255, 255);
		g.fillRect(0, 0, getWidth(), getHeight());

		if (state == ACTIVE) {
			// Block display
			g.setColor(0, 0, 255);
			for (int i = 0; i < BLOCK_H; i++) {
				for (int j = 0; j < BLOCK_V; j++) {
					if (block[i][j]) {
						g.drawImage(
							blockImg,
							i * BLOCK_WIDTH,
							(j + 1) * BLOCK_HEIGHT,
							Graphics.LEFT | Graphics.TOP);
					}
				}
			}

			// Displays the ball
			g.drawImage(ballImg, ballX, ballY, Graphics.LEFT | Graphics.TOP);
			// Displays the paddle
			g.drawImage(barImg, barX, barY, Graphics.LEFT | Graphics.TOP);
		} else if (state == CLEAR) { // Clears the level
			g.setColor(0, 0, 0);
			g.drawString(
				"GAME CLEAR!!!!",
				getWidth() / 2,
				getHeight() / 2,
				Graphics.HCENTER | Graphics.BASELINE);
		} else if (state == GAME_OVER) { // Ends the game
			g.setColor(0, 0, 0);
			g.drawString(
				"GAME OVER....",
				getWidth() / 2,
				getHeight() / 2,
				Graphics.HCENTER | Graphics.BASELINE);
		}
	}

	/**
	 * Operation executed by threads
	 */
	public void run() {

		while (state == ACTIVE) {

			moveBall(); // Moves the ball
			moveBar(); // Moves the paddle
			repaint(); // Repaints them

			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {
				e.printStackTrace();
				break;
			}
		}
	}

	/**
	 // Moves the ball
	 */
	public void moveBall() {
		ballX += ballMoveX;
		ballY += ballMoveY;

		// Bouncing
		// Bounces off a wall
		if (ballX < 0) {
			ballMoveX *= -1;
			ballX = 0;
			// Plays the sound effect
			ballSound.play();
		} else if (getWidth() < ballX + BALL_HEIGHT) {
			ballX = getWidth() - BALL_HEIGHT;
			ballMoveX *= -1;
			// Plays the sound effect
			ballSound.play();
		}
		if (ballY < 0) {
			ballMoveY *= -1;
			ballY = 0;
			// Plays the sound effect
			ballSound.play();
		} else if (ballY > getHeight()) { // If the ball passes through
			// The game ends
			state = GAME_OVER;
		}

		// Bounces off the paddle
		if (ballY + BALL_HEIGHT > barY
			&& ballX + BALL_WIDTH > barX
			&& ballX < barX + BAR_WIDTH) {
			ballMoveY *= -1;
			ballY = barY - BALL_HEIGHT;

			if (barMoveX < 0) {
				ballMoveX -= 2;
			} else if (barMoveX > 0) {
				ballMoveX += 2;
			}

			// Plays the sound effect
			ballSound.play();
		}
		// Hits a block and bounces off
		for (int i = 0; i < BLOCK_H; i++) {
			for (int j = 0; j < BLOCK_V; j++) {
				if (block[i][j]) {
					if (ballX + BALL_WIDTH > i * BLOCK_WIDTH
						&& ballX < (i + 1) * BLOCK_WIDTH) {
						if (ballY + BALL_HEIGHT > (j + 1) * BLOCK_HEIGHT
							&& ballY < (j + 2) * BLOCK_HEIGHT) {
							
							// Clears blocks
							block[i][j] = false;
							blockCount--;
							
							ballMoveY *= -1;
							
							// Plays the sound effect
							blockSound.play();

							// Checks whether or not the level has been cleared
							if (blockCount == 0) {
								state = CLEAR;
							}
						}
					}
				}
			}
		}

	}

	/**
	 * Moves the paddle
	 */
	public void moveBar() {
		barX += barMoveX;

		if (barX < 0) {
			barX = 0;
		} else if (barX + BAR_WIDTH > getWidth()) {
			barX = getWidth() - BAR_WIDTH;
		}
	}

	/*****************************************************
	 * Handling for audio events
	 *****************************************************/
	public void audioAction(AudioClip sound, int event, int param) {
		// Replays the loop
		if (sound == bgm) {
			if (event == AudioListener.AUDIO_COMPLETE) {
				bgm.play();
			}
		}
	}

	/*****************************************
	 * Key event handling
	 *****************************************/
	/**
	 * When a key is pressed
	 */
	protected void keyPressed(int key) {
		if (state == ACTIVE) {
			if (getGameAction(key) == Canvas.RIGHT) {
				barMoveX = 6;
			} else if (getGameAction(key) == Canvas.LEFT) {
				barMoveX = -6;
			}
			repaint();
		} else {
			// Restart
			this.start();
		}
	}

	/**
	 * When a key is released
	 */
	protected void keyReleased(int key) {
		barMoveX = 0;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情中文1区| 欧美电影精品一区二区| 有码一区二区三区| 欧美视频自拍偷拍| 久久激情五月婷婷| 国产色产综合产在线视频| a美女胸又www黄视频久久| 亚洲精品中文字幕乱码三区| 欧美三区在线观看| 美女视频一区二区三区| 久久久精品欧美丰满| 91色九色蝌蚪| 欧美bbbbb| 国产精品人妖ts系列视频| 欧美在线视频你懂得| 天堂va蜜桃一区二区三区漫画版| 国产成人精品亚洲777人妖 | 中文字幕一区三区| 99精品欧美一区二区三区综合在线| 久久综合色婷婷| 懂色av中文一区二区三区| 国产精品另类一区| 91在线观看美女| 亚洲国产成人porn| 日韩午夜在线影院| 国产美女av一区二区三区| 中文字幕 久热精品 视频在线| 亚洲激情欧美激情| 91亚洲精品久久久蜜桃| 午夜精品免费在线观看| 日韩亚洲国产中文字幕欧美| 九色综合狠狠综合久久| 亚洲国产精品精华液2区45| 99久精品国产| 午夜欧美一区二区三区在线播放| 日韩一区二区三区四区| 高清不卡一二三区| 国产精品二三区| 欧美色成人综合| 国产一区二区视频在线| 国产精品久久久久久久久免费丝袜| 97久久超碰国产精品| 亚洲成人你懂的| 国产女同互慰高潮91漫画| 粉嫩欧美一区二区三区高清影视 | 亚洲网友自拍偷拍| 亚洲国产成人自拍| 91精品国产综合久久蜜臀| 国产精品一区二区久激情瑜伽| 亚洲免费成人av| 精品国产亚洲一区二区三区在线观看 | 午夜亚洲国产au精品一区二区| 日韩美女一区二区三区四区| 国产另类ts人妖一区二区| 亚洲国产视频网站| 国产精品美女久久久久高潮| 一本色道a无线码一区v| 精品一区二区三区久久久| 亚洲国产精品久久久久婷婷884 | 久久精品久久综合| 综合久久久久综合| 久久久久九九视频| 在线亚洲精品福利网址导航| 香蕉av福利精品导航| 国产精品色婷婷久久58| 色婷婷狠狠综合| 手机精品视频在线观看| 亚洲欧美日韩小说| 亚洲国产激情av| 欧美精品一区二区三区视频| 欧美色区777第一页| 91在线一区二区| 国产一区二区日韩精品| 日韩影院免费视频| 亚洲精品国产成人久久av盗摄| 国产精品五月天| 26uuu亚洲综合色| 欧美丰满少妇xxxxx高潮对白| caoporn国产精品| 高清在线成人网| 国产在线日韩欧美| 日本欧美韩国一区三区| 亚洲第一主播视频| 一区二区三区**美女毛片| 中文字幕欧美日本乱码一线二线| 久久综合av免费| 91精品国产综合久久精品app| 色综合天天综合在线视频| 国产不卡视频在线播放| 国产精品一区二区久激情瑜伽| 久久精品国产99国产精品| 日韩精品一区第一页| 天天综合日日夜夜精品| 亚洲成人一区在线| 三级不卡在线观看| 天堂资源在线中文精品| 婷婷综合在线观看| 日韩 欧美一区二区三区| 午夜私人影院久久久久| 日韩高清不卡在线| 另类小说一区二区三区| 九色综合国产一区二区三区| 精品一区二区三区视频| 国产很黄免费观看久久| 成人性生交大片免费看视频在线| 成人小视频在线| 国产高清精品网站| 成人不卡免费av| 国产黄人亚洲片| 97久久超碰国产精品| 日本伦理一区二区| 91.xcao| 26uuu国产一区二区三区| 国产欧美一区二区三区在线看蜜臀| 国产婷婷色一区二区三区在线| 中文一区在线播放| 亚洲综合一区二区三区| 日韩电影免费在线观看网站| 国产在线麻豆精品观看| av网站免费线看精品| 欧美午夜精品一区二区三区| 欧美一区二区三区人| 久久久久久久电影| 一区二区三区在线视频免费 | 欧美亚洲国产一区二区三区va | 日韩一区二区三区在线| 国产午夜精品一区二区三区视频| 中文字幕不卡的av| 一区二区三区加勒比av| 精品一区二区免费在线观看| 白白色 亚洲乱淫| 欧美日韩高清一区| 欧美高清在线精品一区| 亚洲影院久久精品| 国产综合色视频| 欧美午夜精品久久久| 久久久久久久综合| 亚洲电影你懂得| 成人永久免费视频| 欧美一区日韩一区| 中文字幕在线视频一区| 日本欧美肥老太交大片| 国产一区二区福利| 欧美影院一区二区三区| 日韩精品一区二区三区蜜臀| 亚洲国产精品久久人人爱蜜臀| 韩国av一区二区三区四区| 精品1区2区3区| 国产精品久久午夜| 久久99国产精品免费| 色狠狠一区二区三区香蕉| 久久免费偷拍视频| 亚洲午夜电影网| 91免费国产在线| 久久久久久免费| 奇米精品一区二区三区四区| 色拍拍在线精品视频8848| 国产亚洲制服色| 欧美aaa在线| 欧美三级午夜理伦三级中视频| 久久精品免视看| 国内精品久久久久影院一蜜桃| 欧洲国产伦久久久久久久| 国产精品久久久久久久久免费桃花 | 亚洲国产精品v| 久久www免费人成看片高清| 欧美日韩国产大片| 一区二区三区在线视频免费观看| 精品一区二区三区av| 欧美精品在线观看一区二区| 国产欧美日韩精品一区| 毛片基地黄久久久久久天堂| 日韩一区二区中文字幕| 亚洲欧美日韩电影| 99r精品视频| 亚洲天堂网中文字| 99久久精品国产观看| 国产精品日日摸夜夜摸av| 国产.精品.日韩.另类.中文.在线.播放| 精品久久人人做人人爱| 美国十次综合导航| 日韩女优毛片在线| 免费成人小视频| 91精品国产免费| 麻豆精品视频在线| 欧美大片国产精品| 日本特黄久久久高潮| 日韩欧美第一区| 久99久精品视频免费观看| ww久久中文字幕| 国产高清亚洲一区| 国产精品精品国产色婷婷| 波多野结衣欧美| 国产精品天干天干在线综合| 日日夜夜一区二区| 日韩欧美高清dvd碟片| 国产一区二区影院| 中国av一区二区三区| 91色porny蝌蚪| 亚洲高清免费观看高清完整版在线观看 |