这是去年写的第一个小项目(虽然感觉称不上是项目),但毕竟是一次完整的编程过程,当作是编程路上的学习经历发一下好了。import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
class Block//方块父类
{
private int x,y;//方块的坐标;
protected int type;//方块的形态,横着是0,竖着是1
protected int[][] bk;//横状方块
protected int[][] kb;//竖状方块
protected Block()//创建坐标,类型
{
Random random=new Random();
x=random.nextInt(7);//随机方块出现的位置
y=0;
type=random.nextInt(2);//随机方块类型(横,竖)
}
//获取方块坐标
public int getX()
{
return x;
}
public int getY()
{
return y;
}
//获取方块类型
public int getType()
{
return type;
}
//获取数组宽度和高度
public int getwidth()
{
return getBlock(type)[0].length;
}
public int getheigth()
{
return getBlock(type).length;
}
//根据类型返回状态方块
public int[][] getBlock(int type)
{
if(type==0)
return bk;
else
return kb;
}
public void Down()//下降方法
{
y++;
}
public void Left()//左移方法
{
x--;
}
public void Right()//右移方法
{
x++;
}
public void Turn()//旋转方法
{
}
}
//长条方块类
class Strip extends Block
{
private final int w=4,h=1;
Strip()
{
super();
bk=new int[h][w];
kb=new int[w][h];
for(int i=0;i<w;i++)
{
bk[h-1][i]=1;
kb[i][h-1]=1;
}
}
public void Turn()//重写父类旋转方法
{
if(type==0)
type=1;
else
type=0;
}
}
//正方形方块类
class Square extends Block
{
final private int w=2,h=2;
Square()
{
super();
bk=new int[h][w];
kb=new int[w][h];
for(int i=0;i<w;i++)
for(int j=0;j<h;j++)
{
bk[i][j]=1;
kb[j][i]=1;
}
}
}
//Z字方块1类
class Z1 extends Block
{
final private int w=3,h=2;
Z1()
{
super();
bk=new int[h][w];
kb=new int[w][h];
bk[0][0]=bk[0][1]=bk[1][1]=bk[1][2]=1;
kb[2][0]=kb[1][0]=kb[1][1]=kb[0][1]=1;
}
public void Turn()
{
if(type==0)
type=1;
else
type=0;
}
}
//Z字方块2类
class Z2 extends Block
{
final private int w=3,h=2;
Z2()
{
super();
bk=new int[h][w];
kb=new int[w][h];
bk[0][2]=bk[0][1]=bk[1][1]=bk[1][0]=1;
kb[0][0]=kb[1][0]=kb[1][1]=kb[2][1]=1;
}
public void Turn()
{
if(type==0)
type=1;
else
type=0;
}
}
//三角方块类
class triangle extends Block
{
final private int w=3,h=2;
triangle()
{
super();
bk=new int[h][w];
kb=new int[w][h];
triangle(type);
}
//随机创建四种三角形状的一种
private void triangle(int type)
{
Random r=new Random();
if(type==0)
{
if(r.nextInt(2)==0)
bk[0][1]=bk[1][0]=bk[1][1]=bk[1][2]=1;
else
bk[1][1]=bk[0][0]=bk[0][1]=bk[0][2]=1;
}
else
{
if(r.nextInt(2)==0)
kb[1][0]=kb[0][1]=kb[1][1]=kb[2][1]=1;
else
kb[1][1]=kb[0][0]=kb[1][0]=kb[2][0]=1;
}