带报告的Java小游戏源代码

导入javax . swing . *;

导入Java . awt . *;

导入Java . awt . event . *;

类Game扩展JFrame实现KeyListener,Runnable

{

Thread Down10 =新线程(this);

game canvas test = new game canvas();

JLabel LabelTetris = new JLabel(“俄罗斯方块游戏”);

JLabel Score print 1 = new JLabel(" Score ");

JLabel score print 2 = new JLabel(" 0 "+test。分数);

游戏()

{

setSize(400,800);

set visible(true);

set layout(new flow layout());

test . addkey listener(this);

label teris . set background(color . white);

label teris . set Font((新字体(" Tahoma ",1,50)));

ScorePrint1.setFont((新字体(" Tahoma ",1,40)));

score print 2 . set background(color . white);

JLabel LM = new JLabel(" L . M ");

ScorePrint2.setFont((新字体(" Tahoma ",1,40)));

add(label teris);

添加(测试);

add(score print 1);

add(score print 2);

lm . set foreground(color . white);

add(LM);

validate();

down 10 . start();

}

公共无效运行()

{

while(真)

{

尝试

{

测试。down 1();

down 10 . sleep(700);

}

catch(interrupted exception I){ I . printstacktrace();}

}

}

公共void按键(按键事件K)

{

if(K.getKeyCode()==KeyEvent。VK _左)

测试。left 1();

else if(k . get key code()= = key event。VK_UP)

测试。转();

else if(k . get key code()= = key event。VK _右)

测试。right 1();

else if(k . get key code()= = key event。VK_DOWN)

{

测试。down 1();

如果(测试。ScoreBool==1)

{ score print 2 . settext("+test。分数);}

}

}

public void key released(key event e){ }

public void key typed(key event e){ }

}

类GameCanvas扩展画布

{

int x=5,y = 0;

int GameMap[][]= new int[50][100];

int BlockShape

int BlockWay

int得分= 0;

int score bool = 0;

int over pool = 0;

public final static int[][][]Blocks = { { { 0,0,0,0,1,1,1,0,0,0,0,0},

{0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0},

{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0},

{0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0}},

{{0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0},

{1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0},

{0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0},

{1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0}},

{{1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0},

{0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0},

{1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0},

{0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0}},

{{0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0},

{1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0},

{1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0},

{1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0}},

{{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},

{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},

{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},

{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0}},

{{1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0},

{1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0},

{1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0},

{0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0}},

{{0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0},

{0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0},

{1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},

{0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0}}};

GameCanvas()

{

setSize(340,500);

setBackground(颜色。黑色);

for(int I = 0;我& lt25;i++)

{

游戏地图[0][I]= 2;

GameMap[16][I]= 2;

}

for(int I = 0;我& lt16;i++)

{

GameMap[I][24]= 2;

}

}

公共void新块()

{

x = 5;y = 0;

block shape =(int)(math . random()* 6);

block way =(int)(math . random()* 3);

if(IsOver(x,y)==true)

{ over bool = 1;}

}

public void Keep(int x,int y,int BlockShape,int BlockWay)

{

int n = 0;

for(int I = 0;我& lt4;i++)

for(int j = 0;j & lt4;j++)

{

if(GameMap[x+j+1][y+I]= = 0)

{

GameMap[x+j+1][y+I]= Blocks[block shape][block way][n];

}

n++;

}

}

公共空白油漆(图形G)

{

g . set color(color . white);

for(int I = 0;我& lt16;i++)

{

if(Blocks[block shape][block way][I]= = 1)

G.drawRect((i%4+x+1)*20,(i/4+y)*20,20,20);

}

for(int I = 0;我& lt30;i++)

for(int j = 0;j & lt50;j++)

if(GameMap[I][j]= = 1 | | GameMap[I][j]= = 2)

G.fillRect(i*20,j*20,20,20);

}

公共void Turn()

{

if(is可行(x,y,BlockShape,BlockWay)==1)

{

block way =(block way+1)% 4;

repaint();

}

}

公共void Left1()

{

if(is可行(x-1,y,BlockShape,BlockWay)==1)

{

x-= 1;

repaint();

}

}

公共作废权1()

{

if(is可行(x+1,y,BlockShape,BlockWay)==1)

{

x+= 1;

repaint();

}

}

公共void Down1()

{

if(is可行(x,y+1,BlockShape,BlockWay)==1)

{

y+= 1;

repaint();

}

else if(is可行(x,y+1,BlockShape,BlockWay)==0)

{

Keep(x,y,BlockShape,block way);

deline();

if(OverBool==0)

new blocks();

}

}

public int是可行的(int x,int y,int BlockShape,int BlockWay)

{

for(int I = 0;我& lt4;i++)

{

for(int j = 0;j & lt4;j++)

{

if(Blocks[block shape][block way][I * 4+j]= = 1 & amp;& amp游戏地图[x+j+1][y+i]==1)

返回0;

else if(Blocks[block shape][block way][I * 4+j]= = 1 & amp;& amp游戏地图[x+j+1][y+i]==2)

返回0;

}

}

返回1;

}

公共void Deline()

{

int blocks sum = 0;

for(int I = 0;我& lt25;i++)

{

for(int j = 0;j & lt16;j++)

{

if (GameMap[j][i]==1)

{

blocks sum++;

if (BlocksSum==15)

{

for(int p = I;p & gt0;p -)

{

for(int q = 0;q & lt16;q++)

{

游戏地图[q][p]=游戏地图[q][p-1];

}

}

得分+= 10;

score bool = 1;

}

}

}

blocks sum = 0;

}

}

public boolean IsOver(int x,int y)

{

if(is可行(x,y,BlockShape,BlockWay)==0)

返回true

其他

返回false

}

}

公开课俄罗斯方块

{

公共静态void main(String[] args)

{

Game test2 = new Game();

}

}

拿着它玩新的JAVA文件,名字叫Tetris,之前懒得修饰界面。