⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demohint3_p1_speed_unnumbered.java

📁 由于JAVA与平台无关的优点,现在用JAVA编写的小游戏已经非常普遍,相信对这款旋转俄罗斯方块会让大家耳目一新
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

		public void paintBrick(Graphics2D g2d, int cordAngel, int cordRadius,
				boolean isSiteBrick) {
			if (mapGame[cordAngel][cordRadius] == -100)
				g2d.setColor(Color.black);// 黑色.
			if (mapGame[cordAngel][cordRadius] == -90)
				g2d.setColor(nextBrickColor);// 綠色.
			if (mapGame[cordAngel][cordRadius] == -10)
				g2d.setColor(Color.red);// 紅色.
			cordAngel = cordAngel - rotateAngel;
			g2d.fillArc(outerX + cordRadius * lengthBrick, outerY + cordRadius
					* lengthBrick,// 正方形左上角座標
					2 * outerR - 2 * cordRadius * lengthBrick, 2 * outerR - 2
							* cordRadius * lengthBrick,// 正方形的寬與高
					90 - cordAngel * degreeBrick, -degreeBrick);// 扇形的開始角度/ 終止角度/因為負角度是順時鐘
			g2d.setColor(colorJPanel); // ***********注意, 這要與遊戲區域的背景色一致.
			// ***********以便造成消除的效果, 而呈現一個方塊.
			// 與前者一樣,只是徑向Y座標cordRadius都加1。
			g2d.fillArc(outerX + (cordRadius + 1) * lengthBrick, outerY
					+ (cordRadius + 1) * lengthBrick, 2 * outerR - 2 * (cordRadius + 1)
					* lengthBrick, 2 * outerR - 2 * (cordRadius + 1) * lengthBrick, 90
					- cordAngel * degreeBrick, -degreeBrick); // 因為負角度是順時鐘
		}// end of paintBrick

		public void paintBrickL(Graphics2D g2d, int cordAngel, int cordRadius,
				boolean isSiteBrickL) {
			if (mapGameL[cordAngel][cordRadius] == -100)
				g2d.setColor(Color.black);
			if (mapGameL[cordAngel][cordRadius] == -90)
				g2d.setColor(nextBrickColor);
			if (mapGameL[cordAngel][cordRadius] == -10)
				g2d.setColor(Color.red);
			if (!isSiteBrickL)
				cordAngel = (360 / degreeBrick) - 1 - cordAngel - rotateAngel;
			g2d.fillArc(outerX + cordRadius * lengthBrick, outerY + cordRadius
					* lengthBrick,// 正方形左上角座標
					2 * outerR - 2 * cordRadius * lengthBrick, 2 * outerR - 2
							* cordRadius * lengthBrick,// 正方形的寬與高
					90 - cordAngel * degreeBrick, -degreeBrick);// 扇形的開始角度/ 終止角度/因為負角度是順時鐘
			g2d.setColor(colorJPanel); // ***********注意, 這要與遊戲區域的背景色一致.
			// ***********以便造成消除的效果, 而呈現一個方塊.
			// 與前者一樣,只是徑向Y座標cordRadius都加1。
			g2d.fillArc(outerX + (cordRadius + 1) * lengthBrick, outerY
					+ (cordRadius + 1) * lengthBrick, 2 * outerR - 2 * (cordRadius + 1)
					* lengthBrick, 2 * outerR - 2 * (cordRadius + 1) * lengthBrick, 90
					- cordAngel * degreeBrick, -degreeBrick); // 因為負角度是順時鐘
		}// end of paintBrick

		void paintGameArea(Graphics2D g2d) {
			for (int cordAngel = startAngelRPlayer; cordAngel <= endAngelRPlayer - 1; cordAngel++) {
				for (int cordRadius = 0; cordRadius <= cordRadiusMax; cordRadius++) {
					if (mapGame[cordAngel][cordRadius] == -100) // 畫方塊
						paintBrick(g2d, cordAngel, cordRadius, false);
					if (mapGame[cordAngel][cordRadius] == -90) // 畫方塊
						paintBrick(g2d, cordAngel, cordRadius, false);
					if (mapGame[cordAngel][cordRadius] == -10) // 畫方塊
						paintBrick(g2d, cordAngel, cordRadius, false);
					if (mapGame[cordAngel][cordRadius] == -20) // 清除方塊
						clearBrick(g2d, cordAngel, cordRadius);
				}
			}

			for (int cordAngelL = startAngelLPlayer; cordAngelL <= endAngelLPlayer - 1; cordAngelL++) {
				for (int cordRadiusL = 0; cordRadiusL <= cordRadiusMax; cordRadiusL++) {
					if (mapGameL[cordAngelL][cordRadiusL] == -100) // 畫方塊
						paintBrickL(g2d, cordAngelL, cordRadiusL, false);
					if (mapGameL[cordAngelL][cordRadiusL] == -90) // 畫方塊
						paintBrickL(g2d, cordAngelL, cordRadiusL, false);
					if (mapGameL[cordAngelL][cordRadiusL] == -10) // 畫方塊
						paintBrickL(g2d, cordAngelL, cordRadiusL, false);
					if (mapGameL[cordAngelL][cordRadiusL] == -20) // 清除方塊
						clearBrickL(g2d, cordAngelL, cordRadiusL);
				}
			}
		}

		public void paintComponent(Graphics g) { // 必須override此方法 //預設雙緩衝
			super.paintComponent(g); // 清除畫面
			Graphics2D g2d = (Graphics2D) g;
			g2D = (Graphics2D) g;
			paintGameArea(g2d);
			paintSchelton(g2d);
		}

		int fallingAngelMax() {
			int cordAngel = currentBrickAngel;
			while (true) {
				for (int i = 0; i <= bricksFallingType[currentBrickType][currentBrickSubType].length - 1; ++i) {
					if (i == 0) // 第一組座標(i為0)是下落檢查方塊組中最底部的方塊, 其1st整數表示Angel座標.
						// 此if用以檢查是否到達mapGame底部
						if ((bricksFallingType[currentBrickType][currentBrickSubType][i][0] + cordAngel) > endAngelRPlayer - 1) { // fallingOver
							// =
							// true;
							return cordAngel;
						}
					int increAngel = bricksFallingType[currentBrickType][currentBrickSubType][i][0];
					int increRadius = bricksFallingType[currentBrickType][currentBrickSubType][i][1];
					if (mapGame[cordAngel + increAngel][currentBrickRadius + increRadius] == -10
							|| mapGame[cordAngel + increAngel][currentBrickRadius
									+ increRadius] == -40
					// || mapGame[cordAngel + increAngel][currentBrickRadius
					// + increRadius] == -90
					) {// fallingOver = true;
						return cordAngel;
					}

				}// End of for Loop
				++cordAngel;
			}// End of Infinite while Loop
			// return endAngelRPlayer-1; //可以掉落至mapGame底部.
		}// End of function fallingAngelMax()

		int fallingAngelMaxL() {
			int cordAngelL = currentBrickAngelL;
			while (true) {
				for (int i = 0; i <= bricksFallingType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
					if (i == 0) // 第一組座標(i為0)是下落檢查方塊組中最底部的方塊, 其1st整數表示Angel座標.
						// 此if用以檢查是否到達mapGame底部
						if ((bricksFallingType[currentBrickTypeL][currentBrickSubTypeL][i][0] + cordAngelL) > endAngelLPlayer - 1) { // fallingOver
							// =
							// true;
							return cordAngelL;
						}
					int increAngelL = bricksFallingType[currentBrickTypeL][currentBrickSubTypeL][i][0];
					int increRadiusL = bricksFallingType[currentBrickTypeL][currentBrickSubTypeL][i][1];
					if (mapGameL[cordAngelL + increAngelL][currentBrickRadiusL
							+ increRadiusL] == -10
							|| mapGameL[cordAngelL + increAngelL][currentBrickRadiusL
									+ increRadiusL] == -40) {// fallingOver = true;
						return cordAngelL;
					}

				}// End of for Loop
				++cordAngelL;
			}// End of Infinite while Loop
			// return endAngelRPlayer-1; //可以掉落至mapGame底部.
		}// End of function fallingAngelMax()

		void setRPlayerMoveBottom(int cordRPlayerBottom) {
			for (int i = 0; i <= bricksType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				int increAngel = bricksType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksType[currentBrickType][currentBrickSubType][i][1];
				mapGame[currentBrickAngel + increAngel][currentBrickRadius
						+ increRadius] = -20;
			}
			for (int i = 0; i <= bricksType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				int increAngel = bricksType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksType[currentBrickType][currentBrickSubType][i][1];
				if (RBrickCanNotChange)
					mapGame[cordRPlayerBottom + increAngel][currentBrickRadius
							+ increRadius] = -100;
				else if (isSpeedDownBrick)
					mapGame[cordRPlayerBottom + increAngel][currentBrickRadius
							+ increRadius] = -90;
				else
					mapGame[cordRPlayerBottom + increAngel][currentBrickRadius
							+ increRadius] = -10;
				// mapGame[cordRPlayerBottom + increAngel][currentBrickRadius
				// + increRadius] = -10;
			}
		}

		void setLPlayerMoveBottom(int cordRPlayerBottomL) {
			for (int i = 0; i <= bricksType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				int increAngelL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
						+ increRadiusL] = -20;
			}
			for (int i = 0; i <= bricksType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				int increAngelL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				if (LBrickCanNotChange)
					mapGameL[cordRPlayerBottomL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -100;
				else if (isSpeedDownBrickL)
					mapGameL[cordRPlayerBottomL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -90;
				else
					mapGameL[cordRPlayerBottomL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -10;
			}
		}

		boolean moveLeftOK() {
			for (int i = 0; i <= bricksLeftType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				if (i == 0)// 第一組座標(i為0)是左移檢查方塊組中最左邊的方塊, 其2nd整數表示Radiusl座標.
					// 此if用以檢查是否到達mapGame底部
					if ((bricksLeftType[currentBrickType][currentBrickSubType][i][1] + currentBrickRadius) > cordRadiusMax)
						return false;
				int increAngel = bricksLeftType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksLeftType[currentBrickType][currentBrickSubType][i][1];
				if (currentBrickRadius + increRadius > cordRadiusMax)
					return false;
				if (mapGame[currentBrickAngel + increAngel][currentBrickRadius
						+ increRadius] == -10)
					return false;
			}
			return true;
		}

		boolean moveLeftOKL() {
			for (int i = 0; i <= bricksLeftType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				if (i == 0)// 第一組座標(i為0)是左移檢查方塊組中最左邊的方塊, 其2nd整數表示Radiusl座標.
					// 此if用以檢查是否到達mapGame底部
					if ((bricksLeftType[currentBrickTypeL][currentBrickSubTypeL][i][1] + currentBrickRadiusL) > cordRadiusMax)
						return false;
				int increAngelL = bricksLeftType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksLeftType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				if (currentBrickRadiusL + increRadiusL >= 10)
					return false;
				if (mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
						+ increRadiusL] == -10)
					return false;
			}
			return true;
		}

		void setRPlayerMoveLeft() {
			for (int i = 0; i <= bricksType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				int increAngel = bricksType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksType[currentBrickType][currentBrickSubType][i][1];
				mapGame[currentBrickAngel + increAngel][currentBrickRadius
						+ increRadius] = -20;
			}
			++currentBrickRadius; // 設定方塊下落一格.
			for (int i = 0; i <= bricksType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				int increAngel = bricksType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksType[currentBrickType][currentBrickSubType][i][1];
				if (RBrickCanNotChange)
					mapGame[currentBrickAngel + increAngel][currentBrickRadius
							+ increRadius] = -100;
				else if (isSpeedDownBrick)
					mapGame[currentBrickAngel + increAngel][currentBrickRadius
							+ increRadius] = -90;
				else
					mapGame[currentBrickAngel + increAngel][currentBrickRadius
							+ increRadius] = -10;
				// mapGame[currentBrickAngel + increAngel][currentBrickRadius
				// + increRadius] = -10;
			}
		}

		void setLPlayerMoveLeft() {
			// System.out.println("LEFT LEFT LEFT");
			for (int i = 0; i <= bricksType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				int increAngelL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
						+ increRadiusL] = -20;
			}
			++currentBrickRadiusL; // 設定方塊下落一格.
			for (int i = 0; i <= bricksType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				int increAngelL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				if (LBrickCanNotChange)
					mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -100;
				else if (isSpeedDownBrickL)
					mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -90;
				else
					mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -10;
			}
		}

		void setRPlayerMoveRight() {
			for (int i = 0; i <= bricksType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				int increAngel = bricksType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksType[currentBrickType][currentBrickSubType][i][1];
				mapGame[currentBrickAngel + increAngel][currentBrickRadius
						+ increRadius] = -20;
			}
			--currentBrickRadius; // 設定方塊下落一格.
			for (int i = 0; i <= bricksType[currentBrickType][currentBrickSubType].length - 1; ++i) {
				int increAngel = bricksType[currentBrickType][currentBrickSubType][i][0];
				int increRadius = bricksType[currentBrickType][currentBrickSubType][i][1];
				if (RBrickCanNotChange)
					mapGame[currentBrickAngel + increAngel][currentBrickRadius
							+ increRadius] = -100;
				else if (isSpeedDownBrick)
					mapGame[currentBrickAngel + increAngel][currentBrickRadius
							+ increRadius] = -90;
				else
					mapGame[currentBrickAngel + increAngel][currentBrickRadius
							+ increRadius] = -10;
				// mapGame[currentBrickAngel + increAngel][currentBrickRadius
				// + increRadius] = -10;
			}
		}

		void setLPlayerMoveRight() {
			System.out.println("RIGHTRIGHTRIGHT");
			for (int i = 0; i <= bricksType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				int increAngelL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
						+ increRadiusL] = -20;
			}
			--currentBrickRadiusL; // 設定方塊下落一格.
			for (int i = 0; i <= bricksType[currentBrickTypeL][currentBrickSubTypeL].length - 1; ++i) {
				int increAngelL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][0];
				int increRadiusL = bricksType[currentBrickTypeL][currentBrickSubTypeL][i][1];
				if (LBrickCanNotChange)
					mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
							+ increRadiusL] = -100;
				else if (isSpeedDownBrickL)
					mapGameL[currentBrickAngelL + increAngelL][currentBrickRadiusL
							+ inc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -