?? mainframe.java
字號:
}
//顯示方塊方法
public void show(){
for(int i=0;i<4;i++)
{
playBlocks[rows[i]][cols[i]].setBackground(color);
playBlocks[rows[i]][cols[i]].setVisible(true);
}
}
//方塊下落到底部
public void downToBottom(){
while(!isToBottom)
downOneLine();
}
//方塊下落一行
public void downOneLine(){
//循環(huán)處理各個小方塊
for(int i=0;i<4;i++)
{
//如果方塊達到底部,則設(shè)置底部標志
if(rows[i]>=19)
{
isToBottom=true;
break;
}
//如果方塊下面有其他方塊,則設(shè)置底部標志
if(flagBlocks[rows[i]+1][cols[i]]!=0)
{
isToBottom=true;
//如果到底底部并且上部無法在放置其他方塊,則設(shè)置頂部標志
if(rows[i]<=2)
{
isToTop = true;
}
break;
}
}
//如果到頂部,則游戲結(jié)束
if(isToTop)
{
JOptionPane.showMessageDialog(jPanel1, "游戲結(jié)束?。?!");
return;
}
//如果到達底部
if(isToBottom)
{
//更新游戲區(qū)方塊標志
for (int j = 0; j < 4; j++)
flagBlocks[rows[j]][cols[j]] = 1;
//積分
score+=5;
//消除所有能夠消除的行
for(int i=0;i<20;i++)
{
boolean isClear=true;
//判斷能夠消除當前行
for(int j=0;j<10;j++)
{
if(flagBlocks[i][j]==0)
{
isClear = false;
break;
}
}
//消除當前行,并更新記分
if(isClear)
{
for(int j=i;j>0;j--)
for(int k=0;k<10;k++)
{
flagBlocks[j][k] = flagBlocks[j - 1][k];
playBlocks[j][k].setBackground(playBlocks[j-1][k].getBackground());
if(flagBlocks[j][k]!=0)
playBlocks[j][k].setVisible(true);
else
playBlocks[j][k].setVisible(false);
}
score+=20;
totalLines++;
currentLines++;
if(currentLines>=20&&level<=10)
{
currentLines=0;
level++;
speed-=50;
jLabel4.setText(Integer.toString(level));
}
}
}
//更新記分顯示
jLabel2.setText(Long.toString(score));
jLabel6.setText(Integer.toString(totalLines));
return;
}
//清除當前方塊
clear();
//下移方塊
for(int i=0;i<4;i++)
{
rows[i]++;
}
//重新顯示方塊
show();
}
//方塊左移
public void left(){
for(int i=0;i<4;i++)
{//如果方塊已經(jīng)達到左邊界,則返回
if(cols[i]<=0)
return;
//如果方塊左邊有其他方塊,則返回
if(flagBlocks[rows[i]][cols[i]-1]!=0)
return;
}
//清空方塊顯示
clear();
//方塊左移一列
for(int i=0;i<4;i++)
{
cols[i]--;
}
//重新顯示方塊
show();
}
//方塊右移
public void right(){
for(int i=0;i<4;i++)
{
if(cols[i]>=9)
return;
if(flagBlocks[rows[i]][cols[i]+1]!=0)
return;
}
clear();
for(int i=0;i<4;i++)
{
cols[i]++;
}
show();
}
}
//類型1方塊
class BlockOne extends Block{
public BlockOne() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 2;
rows[3] = 2;
cols[0] = 4;
cols[1] = 5;
cols[2] = 5;
cols[3] = 6;
color = Color.GREEN;
}
public void turn() {
//根據(jù)當前方塊狀態(tài),設(shè)置翻轉(zhuǎn)后的狀態(tài)
switch(status){
case 1:
//清空方塊
clear();
//設(shè)置方塊位置
rows[0]--;
rows[2]--;
cols[0]++;
cols[2]--;
cols[3]-=2;
//更新狀態(tài)
status=2;
//重新顯示方塊
show();
break;
case 2:
if(cols[0]>=9)
break;
if(flagBlocks[rows[0]][cols[0]+1]!=0)
break;
clear();
rows[0]++;
rows[2]++;
cols[0]--;
cols[2]++;
cols[3]+=2;
status=1;
show();
break;
}
}
}
//類型2方塊
class BlockTwo extends Block{
public BlockTwo() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 2;
rows[3] = 2;
cols[0] = 6;
cols[1] = 5;
cols[2] = 5;
cols[3] = 4;
color = Color.blue;
}
public void turn() {
switch(status){
case 1:
clear();
rows[0]--;
rows[2]--;
cols[0]--;
cols[2]++;
cols[3]+=2;
status=2;
show();
break;
case 2:
if(cols[0]<=0)
break;
if(flagBlocks[rows[0]][cols[0]-1]!=0)
break;
clear();
rows[0]++;
rows[2]++;
cols[0]++;
cols[2]--;
cols[3]-=2;
status=1;
show();
break;
}
}
}
//類型3方塊
class BlockThree extends Block{
public BlockThree() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 2;
rows[3] = 2;
cols[0] = 4;
cols[1] = 5;
cols[2] = 4;
cols[3] = 5;
color = Color.cyan;
}
//類型4方塊
public void turn() {}
}
class BlockFour extends Block{
public BlockFour() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 1;
rows[3] = 2;
cols[0] = 4;
cols[1] = 5;
cols[2] = 6;
cols[3] = 6;
color = Color.yellow;
}
public void turn() {
switch(status){
case 1:
clear();
rows[0]++;
rows[2]--;
rows[3]-=2;
cols[0]++;
cols[2]--;
status=2;
show();
break;
case 2:
if(cols[0]<=0)
break;
if(flagBlocks[rows[0]][cols[0]-1]!=0)
break;
clear();
rows[0]--;
rows[2]++;
cols[0]++;
cols[2]--;
cols[3]-=2;
status=3;
show();
break;
case 3:
clear();
rows[0]--;
rows[2]++;
rows[3]+=2;
cols[0]--;
cols[2]++;
status=4;
show();
break;
case 4:
if(cols[0]>=9)
break;
if(flagBlocks[rows[0]][cols[0]+1]!=0)
break;
clear();
rows[0]++;
rows[2]--;
cols[0]--;
cols[2]++;
cols[3]+=2;
status=1;
show();
break;
}
}
}
//類型5方塊
class BlockFive extends Block{
public BlockFive() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 1;
rows[3] = 2;
cols[0] = 6;
cols[1] = 5;
cols[2] = 4;
cols[3] = 4;
color = Color.magenta;
}
public void turn() {
switch(status){
case 1:
clear();
rows[0]--;
rows[2]++;
cols[0]--;
cols[2]++;
cols[3]+=2;
status=2;
show();
break;
case 2:
if(cols[0]<=0)
break;
if(flagBlocks[rows[0]][cols[0]-1]!=0)
break;
clear();
rows[0]++;
rows[2]--;
rows[3]-=2;
cols[0]--;
cols[2]++;
status=3;
show();
break;
case 3:
clear();
rows[0]++;
rows[2]--;
cols[0]++;
cols[2]--;
cols[3]-=2;
status=4;
show();
break;
case 4:
if(cols[0]>=9)
break;
if(flagBlocks[rows[0]][cols[0]+1]!=0)
break;
clear();
rows[0]--;
rows[2]++;
rows[3]+=2;
cols[0]++;
cols[2]--;
status=1;
show();
break;
}
}
}
//類型6方塊
class BlockSix extends Block{
public BlockSix() {
rows[0] = 1;
rows[1] = 1;
rows[2] = 1;
rows[3] = 2;
cols[0] = 4;
cols[1] = 5;
cols[2] = 6;
cols[3] = 5;
color = Color.darkGray;
}
public void turn() {
switch(status){
case 1:
clear();
rows[0]++;
rows[2]--;
rows[3]--;
cols[0]++;
cols[2]--;
cols[3]++;
status=2;
show();
break;
case 2:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -