📄 brick.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.Timer;
public class Brick
{
public static void main(String[] args)
{
BrickFrame frame=new BrickFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
frame.NewGame();
}
}
//a frame with 90 panel on ,Layout with GridLayout(10,9)
class BrickPosition
{
private int x; private int y;
public BrickPosition(){ x=0;y=0;} public BrickPosition(int a,int b)
{
x=a;
y=b;
}
public int getX(){return x;}
public int getY(){return y;}
public void setX(int a ){x=a;}
public void setY(int b){y=b;}
public void setXY(int a,int b)
{
x=a;
y=b;
}
public void set(BrickPosition a)
{
x=a.getX();
y=a.getY();
}
}
class BrickFrame extends JFrame
{
public BrickFrame()
{
choose=new BrickPosition[11][4];
choose[0][0]=new BrickPosition(0,5);
choose[0][1]=new BrickPosition(1,4);
choose[0][2]=new BrickPosition(1,5);
choose[0][3]=new BrickPosition(1,6);
choose[1][0]=new BrickPosition(0,5);
choose[1][1]=new BrickPosition(1,5);
choose[1][2]=new BrickPosition(1,6);
choose[1][3]=new BrickPosition(2,5);
choose[2][0]=new BrickPosition(0,4);
choose[2][1]=new BrickPosition(0,5);
choose[2][2]=new BrickPosition(0,6);
choose[2][3]=new BrickPosition(1,5);
choose[3][0]=new BrickPosition(0,5);
choose[3][1]=new BrickPosition(1,4);
choose[3][2]=new BrickPosition(1,5);
choose[3][3]=new BrickPosition(2,5);
choose[4][0]=new BrickPosition(0,5);
choose[4][1]=new BrickPosition(0,6);
choose[4][2]=new BrickPosition(1,4);
choose[4][3]=new BrickPosition(1,5);
choose[5][0]=new BrickPosition(0,5);
choose[5][1]=new BrickPosition(1,5);
choose[5][2]=new BrickPosition(1,6);
choose[5][3]=new BrickPosition(2,6);
choose[6][0]=new BrickPosition(0,4);
choose[6][1]=new BrickPosition(0,5);
choose[6][2]=new BrickPosition(1,5);
choose[6][3]=new BrickPosition(1,6);
choose[7][0]=new BrickPosition(0,5);
choose[7][1]=new BrickPosition(1,4);
choose[7][2]=new BrickPosition(1,5);
choose[7][3]=new BrickPosition(2,4);
choose[8][0]=new BrickPosition(0,5);
choose[8][1]=new BrickPosition(1,5);
choose[8][2]=new BrickPosition(2,5);
choose[8][3]=new BrickPosition(3,5);
choose[9][0]=new BrickPosition(0,3);
choose[9][1]=new BrickPosition(0,4);
choose[9][2]=new BrickPosition(0,5);
choose[9][3]=new BrickPosition(0,6);
choose[10][0]=new BrickPosition(0,4);
choose[10][1]=new BrickPosition(0,5);
choose[10][2]=new BrickPosition(1,4);
choose[10][3]=new BrickPosition(1,5);
BrickPanel=new JPanel[20][10];
currentposition=new BrickPosition[4];
for(int i=0;i<4;i++)
currentposition[i]=new BrickPosition();
setTitle("Brick Game");
setSize(WIDTH,HEIGHT);
setResizable(false);
Container contentPane=getContentPane();
contentPane.setLayout(new GridLayout(20,10,3,3));
for(int index1=0;index1<20;index1++)
for(int index2=0;index2<10;index2++)
{
BrickPanel[index1][index2]=new JPanel();
contentPane.add(BrickPanel[index1][index2]);
BrickPanel[index1][index2].setBackground(Color.white);
}
BrickKeyListener listener=new BrickKeyListener();
addKeyListener(listener);
setFocusable(true);
}
public void NewGame()
{
for(int index1=0;index1<10;index1++)
for(int index2=0;index2<9;index2++)
{
BrickPanel[index1][index2].setBackground(Color.white);
}
TopRow=new int[10];
for(int i=0;i<=9;i++)
TopRow[i]=19;
BrickTimerListener timelistener=new BrickTimerListener();
timer=new Timer(700,timelistener);
timer.start();
score=0;
NewBrick();
}
public void NewBrick() {
shapekind=(int)(Math.random()*11);
for(int index=0;index<4;index++)
{
currentposition[index].setXY(choose[shapekind][index].getX(),choose[shapekind][index].getY());
}
BrickDraw(currentposition);
}
public void BrickDraw(BrickPosition[] draw)
{
for(int index=0;index<4;index++)
{
int x=draw[index].getX();
int y=draw[index].getY();
BrickPanel[x][y].setBackground(Color.black);
}
}
public void BrickClear(BrickPosition[] clear)
{
for(int index=0;index<4;index++)
{
int x=clear[index].getX();
int y=clear[index].getY();
BrickPanel[x][y].setBackground(Color.white);
}
}
public boolean IsRightSide(BrickPosition[] position) {
boolean IsRight=false;
for(int i=0;i<4;i++)
{
if(position[i].getY()==9) IsRight=true;
}
return IsRight;
}
public boolean IsLeftSide(BrickPosition[] position)
{
boolean IsLeft=false;
for(int i=0;i<4;i++)
{
if(position[i].getY()==0) IsLeft=true;
}
return IsLeft;
}
public boolean IsBrickEnd(BrickPosition[] position) {
boolean IsEnd=false;
if(currentposition[3].getX()!=19)
{
switch(shapekind)
{
case 0:
for(int i=1;i<4;i++)
{
if(BrickPanel[(position[i].getX()+1)][position[i].getY()].getBackground()==Color.black) IsEnd=true;
}
break;
case 1:
if(BrickPanel[(position[2].getX()+1)][position[2].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 3:
if(BrickPanel[(position[1].getX()+1)][position[1].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 2:
if(BrickPanel[(position[0].getX()+1)][position[0].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[2].getX()+1)][position[2].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 4:
for(int i=1;i<4;i++)
{
if(BrickPanel[(position[i].getX()+1)][position[i].getY()].getBackground()==Color.black) IsEnd=true;
}
break;
case 5:
if(BrickPanel[(position[1].getX()+1)][position[1].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 6:
if(BrickPanel[(position[0].getX()+1)][position[0].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[2].getX()+1)][position[2].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 7:
if(BrickPanel[(position[2].getX()+1)][position[2].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 8:
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
break;
case 9:
for(int i=0;i<4;i++)
{
if(BrickPanel[(position[i].getX()+1)][position[i].getY()].getBackground()==Color.black) IsEnd=true;
}
break;
case 10:
if(BrickPanel[(position[2].getX()+1)][position[2].getY()].getBackground()==Color.black) IsEnd=true;
if(BrickPanel[(position[3].getX()+1)][position[3].getY()].getBackground()==Color.black) IsEnd=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -