java 俄罗斯方块

  • 格式:doc
  • 大小:134.50 KB
  • 文档页数:33

package com.iss.itreasury;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Els extends JFrame implements KeyListener,Runnable {public Els(){setSize(240,320);setUndecorated(true);int H=(int) (this.getToolkit().getScreenSize().height);int W=(int) (this.getToolkit().getScreenSize().width);setLocation(W/2-120,H/2-160);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void paint(Graphics g){super.paint(g);Graphics2D g2=(Graphics2D)g;g2.setColor(Color.darkGray.brighter().brighter());//绘制小框格for(int m=192;m<=232;m+=10){g2.drawLine(m, 52, m,92);}for(int m=52;m<=92;m+=10){g2.drawLine(192, m, 232, m);}//绘制大框格for(int m=0;m<=180;m+=15){g2.drawLine(m, 0, m, 300);}for(int m=0;m<=300;m+=15){g2.drawLine(0, m, 180, m);}//将值不非0的格子涂黑for(int i=1;i<13;i++){for(int j=0;j<20;j++){g2.setColor(Color.black);if (o[i][j]!=0) g2.fillRect(15*i-13, 15*j+2, 13, 13);}}//在小框格中绘制下一个的模型switch(nextMODE){//竖线case 0: g2.fillRect(204, 54, 8, 8);g2.fillRect(204, 64, 8, 8);g2.fillRect(204, 74, 8, 8);g2.fillRect(204, 84, 8, 8);break;//Lcase 1: g2.fillRect(194, 64, 8, 8);g2.fillRect(204, 64, 8, 8);g2.fillRect(214, 64, 8, 8);g2.fillRect(224, 64, 8, 8);break;//L反方向case 2: g2.fillRect(214, 64, 8, 8);g2.fillRect(214, 74, 8, 8);g2.fillRect(214, 84, 8, 8);g2.fillRect(204, 84, 8, 8);break;//case 3: g2.fillRect(204, 64, 8, 8);g2.fillRect(204, 74, 8, 8);g2.fillRect(214, 74, 8, 8);g2.fillRect(224, 74, 8, 8);break;case 4: g2.fillRect(204, 64, 8, 8);g2.fillRect(214, 64, 8, 8);g2.fillRect(204, 74, 8, 8);g2.fillRect(204, 84, 8, 8);break;case 5: g2.fillRect(204, 64, 8, 8);g2.fillRect(214, 64, 8, 8);g2.fillRect(224, 64, 8, 8);break;case 6: g2.fillRect(204, 54, 8, 8); g2.fillRect(204, 64, 8, 8);g2.fillRect(204, 74, 8, 8);g2.fillRect(214, 74, 8, 8); break;case 7: g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8);g2.fillRect(224, 74, 8, 8);g2.fillRect(224, 64, 8, 8); break;case 8: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8);g2.fillRect(214, 74, 8, 8);g2.fillRect(214, 84, 8, 8); break;case 9: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8);g2.fillRect(224, 64, 8, 8);g2.fillRect(204, 74, 8, 8); break;case 10: g2.fillRect(204, 64, 8, 8); g2.fillRect(204, 74, 8, 8);g2.fillRect(214, 74, 8, 8);g2.fillRect(214, 84, 8, 8); break;case 11: g2.fillRect(204, 74, 8, 8); g2.fillRect(214, 74, 8, 8);g2.fillRect(214, 64, 8, 8);g2.fillRect(224, 64, 8, 8); break;case 12: g2.fillRect(214, 64, 8, 8); g2.fillRect(214, 74, 8, 8);g2.fillRect(204, 74, 8, 8);g2.fillRect(204, 84, 8, 8); break;case 13: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8);g2.fillRect(214, 74, 8, 8);g2.fillRect(224, 74, 8, 8); break;case 14: g2.fillRect(204, 64, 8, 8); g2.fillRect(214, 64, 8, 8);g2.fillRect(214, 74, 8, 8);break;case 15: g2.fillRect(204, 64, 8, 8);g2.fillRect(214, 64, 8, 8);g2.fillRect(224, 64, 8, 8);g2.fillRect(214, 74, 8, 8);break;case 16: g2.fillRect(224, 64, 8, 8);g2.fillRect(224, 74, 8, 8);g2.fillRect(224, 84, 8, 8);g2.fillRect(214, 74, 8, 8);break;case 17: g2.fillRect(204, 84, 8, 8);g2.fillRect(214, 84, 8, 8);g2.fillRect(224, 84, 8, 8);g2.fillRect(214, 74, 8, 8);break;case 18: g2.fillRect(204, 64, 8, 8);g2.fillRect(204, 74, 8, 8);g2.fillRect(204, 84, 8, 8);g2.fillRect(214, 74, 8, 8);break;}g2.setColor(Color.black);g2.drawLine(180, 0, 180, 300);g2.setColor(Color.DARK_GRAY);g2.drawString("LEVEL", 194, 10);g2.drawString(""+LEVEL, 210, 28);g2.drawString("NEXT", 196, 45);g2.drawString("SCORE",193, 110);g2.drawString(""+SCORE,205, 130);g2.drawString("Xiong", 205, 160);g2.drawString("Xuan", 205, 180);}//方块下落的方法public void down(){Y++;switch(MODE){case 0: o[X+2][Y]=1;o[X+2][Y+1]=1;o[X+2][Y+2]=1;o[X+2][Y+3]++;o[X+2][Y-1]=0; break;case 1: o[X][Y+1]++; o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++;o[X][Y]=0;o[X+1][Y]=0;o[X+2][Y]=0;o[X+3][Y]=0; break;case 2: o[X+2][Y]=1; o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+1][Y+2]++;o[X+2][Y-1]=0;o[X+1][Y+1]=0; break;case 3: o[X][Y]=1; o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X][Y-1]=0;//o[X][Y]=0;o[X+1][Y]=0;o[X+2][Y]=0; break;case 4: o[X+1][Y]=1; o[X+2][Y]++;o[X+1][Y+1]=1;o[X+1][Y+2]++;o[X+1][Y-1]=0;o[X+2][Y-1]=0;break;case 5: o[X][Y]++; o[X+1][Y]++;o[X+2][Y]=1;o[X+2][Y+1]++;o[X][Y-1]=0;o[X+1][Y-1]=0;o[X+2][Y-1]=0;break;case 6: o[X+1][Y]=1; o[X+1][Y+1]=1;o[X+1][Y+2]++;o[X+2][Y+2]++;o[X+1][Y-1]=0;//o[X+1][Y]=0;//o[X+1][Y+1]=0;o[X+2][Y+1]=0; break;case 7: o[X][Y+1]++; o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y]=1;o[X][Y]=0;o[X+1][Y]=0;//o[X+2][Y]=0;o[X+2][Y-1]=0; break;case 8: o[X+1][Y]++; o[X+2][Y]=1;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+1][Y-1]=0;o[X+2][Y-1]=0;//o[X+2][Y]=0;//o[X+2][Y+1]=0; break;case 9: o[X+1][Y]=1; o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]++;o[X+1][Y-1]=0;o[X+2][Y-1]=0;o[X+3][Y-1]=0;//o[X+1][Y]=0; break;case 10:o[X+1][Y]=1; o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+1][Y-1]=0;//o[X+1][Y]=0;//o[X+2][Y+1]=0; break;case 11:o[X+2][Y]=1; o[X+3][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y-1]=0;o[X+3][Y-1]=0;o[X+1][Y]=0;//o[X+2][Y]=0; break;case 12:o[X+1][Y+1]=1; o[X+2][Y+1]++;o[X+1][Y+2]++;o[X+2][Y]=1;o[X+1][Y]=0;//o[X+2][Y]=0;//o[X+1][Y+1]=0;o[X+2][Y-1]=0; break;case 13:o[X+1][Y]++; o[X+2][Y]=1;o[X+2][Y+1]++;o[X+3][Y+1]++;o[X+1][Y-1]=0;o[X+2][Y-1]=0;//o[X+2][Y]=0;o[X+3][Y]=0;break;case 14:o[X+1][Y]=1; o[X+2][Y]=1;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+1][Y-1]=0;o[X+2][Y-1]=0;//o[X+1][Y]=0;//o[X+2][Y]=0; break;case 15:o[X+2][Y]=1; o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++;o[X+2][Y-1]=0;o[X+3][Y]=0;break;case 16:o[X+2][Y]=1;o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+2][Y-1]=0;o[X+1][Y]=0;break;case 17:o[X+1][Y]++;o[X+2][Y]=1;o[X+3][Y]++;o[X+2][Y+1]++;o[X+1][Y-1]=0;o[X+2][Y-1]=0;o[X+3][Y-1]=0;break;case 18:o[X+2][Y]=1;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+3][Y+1]++;o[X+2][Y-1]=0;o[X+3][Y]=0;break;}//如果碰撞,则自动上升一格for(int i=0;i<13;i++){for(int j=0;j<21;j++){if (o[i][j]==2) up();}}}//方块上升的方法public void up(){Y--;switch(MODE){case 0: o[X+2][Y]++;o[X+2][Y+1]=1;o[X+2][Y+3]=1;o[X+2][Y+4]--; break;case 1: o[X][Y+1]++; o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++;o[X][Y+2]--;o[X+1][Y+2]--;o[X+2][Y+2]--;o[X+3][Y+2]--; break;case 2: o[X+2][Y]++; o[X+2][Y+1]=1;o[X+2][Y+2]=1;o[X+1][Y+2]++;o[X+2][Y+3]--;o[X+1][Y+3]--; break;case 3: o[X][Y]++; o[X][Y+1]=1;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X][Y+2]--;//o[X][Y]=0;o[X+1][Y+2]--;o[X+2][Y+2]--; break;case 4: o[X+1][Y]++; o[X+2][Y]++;o[X+1][Y+1]=1;o[X+1][Y+2]=1;o[X+1][Y+3]--;o[X+2][Y+1]--;break;case 5: o[X][Y]++; o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]=1;o[X][Y+1]--;o[X+1][Y+1]--;o[X+2][Y+2]--;break;case 6: o[X+1][Y]++; o[X+1][Y+1]=1;o[X+1][Y+2]=1;o[X+2][Y+2]++;o[X+1][Y+3]--;//o[X+1][Y]=0;//o[X+1][Y+1]=0;o[X+2][Y+3]--; break;case 7: o[X][Y+1]++; o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+2][Y]++;o[X][Y+2]--;o[X+1][Y+2]--;//o[X+2][Y]=0;o[X+2][Y+2]--; break;case 8: o[X+1][Y]++; o[X+2][Y]++;o[X+2][Y+1]=1;o[X+2][Y+2]=1;o[X+1][Y+1]--;o[X+2][Y+3]--;//o[X+2][Y]=0;//o[X+2][Y+1]=0; break;case 9: o[X+1][Y]++; o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]=1;o[X+1][Y+2]--;o[X+2][Y+1]--;o[X+3][Y+1]--;//o[X+1][Y]=0; break;case 10:o[X+1][Y]++; o[X+1][Y+1]=1;o[X+2][Y+1]++;o[X+2][Y+2]=1;o[X+1][Y+2]--;//o[X+1][Y]=0;//o[X+2][Y+1]=0; break;case 11:o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+2][Y+2]--;o[X+1][Y+2]--;o[X+3][Y+1]--;//o[X+2][Y]=0; break;case 12:o[X+1][Y+1]++; o[X+2][Y+1]=1;o[X+1][Y+2]=1;o[X+2][Y]++;o[X+2][Y+2]--;//o[X+2][Y]=0;//o[X+1][Y+1]=0;o[X+1][Y+3]--; break;case 13:o[X+1][Y]++; o[X+2][Y]++;o[X+2][Y+1]=1;o[X+3][Y+1]++;o[X+1][Y+1]--;o[X+2][Y+2]--;//o[X+2][Y]=0;o[X+3][Y+2]--; break;case 14:o[X+1][Y]++; o[X+2][Y]++;o[X+1][Y+1]=1;o[X+2][Y+1]=1;o[X+1][Y+2]--;o[X+2][Y+2]--;//o[X+1][Y]=0;//o[X+2][Y]=0; break;case 15:o[X+2][Y]++; o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+3][Y+1]++;o[X+1][Y+2]--;o[X+3][Y+2]--;break;case 16:o[X+2][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+2][Y+2]=1;o[X+1][Y+2]--;o[X+2][Y+3]--;break;case 17:o[X+1][Y]++;o[X+2][Y]++;o[X+3][Y]++;o[X+2][Y+1]=1;o[X+1][Y+1]--;o[X+2][Y+2]--;o[X+3][Y+1]--;break;case 18:o[X+2][Y]++;o[X+2][Y+1]=1;o[X+2][Y+2]=1;o[X+3][Y+1]++;o[X+2][Y+3]--;o[X+3][Y+2]--;break;}for(int i=0;i<20;i++){if (o[1][i]==1&&o[2][i]==1&&o[3][i]==1&&o[4][i]==1&&o[5][i]==1&&o[6][i]==1&&o[7][i]==1&&o[8][i]==1&&o[9][i]==1&&o[10][i]==1&&o[11][i]==1&&o[12][i]==1){for(int k=1;k<=12;k++){for(int j=i;j>=1;j--){o[k][j]=o[k][j-1];}}LINE++;FEN++;if(LINE==10){LEVEL++;LINE=0;}}}if(FEN==1){CODE=1;SCORE=SCORE+CODE;}else if(FEN==2){CODE=3;SCORE=SCORE+CODE;}else if(FEN==3){CODE=6;SCORE=SCORE+CODE;}else if(FEN==4){CODE=10;SCORE=SCORE+CODE;}FEN=0;CODE=0;X=5;Y=0;MODE=nextMODE;down();repaint();nextMODE=(int)(Math.random()*18); }public void left(){X--;switch(MODE){case 0:o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+2][Y+3]++;o[X+3][Y]--;o[X+3][Y+1]--;o[X+3][Y+2]--;o[X+3][Y+3]--; break;case 1:o[X][Y+1]++;o[X+1][Y+1]=1;o[X+2][Y+1]=1;o[X+3][Y+1]=1;o[X+4][Y+1]--;break;case 2:o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]=1;o[X+1][Y+2]++;o[X+3][Y]--;o[X+3][Y+1]--;o[X+3][Y+2]--;//o[X+2][Y+2]=0; break;case 3: //if(X==-1)X++;o[X][Y]++;o[X][Y+1]++;o[X+1][Y+1]=1;o[X+2][Y+1]=1;o[X+1][Y]--;//o[X+1][Y+1]=0;//o[X+2][Y+1]=0;o[X+3][Y+1]--; break;case 4: //if(X==-2)X++; o[X+1][Y]++;o[X+2][Y]=1;o[X+1][Y+1]++;o[X+1][Y+2]++;//o[X+2][Y]=0;o[X+3][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--; break;case 5: //if(X==-1)X++; o[X][Y]++;o[X+1][Y]=1;o[X+2][Y]=1;o[X+2][Y+1]++;//o[X+1][Y]=0;//o[X+2][Y]=0;o[X+3][Y]--;o[X+3][Y+1]--; break;case 6: //if(X==-2)X++; o[X+1][Y]++;o[X+1][Y+1]++;o[X+1][Y+2]++;o[X+2][Y+2]=1;o[X+2][Y]--;o[X+2][Y+1]--;//o[X+2][Y+2]=0;o[X+3][Y+2]--; break;case 7: //if(X==-1)X++; o[X][Y+1]++;o[X+1][Y+1]=1;o[X+2][Y+1]=1;o[X+2][Y]++;//o[X+1][Y+1]=0;//o[X+2][Y+1]=0;o[X+3][Y+1]--;o[X+3][Y]--;break;case 8: //if(X==-2)X++; o[X+1][Y]++;o[X+2][Y]=1;o[X+2][Y+1]++;o[X+2][Y+2]++;//o[X+2][Y]=0;o[X+3][Y]--;o[X+3][Y+1]--;o[X+3][Y+2]--; break;case 9: //if(X==-2)X++; o[X+1][Y]++;o[X+2][Y]=1;o[X+3][Y]=1;o[X+1][Y+1]++;//o[X+2][Y]=0;//o[X+3][Y]=0;o[X+4][Y]--;o[X+2][Y+1]--; break;case 10://if(X==-2)X++; o[X+1][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+2][Y]--;//o[X+3][Y+1]=0;o[X+3][Y+1]--;o[X+3][Y+2]--; break;case 11://if(X==-2)X++; o[X+2][Y]++;o[X+3][Y]=1;o[X+1][Y+1]++;o[X+2][Y+1]=1;//o[X+3][Y]=0;o[X+4][Y]--;//o[X+2][Y+1]=0;o[X+3][Y+1]--; break;case 12://if(X==-2)X++; o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+1][Y+2]++;o[X+2][Y]++;//o[X+2][Y+1]=0;o[X+3][Y+1]--;o[X+2][Y+2]--;o[X+3][Y]--;break;case 13://if(X==-2)X++; o[X+1][Y]++;o[X+2][Y]=1;o[X+2][Y+1]++;//o[X+2][Y]=0;o[X+3][Y]--;//o[X+3][Y+1]=0;o[X+4][Y+1]--; break;case 14://if(X==-2)X++; o[X+1][Y]++;o[X+2][Y]=1;o[X+1][Y+1]++;o[X+2][Y+1]=1;//o[X+2][Y]=0;o[X+3][Y]--;//o[X+2][Y+1]=0;o[X+3][Y+1]--; break;case 15:o[X+2][Y]++; o[X+1][Y+1]++;o[X+2][Y+1]=1;o[X+3][Y+1]=1;o[X+3][Y]--;o[X+4][Y+1]--; break;case 16:o[X+1][Y+1]++; o[X+2][Y]++;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+3][Y]--;o[X+3][Y+1]--;o[X+3][Y+2]--; break;case 17:o[X+1][Y]++; o[X+2][Y]=1;o[X+3][Y]=1;o[X+2][Y+1]++;o[X+4][Y]--;o[X+3][Y+1]--; break;case 18:o[X+2][Y]++; o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+3][Y+2]=1;o[X+3][Y]--;o[X+4][Y+1]--;break;}for(int i=0;i<13;i++){for(int j=0;j<21;j++){if (o[i][j]==2) right();}}}public void right(){X++;switch(MODE){case 0:o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+2][Y+3]++;o[X+1][Y]--;o[X+1][Y+1]--;o[X+1][Y+2]--;o[X+1][Y+3]--;break;case 1: //if(X==11)X--;o[X][Y+1]=1;o[X+1][Y+1]=1;o[X+2][Y+1]=1;o[X+3][Y+1]++;o[X-1][Y+1]--;//o[X][Y+1]=0;//o[X+1][Y+1]=0;//o[X+2][Y+1]=0;break;case 2: //if(X==10)X--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+1][Y+2]=1;o[X+1][Y]--;o[X+1][Y+1]--;o[X][Y+2]--; break;case 3:o[X][Y]++;o[X][Y+1]=1;o[X+1][Y+1]=1;o[X+2][Y+1]++;o[X-1][Y]--;o[X-1][Y+1]--;//o[X][Y+1]=0;//o[X+1][Y+1]=0; break;case 4: //if(X==10)X--; o[X+1][Y]=1;o[X+2][Y]++;o[X+1][Y+1]++;o[X+1][Y+2]++;o[X][Y]--;//o[X+1][Y]=0;o[X][Y+1]--;o[X][Y+2]--; break;case 5://if(X==10)X--; o[X][Y]=1;o[X+1][Y]=1;o[X+2][Y]++;o[X+2][Y+1]++;o[X-1][Y]--;//o[X][Y]=0;//o[X+1][Y]=0;o[X+1][Y+1]--; break;case 6: //if(X==9)X--; o[X+1][Y]++;o[X+1][Y+1]++;o[X+1][Y+2]=1;o[X+2][Y+2]++;o[X][Y]--;o[X][Y+1]--;o[X][Y+2]--;//o[X+1][Y+2]=0; break;case 7: //if(X==10)X--;o[X+1][Y+1]=1;o[X+2][Y+1]++;o[X+2][Y]++;o[X-1][Y+1]--;//o[X][Y+1]=0;//o[X+1][Y+1]=0;o[X+1][Y]--;break;case 8: //if(X==10)X--; o[X+1][Y]=1;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X][Y]--;//o[X+1][Y]=0;o[X+1][Y+1]--;o[X+1][Y+2]--; break;case 9: //if(X==11)X--; o[X+1][Y]=1;o[X+2][Y]=1;o[X+3][Y]++;o[X+1][Y+1]++;o[X][Y]--;//o[X+1][Y]=0;//o[X+2][Y]=0;o[X][Y+1]--;break;case 10://if(X==10)X--; o[X+1][Y]++;o[X+1][Y+1]=1;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X][Y]--;o[X][Y+1]--;//o[X+1][Y+1]=0;o[X+1][Y+2]--; break;case 11://if(X==11)X--; o[X+2][Y]=1;o[X+3][Y]++;o[X+1][Y+1]=1;o[X+2][Y+1]++;//o[X+2][Y]=0;o[X][Y+1]--;//o[X+1][Y+1]=0; break;case 12://if(X==10)X--; o[X+1][Y+1]=1;o[X+2][Y+1]++;o[X+1][Y+2]++;o[X+2][Y]++;o[X][Y+1]--;//o[X+1][Y+1]=0;o[X][Y+2]--;o[X+1][Y]--;break;case 13://if(X==11)X--; o[X+1][Y]=1;o[X+2][Y]++;o[X+2][Y+1]=1;o[X+3][Y+1]++;o[X][Y]--;//o[X+1][Y]=0;o[X+1][Y+1]--;//o[X+2][Y+1]=0; break;case 14://if(X==10)X--; o[X+1][Y]=1;o[X+2][Y]++;o[X+1][Y+1]=1;o[X+2][Y+1]++;o[X][Y]--;//o[X+1][Y]=0;o[X][Y+1]--;//o[X+1][Y+1]=0; break;case 15:o[X+2][Y]++; o[X+1][Y+1]=1;o[X+2][Y+1]=1;o[X+3][Y+1]++;o[X+1][Y]--;o[X][Y+1]--;break;case 16:o[X+1][Y+1]=1; o[X+2][Y]++;o[X+2][Y+2]++;o[X][Y+1]--;o[X+1][Y]--;o[X+1][Y+2]--;break;case 17:o[X+1][Y]=1;o[X+2][Y]=1;o[X+3][Y]++;o[X+2][Y+1]++;o[X][Y]--;o[X+1][Y+1]--;break;case 18:o[X+2][Y]++;o[X+2][Y+1]=1;o[X+2][Y+2]++;o[X+3][Y+1]++;o[X+1][Y]--;o[X+1][Y+1]--;o[X+1][Y+2]--;}for(int i=0;i<14;i++){for(int j=0;j<21;j++){if (o[i][j]==2) left();}}}public void change(){switch(MODE){case 0: o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+2][Y+3]--;o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++;MODE=1;break;case 1: o[X][Y+1]--;o[X+2][Y+1]--;o[X+3][Y+1]--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+2][Y+3]++; MODE=0; break;case 2: o[X+2][Y]--; o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+1][Y+2]--;o[X][Y]++;o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]++; MODE=5; break;case 3: o[X][Y]--; o[X][Y+1]--;o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+1][Y+2]++; MODE=2; break;case 4: o[X+1][Y]--; o[X+2][Y]--;o[X+1][Y+1]--;o[X+1][Y+2]--;o[X][Y]++;o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++; MODE=3; break;case 5: o[X][Y]--; o[X+1][Y]--;o[X+2][Y]--;o[X+2][Y+1]--;o[X+1][Y]++;o[X+1][Y+1]++;o[X+1][Y+2]++; MODE=4; break;case 6: o[X+1][Y]--; o[X+1][Y+1]--;o[X+1][Y+2]--;o[X+2][Y+2]--;o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y]++; MODE=7; break;case 7: o[X][Y+1]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y]--;o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++; MODE=8; break;case 8: o[X+1][Y]--; o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+1][Y]++;o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]++; MODE=9; break;case 9: o[X+1][Y]--; o[X+2][Y]--;o[X+3][Y]--;o[X+1][Y+1]--;o[X+1][Y]++;o[X+1][Y+1]++;o[X+1][Y+2]++;o[X+2][Y+2]++; MODE=6;break;case 10:o[X+1][Y]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++; MODE=11;break;case 11:o[X+2][Y]--; o[X+3][Y]--;o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+1][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y+2]++; MODE=10;break;case 12:o[X+1][Y+1]--; o[X+2][Y+1]--;o[X+1][Y+2]--;o[X+2][Y]--;o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]++;o[X+3][Y+1]++; MODE=13;break;case 13:o[X+1][Y]--; o[X+2][Y]--;o[X+2][Y+1]--;o[X+3][Y+1]--;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+1][Y+2]++;o[X+2][Y]++;MODE=12;break;case 14:o[X+1][Y]=1; o[X+2][Y]=1;o[X+1][Y+1]=1;o[X+2][Y+1]=1; break;case 15:o[X+2][Y]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+3][Y+1]--;o[X+2][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y+2]++; MODE=16; break;case 16:o[X+2][Y]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+1][Y]++;o[X+2][Y]++;o[X+3][Y]++;o[X+2][Y+1]++; MODE=17; break;case 17:o[X+1][Y]--; o[X+2][Y]--;o[X+3][Y]--;o[X+2][Y+1]--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+3][Y+1]++; MODE=18; break;case 18:o[X+2][Y]--; o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+3][Y+1]--;o[X+2][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++; MODE=15; break;}for(int i=0;i<14;i++){for(int j=0;j<21;j++){if (o[i][j]==2) changeback();}}}public void changeback(){switch(MODE){case 0:o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+2][Y+3]--;o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++;MODE=1;break;case 1:o[X][Y+1]--;o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+3][Y+1]--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+2][Y+3]++;MODE=0;break;case 2:o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+1][Y+2]--;o[X][Y]++;o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++;MODE=3;break;case 3:o[X][Y]--;o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+1][Y]++;o[X+2][Y]++;o[X+1][Y+1]++;o[X+1][Y+2]++; MODE=4; break;case 4:o[X+1][Y]--; o[X+2][Y]--;o[X+1][Y+1]--;o[X+1][Y+2]--;o[X][Y]++;o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]++;MODE=5; break;case 5:o[X][Y]--; o[X+1][Y]--;o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+1][Y+2]++; MODE=2; break;case 6:o[X+1][Y]--; o[X+1][Y+1]--;o[X+1][Y+2]--;o[X+2][Y+2]--;o[X+1][Y]++;o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]++; MODE=9; break;case 7:o[X][Y+1]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y]--;o[X+1][Y+1]++;o[X+1][Y+2]++;o[X+2][Y+2]++; MODE=6;break;case 8:o[X+1][Y]--; o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X][Y+1]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y]++; MODE=7;break;case 9:o[X+1][Y]--; o[X+2][Y]--;o[X+3][Y]--;o[X+1][Y+1]--;o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++; MODE=8;break;case 10:o[X+1][Y]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+2][Y]++;o[X+3][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++; MODE=11; break;case 11:o[X+2][Y]--; o[X+3][Y]--;o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+1][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y+2]++;MODE=10;break;case 12:o[X+1][Y+1]--; o[X+2][Y+1]--;o[X+1][Y+2]--;o[X+2][Y]--;o[X+1][Y]++;o[X+2][Y]++;o[X+2][Y+1]++;o[X+3][Y+1]++; MODE=13;break;case 13:o[X+1][Y]--; o[X+2][Y]--;o[X+2][Y+1]--;o[X+3][Y+1]--;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+1][Y+2]++;o[X+2][Y]++;MODE=12;break;case 14:o[X+1][Y]=1; o[X+2][Y]=1;o[X+1][Y+1]=1;o[X+2][Y+1]=1; break;case 15:o[X+2][Y]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+3][Y+1]--;o[X+2][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+2][Y+2]++; MODE=16;break;case 16:o[X+2][Y]--; o[X+1][Y+1]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+1][Y]++;o[X+2][Y]++;o[X+3][Y]++;o[X+2][Y+1]++;MODE=17;break;case 17:o[X+1][Y]--;o[X+2][Y]--;o[X+3][Y]--;o[X+2][Y+1]--;o[X+2][Y]++;o[X+2][Y+1]++;o[X+2][Y+2]++;o[X+3][Y+1]++;MODE=18;break;case 18:o[X+2][Y]--;o[X+2][Y+1]--;o[X+2][Y+2]--;o[X+3][Y+1]--;o[X+2][Y]++;o[X+1][Y+1]++;o[X+2][Y+1]++;o[X+3][Y+1]++;MODE=15;break;}}public void keyPressed(KeyEvent e){if (e.getKeyCode()==KeyEvent.VK_LEFT)left();else if(e.getKeyCode()==KeyEvent.VK_RIGHT)right();else if(e.getKeyCode()==KeyEvent.VK_SPACE) change();else if(e.getKeyCode()==KeyEvent.VK_DOWN) down();else if(e.getKeyCode()==KeyEvent.VK_UP) change();repaint();}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}public void run(){while(true){this.repaint();down();try{Thread.sleep(1000/LEVEL);}catch (Exception e){}}}public static void main(String[] args){Els e=new Els();Thread t=new Thread(e);e.addKeyListener(e);e.setV isible(true);t.start();}private int o[][]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},};private int MODE=(int)(Math.random()*18);private int nextMODE=(int)(Math.random()*18);private int LINE=0;private int FEN=0;private int CODE=0;private int X=5;private int Y=0;private int LEVEL=1;private int SCORE=0;}。