首页 java俄罗斯方块

java俄罗斯方块

举报
开通vip

java俄罗斯方块java俄罗斯方块 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.getTool...

java俄罗斯方块
java俄罗斯方块 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; //L case 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); g2.fillRect(224, 74, 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(204, 74, 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]=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+1][Y]=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+2]=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+3]--; //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+2][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+3][Y+1]=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]--; o[X+3][Y+2]--; 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+1][Y+2]=0; 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][Y+1]=1; 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+1][Y]--; //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+1]++; 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+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+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+2][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][Y+1]--; 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]++; 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.setVisible(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; }
本文档为【java俄罗斯方块】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_954223
暂无简介~
格式:doc
大小:97KB
软件:Word
页数:0
分类:工学
上传时间:2017-09-30
浏览量:30