📄 demohint3_p1_speed_unnumbered.java
字号:
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 + -