📄 fangkuai.txt
字号:
帮我看看程序 我的俄罗斯方块
import java.awt.*;
import java.awt.event.*;
class eluosi
{
public static void main(String area[])
{
new form();
}
}
class form extends Frame implements Runnable
{
TextField text1=new TextField("0",12); //分数
TextField text2=new TextField("1",2); //等级
int dengji=1,fenshu=0;
panel pan;
Thread birds;
form()
{
setLayout(null);
setBounds(300,250,300,250);
setBackground(Color.blue);
pan=new panel(1);
add(pan);
text1.setBounds(10,30,60,20);
text2.setBounds(230,30,60,20);
Label label1=new Label("分数");
Label label2=new Label("等级");
label1.setBounds(10,50,60,20);
label2.setBounds(230,50,60,20);
add(text1);
add(text2);
add(label1);
add(label2);
text1.setEnabled(false);
text2.setEnabled(false);
setVisible(true);
validate();
addKeyListener(pan);
birds=new Thread(this);
birds.start();
}
public void run()
{
int i=pan.siwang;
while(i==0)
{
if (pan.fenshu!=fenshu)
{
fenshu=pan.fenshu;
text1.setText(String.valueOf(fenshu));
}
if (pan.dengji!=dengji)
{
dengji=pan.dengji;
text1.setText(String.valueOf(dengji));
}
}
}
}
class panel extends Canvas implements KeyListener,Runnable
{ int x=0,y=0,xp=0,yp=0,yangshi=0,fang=0,yangship=0,siwang=0;
int fenshu=0;
fangkuai f=new fangkuai();
int [][] wei =new int [16][22];
Thread bird;
int dengji;
panel(int dengji)
{
setBounds(80,40,140,200);
setBackground(Color.white);
addKeyListener(this);
shengcheng();
bird=new Thread(this);
bird.start();
for (int i=0;i<=15;i++)
{
for (int j=0;j<=21;j++)
{
if (i==0 || i==15 || j==21)
wei[i][j]=1;
}
}
}
public void paint(Graphics g) //画方块
{
g.setColor(Color.red);
for (int i=1;i<=20;i++)
{
for (int j=1;j<=14;j++)
{
if (wei[j][i]==1)
g.fillRect((j-1)*10,(i-1)*10,9,9);
}
}
for (int i=1;i<=4;i++)
{
f.fk(fang,yangshi);
g.fillRect((x+f.x[i]-1)*10,(y+f.y[i]-1)*10,9,9);
}
xp=x;
yp=y;
yangship=yangshi;
if (siwang==1)
{
g.setColor(Color.red);
g.drawString("Game Over",40,20);
}
}
public void run()
{
if (siwang==1)
{ return;
}
while(siwang==0)
{
y=y+1;
panduan();
repaint();
try{bird.sleep(1000-dengji*50);}
catch(Exception aa){}
}
}
public void keyPressed(KeyEvent e)
{ int a=x,b=y,c=yangshi,t=0,d=0;
dengji=(int)fenshu/100;
if (dengji>15) dengji=15;
if (e.getKeyCode()==KeyEvent.VK_UP && siwang==0)
{yangshi=yangshi+1;
if (yangshi==5)
yangshi=1;
f.fk(fang,yangshi);
for (int i=1;i<=4;i++)
{
if (x+f.x[i]<=0)
{d=1;t=1;}
if (x+f.x[i]>=14)
{d=-1;t=1;}
try{if (wei[x+f.x[i]][y+f.y[i]]==1)
t=2;}
catch(Exception ee)
{t=2;
}
}
if (t==1)
{
t=0;
for(int i=1;i<=4;i++)
{
if (wei[x+f.x[i]+d][y+f.y[i]]==1)
t=1;
}
if (t==1)
{
yangshi=c;
}
else
{
x=x+d;
}
}
if (t==2)
{
t=0;
for(int i=1;i<=4;i++)
{
if (wei[x+f.x[i]+1][y+f.y[i]]==1)
t=1;
}
if (t==0)
{
x=x+1;
}
else
{
t=0;
for(int i=1;i<=4;i++)
{
if (wei[x+f.x[i]-1][y+f.y[i]]==1)
t=1;
}
if (t==1)
{
yangshi=c;
}
else
{
x=x-1;
}
}
}
}
if (e.getKeyCode()==KeyEvent.VK_LEFT && siwang==0)
{
x=x-1;t=0;
f.fk(fang,yangshi);
for (int i=1;i<=4;i++)
{
if (wei[x+f.x[i]][y+f.y[i]]==1)
t=1;
}
if (t==1)
{
x=a;
}
}
if (e.getKeyCode()==KeyEvent.VK_RIGHT && siwang==0)
{
x=x+1;t=0;
f.fk(fang,yangshi);
for (int i=1;i<=4;i++)
{
if (wei[x+f.x[i]][y+f.y[i]]==1)
t=1;
}
if (t==1)
{
x=a;
}
}
if (e.getKeyCode()==KeyEvent.VK_DOWN && siwang==0)
y=y+1;
panduan();
repaint();
}
public void panduan()
{
int t=0;
t=0;
f.fk(fang,yangshi);
for (int i=1;i<=4;i++) //判断是否落到东西上
{
if (wei[x+f.x[i]][y+f.y[i]]==1)
{
t=1;
break;
}
}
if (t==1 && siwang==0) //落到东西上
{
y=y-1;
for (int i=1;i<=4;i++)
{
wei[x+f.x[i]][y+f.y[i]]=1;
}
xiahang();
shengcheng();
}
}
public void keyTyped(KeyEvent e)
{}
public void keyReleased(KeyEvent e)
{}
public void shengcheng() //生成 新方快
{
fang=(int)(Math.random()*7+1);
yangshi=(int)(Math.random()*4+1);
yangship=yangshi;
x=6;
y=2;
xp=6;
yp=2;
repaint();
f.fk(fang,yangshi);
for (int i=1;i<=4;i++)
{
if (wei[x+f.x[i]][y+f.y[i]]==1)
{
siwang();
}
}
}
public void siwang() //玩家死亡
{
siwang=1;
repaint();
}
public void xiahang() //下行
{
int t,o=0;
for (int i=1;i<=20;i++)
{
t=0;
for (int j=1;j<=14;j++)
{
if (wei[j][i]==1)
t=t+1;
}
if (t==14)
{
for (int j=0;j<=14;j++)
{
wei[j][i]=0;
}
for (int j=i;j>=1;j--)
{
for (int h=0;h<=14;h++)
{
wei[h][j]=wei[h][j-1];
}
}
o=o+1;
i=i-1;
}
}
for (int i=1;i<=o;i++)
fenshu=fenshu+i;
}
}
class fangkuai
{
int [] x=new int [5]; // OO
int [] y=new int [5];
public void fk(int fang,int yangshi)
{
if (fang==1)
{
if (yangshi==1)
{
x[1]=0;
y[1]=0;
x[2]=-1;
y[2]=0;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
if (yangshi==2)
{
x[1]=0;
y[1]=0;
x[2]=-1;
y[2]=0;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
if (yangshi==3)
{
x[1]=0;
y[1]=0;
x[2]=-1;
y[2]=0;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
if (yangshi==4)
{
x[1]=0;
y[1]=0;
x[2]=-1;
y[2]=0;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
}
if (fang==2)
{
if (yangshi==1)
{
x[1]=1;
y[1]=1;
x[2]=1;
y[2]=0;
x[3]=1;
y[3]=-1;
x[4]=0;
y[4]=-1;
}
if (yangshi==2) // O
{ //OOO
x[1]=1;
y[1]=1;
x[2]=0;
y[2]=1;
x[3]=-1;
y[3]=1;
x[4]=1;
y[4]=0;
}
if (yangshi==3) //O
{ //O
x[1]=0; //OO
y[1]=1;
x[2]=-1;
y[2]=1;
x[3]=-1;
y[3]=0;
x[4]=-1;
y[4]=-1;
}
if (yangshi==4) //OOO
{ //O
x[1]=-1;
y[1]=0;
x[2]=-1;
y[2]=-1;
x[3]=0;
y[3]=-1;
x[4]=1;
y[4]=-1;
}
}
if (fang==3)
{
if (yangshi==1) //OO
{ //O
x[1]=-1; //O
y[1]=1;
x[2]=-1;
y[2]=0;
x[3]=-1;
y[3]=-1;
x[4]=0;
y[4]=-1;
}
if (yangshi==2) //O
{ //OOO
x[1]=1;
y[1]=1;
x[2]=0;
y[2]=1;
x[3]=-1;
y[3]=1;
x[4]=-1;
y[4]=0;
}
if (yangshi==3) // O
{ // O
x[1]=1; //OO
y[1]=1;
x[2]=0;
y[2]=1;
x[3]=1;
y[3]=0;
x[4]=1;
y[4]=-1;
}
if (yangshi==4) //OOO
{ // O
x[1]=1;
y[1]=0;
x[2]=1;
y[2]=-1;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
}
if (fang==4)
{
if (yangshi==1) //BO
{ // O
x[1]=1;
y[1]=1;
x[2]=1;
y[2]=0;
x[3]=0;
y[3]=0;
x[4]=0;
y[4]=-1;
}
if (yangshi==2) // BO
{ //OO
x[1]=0;
y[1]=1;
x[2]=-1;
y[2]=1;
x[3]=1;
y[3]=0;
x[4]=0;
y[4]=0;
}
if (yangshi==3)
{
x[1]=1;
y[1]=1;
x[2]=1;
y[2]=0;
x[3]=0;
y[3]=0;
x[4]=0;
y[4]=-1;
}
if (yangshi==4)
{
x[1]=0;
y[1]=1;
x[2]=-1;
y[2]=1;
x[3]=1;
y[3]=0;
x[4]=0;
y[4]=0;
}
}
if (fang==5)
{
if (yangshi==1)
{
x[1]=0;
y[1]=1;
x[2]=0;
y[2]=0;
x[3]=1;
y[3]=0;
x[4]=1;
y[4]=-1;
}
if (yangshi==2)
{
x[1]=1;
y[1]=0;
x[2]=0;
y[2]=0;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
if (yangshi==3)
{
x[1]=0;
y[1]=1;
x[2]=0;
y[2]=0;
x[3]=1;
y[3]=0;
x[4]=1;
y[4]=-1;
}
if (yangshi==4)
{
x[1]=1;
y[1]=0;
x[2]=0;
y[2]=0;
x[3]=0;
y[3]=-1;
x[4]=-1;
y[4]=-1;
}
}
if (fang==6)
{
if (yangshi==1) //O
{ //OsO
x[1]=0;
y[1]=0;
x[2]=1;
y[2]=0;
x[3]=-1;
y[3]=0;
x[4]=0;
y[4]=-1;
}
if (yangshi==2) //O
{ //sO
x[1]=0; //O
y[1]=0;
x[2]=1;
y[2]=0;
x[3]=0;
y[3]=1;
x[4]=0;
y[4]=-1;
}
if (yangshi==3)
{ //OsO
x[1]=0; //O
y[1]=0;
x[2]=1;
y[2]=0;
x[3]=0;
y[3]=1;
x[4]=-1;
y[4]=0;
}
if (yangshi==4) //O
{ //Os
x[1]=0; //O
y[1]=0;
x[2]=-1;
y[2]=0;
x[3]=0;
y[3]=1;
x[4]=0;
y[4]=-1;
}
}
if (fang==7)
{
if (yangshi==1) //OOsO
{
x[1]=0;
y[1]=0;
x[2]=1;
y[2]=0;
x[3]=-1;
y[3]=0;
x[4]=-2;
y[4]=0;
} //O
if (yangshi==2) // s
{ //O
x[1]=0; //O
y[1]=0;
x[2]=0;
y[2]=1;
x[3]=0;
y[3]=2;
x[4]=0;
y[4]=-1;
}
if (yangshi==3) //OOsO
{
x[1]=0;
y[1]=0;
x[2]=1;
y[2]=0;
x[3]=-1;
y[3]=0;
x[4]=-2;
y[4]=0;
}
if (yangshi==4) // s
{ //O
x[1]=0; //O
y[1]=0;
x[2]=0;
y[2]=1;
x[3]=0;
y[3]=2;
x[4]=0;
y[4]=-1;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -