📄 brick.java
字号:
break;
}
}
if(currentposition[3].getX()==19) IsEnd=true;
return IsEnd;
}
public int getScore() {
return score;
}
public void getNewTop()
{
for(int i=0;i<=9;i++)
for(int j=19;j>=0;j--)
{
if(BrickPanel[j][i].getBackground()==Color.black)
{
TopRow[i]=j;
}
}
}
public void CheckScore()
{
getNewTop();
for(int i=19;i>=0;i--)
for(int j=0;j<=9;j++)
{
if(BrickPanel[i][j].getBackground()==Color.white)
{
break;
}
if(j==9)
{
score++;
for(int ClearLine=0;ClearLine<=9;ClearLine++)
{
for(int k=i;k>=TopRow[ClearLine];k--)
{
BrickPanel[k][ClearLine].setBackground(BrickPanel[k-1][ClearLine].getBackground());
}
}
i++;
getNewTop();
}
}
setTitle("your score is "+score);
}
public boolean IsGameOver() {
boolean IsOver=false;
//y is lines,x is rows
for(int i=0;i<=9;i++)
for(int j=19;j>=0;j--)
{
if(BrickPanel[j][i].getBackground()==Color.black)
{
TopRow[i]=j;
}
else
TopRow[i]=19;
for(int BrickLines=0;BrickLines<=9;BrickLines++)
if(TopRow[i]==0) IsOver=true;
}
return IsOver;
}
private class BrickTimerListener implements ActionListener {
public void actionPerformed(ActionEvent event)
{
//BrickPanel[12][9].setBackground(Color.blue);
if(IsBrickEnd(currentposition))
{
CheckScore();
if(IsGameOver())
{
int score=getScore();
System.out.println("game is over,and your score is "+score);
String input=JOptionPane.showInputDialog("try again? just type ok");
if(input.equals("ok")) NewGame();
else
System.exit(0);
}
else
NewBrick();
}
else
{
BrickClear(currentposition);
for(int i=0;i<4;i++) currentposition[i].setX(currentposition[i].getX()+1);
BrickDraw(currentposition);
}
}
}
private class BrickKeyListener implements KeyListener
{
public void keyPressed(KeyEvent event)
{
int keyCode=event.getKeyCode();
if (keyCode==KeyEvent.VK_RIGHT)
{
if(!IsRightSide(currentposition))
{
BrickClear(currentposition);
for(int i=0;i<4;i++) currentposition[i].setY(currentposition[i].getY()+1);
BrickDraw(currentposition);
}
}
if(keyCode==KeyEvent.VK_LEFT)
{
if(!IsLeftSide(currentposition))
{
BrickClear(currentposition);
for(int i=0;i<4;i++) currentposition[i].setY(currentposition[i].getY()-1);
BrickDraw(currentposition);
}
}
if(keyCode==KeyEvent.VK_DOWN)
{
if(!IsBrickEnd(currentposition))
{
BrickClear(currentposition);
for(int i=0;i<4;i++) currentposition[i].setX(currentposition[i].getX()+1);
BrickDraw(currentposition);
}
}
if(keyCode==KeyEvent.VK_UP)
{
BrickClear(currentposition);
switch(shapekind)
{
case 0:
if(currentposition[2].getX()!=19)
{
currentposition[1].set(currentposition[2]);
currentposition[2].set(currentposition[3]);
currentposition[3].setXY((currentposition[1].getX()+1),currentposition[1].getY());
shapekind=1;
}
break;
case 1:
if(currentposition[1].getY()!=0)
{
currentposition[0].setXY(currentposition[1].getX(),(currentposition[1].getY()-1));
shapekind=2;
}
break;
case 2:
if(currentposition[1].getX()!=0)
{
currentposition[2].set(currentposition[1]);
currentposition[1].set(currentposition[0]);
currentposition[0].setXY((currentposition[2].getX()-1),currentposition[2].getY());
shapekind=3;
}
break;
case 3:
if(currentposition[2].getY()!=9)
{
currentposition[3].setXY(currentposition[2].getX(),(currentposition[2].getY()+1));
shapekind=0;
}
break;
case 4:
if(currentposition[0].getX()!=0)
{
currentposition[0].setXY((currentposition[0].getX()-1),currentposition[0].getY());
currentposition[1].setXY((currentposition[0].getX()+1),currentposition[0].getY());
currentposition[2].setXY(currentposition[1].getX(),(currentposition[1].getY()+1));
currentposition[3].setXY((currentposition[2].getX()+1),currentposition[2].getY());
shapekind=5;
}
break;
case 5:
if(currentposition[2].getY()!=9)
{
currentposition[0].setXY((currentposition[2].getX()-1),currentposition[2].getY());
currentposition[1].setXY(currentposition[0].getX(),(currentposition[0].getY()+1));
currentposition[3].setXY((currentposition[0].getX()+1),currentposition[0].getY());
currentposition[2].setXY(currentposition[3].getX(),(currentposition[3].getY()-1));
shapekind=4;
}
break;
case 6:
if(currentposition[1].getX()!=0)
{
currentposition[0].setXY((currentposition[1].getX()-1),currentposition[1].getY());
currentposition[2].setXY((currentposition[0].getX()+1),currentposition[0].getY());
currentposition[1].setXY(currentposition[2].getX(),(currentposition[2].getY()-1));
currentposition[3].setXY((currentposition[1].getX()+1),currentposition[1].getY());
shapekind=7;
}
break;
case 7:
if(currentposition[2].getY()!=9)
{
currentposition[0].setXY((currentposition[1].getX()-1),currentposition[1].getY());
currentposition[1].setXY(currentposition[0].getX(),(currentposition[0].getY()+1));
currentposition[2].setXY((currentposition[1].getX()+1),currentposition[1].getY());
currentposition[3].setXY(currentposition[2].getX(),(currentposition[2].getY()+1));
shapekind=6;
}
break;
case 8:
if(currentposition[1].getY()!=0&¤tposition[1].getY()<8)
{
currentposition[0].setXY(currentposition[1].getX(),(currentposition[1].getY()-1));
currentposition[2].setXY(currentposition[1].getX(),(currentposition[1].getY()+1));
currentposition[3].setXY(currentposition[1].getX(),(currentposition[1].getY()+2));
shapekind=9;
}
break;
case 9:
if(currentposition[1].getX()!=0&¤tposition[1].getX()<18)
{
currentposition[0].setXY((currentposition[1].getX()-1),currentposition[1].getY());
currentposition[2].setXY((currentposition[1].getX()+1),currentposition[1].getY());
currentposition[3].setXY((currentposition[2].getX()+1),currentposition[2].getY());
shapekind=8;
}
break;
}
BrickDraw(currentposition);
}
}
public void keyTyped(KeyEvent event){}
public void keyReleased(KeyEvent event){}
}
private int[] TopRow; private BrickPosition[][] choose;
private int score;
private int shapekind;
private BrickPosition[] currentposition;
private Timer timer ;
private static final int WIDTH=200;
private static final int HEIGHT=400;
private JPanel[][] BrickPanel;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -