俄罗斯方块——Java版

package Karl.Doenitz;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

@SuppressWarnings("serial")
public class Tetris extends JFrame implements KeyListener {
	int pos[] = {0,1};
	boolean bottom = false;
int n = 20;
int m = 10;
JButton b[][];
Color tmp[][] = new Color[m][n];
int rand = 0;
int centralx = 0;
int centraly = 0;
int deltax = 0;
int perim[][] = new int[m+4][n+4];
or[][][] prof = new or[4][4][7];
Color rnd[] = {Color.red, Color.yellow, Color.cyan, Color.green, Color.white, Color.blue, Color.orange};
int rowsclrd = 0;
public Tetris(){
	this.setTitle("俄罗斯方块KarlDoenitz制作");
	for(int a = 0;a<4;a++){
		for(int b = 0;b<4;b++){
			for(int c = 0;c<7;c++){
				prof[a][b][c] = new or();
			}
		}
	}
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	prof[0][0][0].x = -1;
	prof[0][1][0].x = 0;
	prof[0][2][0].x = 0;
	prof[0][3][0].x = 1;
	prof[1][0][0].x = 0;
	prof[1][1][0].x = 0;
	prof[1][2][0].x = -1;
	prof[1][3][0].x = -1;
	prof[2][0][0].x = 1;
	prof[2][1][0].x = 0;
	prof[2][2][0].x = 0;
	prof[2][3][0].x = -1;
	prof[3][0][0].x = 0;
	prof[3][1][0].x = 0;
	prof[3][2][0].x = 1;
	prof[3][3][0].x = 1;
	prof[0][0][1].x = -1;
	prof[0][1][1].x = -1;
	prof[0][2][1].x = 0;
	prof[0][3][1].x = 1;
	prof[1][0][1].x = -1;
	prof[1][1][1].x = 0;
	prof[1][2][1].x = 0;
	prof[1][3][1].x = 0;
	prof[2][0][1].x = 1;
	prof[2][1][1].x = 1;
	prof[2][2][1].x = 0;
	prof[2][3][1].x = -1;
	prof[3][0][1].x = 1;
	prof[3][1][1].x = 0;
	prof[3][2][1].x = 0;
	prof[3][3][1].x = 0;
	prof[0][0][2].x = -1;
	prof[0][1][2].x = 0;
	prof[0][2][2].x = 1;
	prof[0][3][2].x = 1;
	prof[1][0][2].x = 0;
	prof[1][1][2].x = 0;
	prof[1][2][2].x = 0;
	prof[1][3][2].x = -1;
	prof[2][0][2].x = 1;
	prof[2][1][2].x = 0;
	prof[2][2][2].x = -1;
	prof[2][3][2].x = -1;
	prof[3][0][2].x = 0;
	prof[3][1][2].x = 0;
	prof[3][2][2].x = 0;
	prof[3][3][2].x = 1;
	prof[0][0][3].x = -1;
	prof[0][1][3].x = 0;
	prof[0][2][3].x = 0;
	prof[0][3][3].x = 1;
	prof[1][0][3].x = -1;
	prof[1][1][3].x = -1;
	prof[1][2][3].x = 0;
	prof[1][3][3].x = 0;
	prof[2][0][3].x = 1;
	prof[2][1][3].x = 0;
	prof[2][2][3].x = 0;
	prof[2][3][3].x = -1;
	prof[3][0][3].x = 1;
	prof[3][1][3].x = 1;
	prof[3][2][3].x = 0;
	prof[3][3][3].x = 0;
	prof[0][0][4].x = -1;
	prof[0][1][4].x = 0;
	prof[0][2][4].x = 0;
	prof[0][3][4].x = 1;
	prof[1][0][4].x = 0;
	prof[1][1][4].x = 0;
	prof[1][2][4].x = -1;
	prof[1][3][4].x = 0;
	prof[2][0][4].x = 1;
	prof[2][1][4].x = 0;
	prof[2][2][4].x = 0;
	prof[2][3][4].x = -1;
	prof[3][0][4].x = 0;
	prof[3][1][4].x = 0;
	prof[3][2][4].x = 1;
	prof[3][3][4].x = 0;
	prof[0][0][5].x = 0;
	prof[0][1][5].x = 0;
	prof[0][2][5].x = 1;
	prof[0][3][5].x = 1;
	prof[1][0][5].x = 0;
	prof[1][1][5].x = 0;
	prof[1][2][5].x = 1;
	prof[1][3][5].x = 1;
	prof[2][0][5].x = 0;
	prof[2][1][5].x = 0;
	prof[2][2][5].x = 1;
	prof[2][3][5].x = 1;
	prof[3][0][5].x = 0;
	prof[3][1][5].x = 0;
	prof[3][2][5].x = 1;
	prof[3][3][5].x = 1;
	prof[0][0][6].x = -1;
	prof[0][1][6].x = 0;
	prof[0][2][6].x = 1;
	prof[0][3][6].x = 2;
	prof[1][0][6].x = 0;
	prof[1][1][6].x = 0;
	prof[1][2][6].x = 0;
	prof[1][3][6].x = 0;
	prof[2][0][6].x = 1;
	prof[2][1][6].x = 0;
	prof[2][2][6].x = -1;
	prof[2][3][6].x = -2;
	prof[3][0][6].x = 0;
	prof[3][1][6].x = 0;
	prof[3][2][6].x = 0;
	prof[3][3][6].x = 0;
	prof[0][0][0].y = 0;
	prof[0][1][0].y = 0;
	prof[0][2][0].y = 1;
	prof[0][3][0].y = 1;
	prof[1][0][0].y = -1;
	prof[1][1][0].y = 0;
	prof[1][2][0].y = 0;
	prof[1][3][0].y = 1;
	prof[2][0][0].y = 0;
	prof[2][1][0].y = 0;
	prof[2][2][0].y = -1;
	prof[2][3][0].y = -1;
	prof[3][0][0].y = 1;
	prof[3][1][0].y = 0;
	prof[3][2][0].y = 0;
	prof[3][3][0].y = -1;
	prof[0][0][1].y = 0;
	prof[0][1][1].y = 1;
	prof[0][2][1].y = 0;
	prof[0][3][1].y = 0;
	prof[1][0][1].y = -1;
	prof[1][1][1].y = -1;
	prof[1][2][1].y = 0;
	prof[1][3][1].y = 1;
	prof[2][0][1].y = -1;
	prof[2][1][1].y = 0;
	prof[2][2][1].y = 0;
	prof[2][3][1].y = 0;
	prof[3][0][1].y = 1;
	prof[3][1][1].y = 1;
	prof[3][2][1].y = 0;
	prof[3][3][1].y = -1;
	prof[0][0][2].y = 0;
	prof[0][1][2].y = 0;
	prof[0][2][2].y = 0;
	prof[0][3][2].y = 1;
	prof[1][0][2].y = -1;
	prof[1][1][2].y = 0;
	prof[1][2][2].y = 1;
	prof[1][3][2].y = 1;
	prof[2][0][2].y = 0;
	prof[2][1][2].y = 0;
	prof[2][2][2].y = 0;
	prof[2][3][2].y = -1;
	prof[3][0][2].y = 1;
	prof[3][1][2].y = 0;
	prof[3][2][2].y = -1;
	prof[3][3][2].y = -1;
	prof[0][0][3].y = 1;
	prof[0][1][3].y = 1;
	prof[0][2][3].y = 0;
	prof[0][3][3].y = 0;
	prof[1][0][3].y = -1;
	prof[1][1][3].y = 0;
	prof[1][2][3].y = 0;
	prof[1][3][3].y = 1;
	prof[2][0][3].y = -1;
	prof[2][1][3].y = -1;
	prof[2][2][3].y = 0;
	prof[2][3][3].y = 0;
	prof[3][0][3].y = 1;
	prof[3][1][3].y = 0;
	prof[3][2][3].y = 0;
	prof[3][3][3].y = -1;
	prof[0][0][4].y = 0;
	prof[0][1][4].y = 0;
	prof[0][2][4].y = 1;
	prof[0][3][4].y = 0;
	prof[1][0][4].y = -1;
	prof[1][1][4].y = 0;
	prof[1][2][4].y = 0;
	prof[1][3][4].y = 1;
	prof[2][0][4].y = 0;
	prof[2][1][4].y = 0;
	prof[2][2][4].y = -1;
	prof[2][3][4].y = 0;
	prof[3][0][4].y = 1;
	prof[3][1][4].y = 0;
	prof[3][2][4].y = 0;
	prof[3][3][4].y = -1;
	prof[0][0][5].y = 0;
	prof[0][1][5].y = 1;
	prof[0][2][5].y = 0;
	prof[0][3][5].y = 1;
	prof[1][0][5].y = 0;
	prof[1][1][5].y = 1;
	prof[1][2][5].y = 0;
	prof[1][3][5].y = 1;
	prof[2][0][5].y = 0;
	prof[2][1][5].y = 1;
	prof[2][2][5].y = 0;
	prof[2][3][5].y = 1;
	prof[3][0][5].y = 0;
	prof[3][1][5].y = 1;
	prof[3][2][5].y = 0;
	prof[3][3][5].y = 1;
	prof[0][0][6].y = 0;
	prof[0][1][6].y = 0;
	prof[0][2][6].y = 0;
	prof[0][3][6].y = 0;
	prof[1][0][6].y = -1;
	prof[1][1][6].y = 0;
	prof[1][2][6].y = 1;
	prof[1][3][6].y = 2;
	prof[2][0][6].y = 0;
	prof[2][1][6].y = 0;
	prof[2][2][6].y = 0;
	prof[2][3][6].y = 0;
	prof[3][0][6].y = -1;
	prof[3][1][6].y = 0;
	prof[3][2][6].y = 1;
	prof[3][3][6].y = 2;
	for (int y = 0;y<2;y++){
	for (int x = 0;x<m+4;x++){
	perim[x][y]= 1;
	}}
	for (int y = n+2;y<n+4;y++){
		for (int x = 0;x<m+4;x++){
		perim[x][y]= 4;
		}}
	for (int y = 2;y<n+2;y++){
		for (int x = 0;x<2;x++){
		perim[x][y]= 2;
		}}
	for (int y = 2;y<n+2;y++){
		for (int x = m+2;x<m+4;x++){
		perim[x][y]= 2;
		}}
	for(int y = 0;y<n+4;y++){
		for (int x = 0;x<m+4;x++){
			System.out.print(perim[x][y]);
		}
		System.out.println("");
	}
            b = new JButton [m][n];
            setLayout(new GridLayout(n,m));//Grid layouts x and y are SWAPPED!
            for (int y = 0;y<n;y++){
                for (int x = 0;x<m;x++){
                        b[x][y] = new JButton(" ");
                        tmp[x][y] = Color.DARK_GRAY;
                        b[x][y].setBackground(Color.DARK_GRAY);
                        add(b[x][y]);
                        b[x][y].setEnabled(true);
                }//end inner for
        }
            setFocusable(true);
            addKeyListener(this);
            pack();
            setVisible(true);
            blockgen();
           
            
    }//end constructor Mine()

	class or {
		int x;
		int y;
	}

	public void blockgen(){
		Component temporaryLostComponent = null;
		pos[0] = 0;
		pos[1] = 1;
		rand = (int) (Math.floor(Math.random()*7+1));
      	centralx = 4;
        centraly = 0;
         System.out.print(rand);
		if ((b[4+prof[pos[0]][0][rand-1].x][prof[pos[0]][0][rand-1].y].getBackground() == Color.DARK_GRAY) &&
 		(b[4+prof[pos[0]][1][rand-1].x][prof[pos[0]][1][rand-1].y].getBackground() == Color.DARK_GRAY) &&
 		(b[4+prof[pos[0]][2][rand-1].x][prof[pos[0]][2][rand-1].y].getBackground() == Color.DARK_GRAY) &&
 		(b[4+prof[pos[0]][3][rand-1].x][prof[pos[0]][3][rand-1].y].getBackground() == Color.DARK_GRAY)){
 		b[4+prof[pos[0]][0][rand-1].x][prof[pos[0]][0][rand-1].y].setBackground(rnd[rand-1]);
 		b[4+prof[pos[0]][1][rand-1].x][prof[pos[0]][1][rand-1].y].setBackground(rnd[rand-1]);
 		b[4+prof[pos[0]][2][rand-1].x][prof[pos[0]][2][rand-1].y].setBackground(rnd[rand-1]);
 		b[4+prof[pos[0]][3][rand-1].x][prof[pos[0]][3][rand-1].y].setBackground(rnd[rand-1]);
      	go();
		} else {
			JOptionPane.showMessageDialog(temporaryLostComponent, "游戏结束! 你一共得了"+rowsclrd+" 分,干得好,继续努力!");
            System.exit(0);
		}
	}
	
	public void rotate(){
		if (pos[0] < 3){
			pos[1] = pos[0];
		pos[0]++;
		} else if (pos[0] == 3){
			pos[0] = 0;
			pos[1] = 3;
		} else {
			System.out.println("error");
		}
		if ((perim[2+centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y+2] != 4) && (perim[2+centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y+2] != 1) && (perim[2+centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y+2] != 2) && (perim[2+centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y+2] != 3)
	    		 && (perim[centralx+2+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y+2] != 4) && (perim[centralx+2+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y+2] != 1) && (perim[centralx+2+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y+2] != 2) && (perim[centralx+2+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y+2] != 3)
	    		 && (perim[centralx+2+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y+2] != 4) && (perim[centralx+2+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y+2] != 1) && (perim[centralx+2+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y+2] != 2) && (perim[centralx+2+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y+2] != 3)
	    		 && (perim[centralx+prof[pos[0]][3][rand-1].x+2][centraly+prof[pos[0]][3][rand-1].y+2] != 4) && (perim[centralx+prof[pos[0]][3][rand-1].x+2][centraly+prof[pos[0]][3][rand-1].y+2] != 1) && (perim[centralx+prof[pos[0]][3][rand-1].x+2][centraly+prof[pos[0]][3][rand-1].y+2] != 2) && (perim[centralx+prof[pos[0]][3][rand-1].x+2][centraly+prof[pos[0]][3][rand-1].y+2] != 3)){
        	 b[centralx+prof[pos[1]][0][rand-1].x][centraly+prof[pos[1]][0][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+prof[pos[1]][1][rand-1].x][centraly+prof[pos[1]][1][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+prof[pos[1]][2][rand-1].x][centraly+prof[pos[1]][2][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+prof[pos[1]][3][rand-1].x][centraly+prof[pos[1]][3][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+(prof[pos[0]][0][rand-1].x)][centraly+(prof[pos[0]][0][rand-1].y)].setBackground(rnd[rand-1]);
	    	    b[centralx+(prof[pos[0]][1][rand-1].x)][centraly+(prof[pos[0]][1][rand-1].y)].setBackground(rnd[rand-1]);
	    	    b[centralx+(prof[pos[0]][2][rand-1].x)][centraly+(prof[pos[0]][2][rand-1].y)].setBackground(rnd[rand-1]);
	    	    b[centralx+(prof[pos[0]][3][rand-1].x)][centraly+(prof[pos[0]][3][rand-1].y)].setBackground(rnd[rand-1]);
		} else {
			if (pos[1] > 0){
				pos[0] = pos[1];
				pos[1]--;
			} else if (pos[1] == 0){
				pos[0] = 0;
				pos[1] = 3;				}
			}
	}
	
	
	public int getxs(){
		   int xs = 0;
		   int[] xf = {-1, -1, -1, -1};
		   for (int d = 0;d<4;d++){
			   if ((xf[0] != prof[pos[0]][d][rand-1].x) || (xf[1] != prof[pos[0]][d][rand-1].x) || (xf[2] != prof[pos[0]][d][rand-1].x) || (xf[3] != prof[pos[0]][d][rand-1].x)){
				   xf[d] = prof[pos[0]][d][rand-1].x;
			   }
		   }
		   for (int d = 0;d<4;d++){
			   if (xf[d] != -1){
				   xs++;
			   }
		   }
		   return xs;
	}
	
	
   public void movedown(){
	   int[] m2 = {-1, -1, -1, -1};
	   int[] m1 = {-1, -1, -1, -1};
	   int[] zero = {-1, -1, -1, -1};
	   int[] one = {-1, -1, -1, -1};
	   int[] two = {-1, -1, -1, -1};
	   	for (int d = 0;d<4;d++){
	   		if (prof[pos[0]][d][rand-1].x == -2){
	   			m2[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].x == -1){
	   			m1[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].x == 0){
	   			zero[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].x == 1){
	   			one[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].x == 2){
	   			two[d] = d;
	   		}
	   	}
	   	int tmpm2 = -5;
	   	int tmpm1 = -5;
	   	int tmpzero = -5;
	   	int tmpone = -5;
	   	int tmptwo = -5;
	   	for (int d = 0;d<4;d++){
	   		if (m2[d] != -1){
	   			if (tmpm2<prof[pos[0]][m2[d]][rand-1].y){
	   			tmpm2 = prof[pos[0]][m2[d]][rand-1].y;
	   			}
	   		}
	   		if (m1[d] != -1){
	   			if (tmpm1<prof[pos[0]][m1[d]][rand-1].y){
	   			tmpm1 = prof[pos[0]][m1[d]][rand-1].y;
	   		}
	   		}
	   		if (zero[d] != -1){
	   			if (tmpzero<prof[pos[0]][zero[d]][rand-1].y){
	   			tmpzero = prof[pos[0]][zero[d]][rand-1].y;
	   		}
	   		}
	   		if (one[d] != -1){
	   			if (tmpone<prof[pos[0]][one[d]][rand-1].y){
	   			tmpone = prof[pos[0]][one[d]][rand-1].y;
	   		}
	   		}
	   		if (two[d] != -1){
	   			if (tmptwo<prof[pos[0]][two[d]][rand-1].y){
	   			tmptwo = prof[pos[0]][two[d]][rand-1].y;
	   		}
	   		}
	   	}
	   	int total = 0;
	   	for (int d = 0;d<4;d++){
	   		if (prof[pos[0]][d][rand-1].x == -2){
	   			if (perim[2+centralx+-2][2+centraly+tmpm2+1] != 4){ 
	   				if(b[centralx+-2][centraly+tmpm2+1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].x == -1){
	   			if (perim[2+centralx+-1][2+centraly+tmpm1+1] != 4){
	   					if (b[centralx+-1][centraly+tmpm1+1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].x == 0){
	   			if (perim[2+centralx][2+centraly+tmpzero+1] != 4){
	   					if (b[centralx][centraly+tmpzero+1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].x == 1){
	   			if (perim[2+centralx+1][2+centraly+tmpone+1] != 4){
	   					if (b[centralx+1][centraly+tmpone+1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].x == 2){
	   			if (perim[2+centralx+2][2+centraly+tmptwo+1] != 4){
	   				if (b[centralx+2][centraly+tmptwo+1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		}
	   	}
	    	 if (total == 4){
	    		  b[centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y].setBackground(Color.DARK_GRAY);
	    	    b[centralx+prof[pos[0]][3][rand-1].x][centraly+prof[pos[0]][3][rand-1].y].setBackground(Color.DARK_GRAY);
	         	centraly++;
	         	b[centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y].setBackground(rnd[rand-1]);
	    	    b[centralx+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y].setBackground(rnd[rand-1]);
	    	    b[centralx+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y].setBackground(rnd[rand-1]);
	    	    b[centralx+prof[pos[0]][3][rand-1].x][centraly+prof[pos[0]][3][rand-1].y].setBackground(rnd[rand-1]);
	    	  } else {
	    	
bottom = true;
	        	 }
	         }
	   

   
   public void go(){
	   do{
	   try {
		Thread.sleep(1000L);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	   movedown();
	   rowcheck();
   }
   while(bottom == false);
	   bottom = false;
	   blockgen();
	   }
   
   public void rowcheck(){
	   int row = 0;
	   for (int y = 0;y<20;y++){
		   for (int x = 0;x<10;x++){
			   if (b[x][y].getBackground() != Color.DARK_GRAY){
				   row++;
			   }
			   if (row == 10){
				   rowsclrd++;
				   rowclear(y);				   
			   }
		   }
		   row = 0;
	   }
   }
   
   public void rowclear(int y){
	   int inc = 0;
	   for (int x = 0;x<10;x++){
		   b[x][y].setBackground(Color.DARK_GRAY);
	   }
	   for (int c = y-1;c>-1;c--){
       for (int x = 0;x<10;x++){
	   tmp[x][y-inc] = b[x][c].getBackground();
       }inc++;}
	   for (int c = y;c>-1;c--){
		   for (int x = 0;x<10;x++){
			   b[x][c].setBackground(tmp[x][c]);
		   }
	   }
   }
   
   public void movelr(){    		  
	   int[] m2 = {-1, -1, -1, -1};
	   int[] m1 = {-1, -1, -1, -1};
	   int[] zero = {-1, -1, -1, -1};
	   int[] one = {-1, -1, -1, -1};
	   int[] two = {-1, -1, -1, -1};
	   	for (int d = 0;d<4;d++){
	   		if (prof[pos[0]][d][rand-1].y == -2){
	   			m2[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].y == -1){
	   			m1[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].y == 0){
	   			zero[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].y == 1){
	   			one[d] = d;
	   		} else if (prof[pos[0]][d][rand-1].y == 2){
	   			two[d] = d;
	   		}
	   	}
	   		int tmpm2 = -5;
		   	int tmpm1 = -5;
		   	int tmpzero = -5;
		   	int tmpone = -5;
		   	int tmptwo = -5;
	   	if (deltax == 1){
	   	for (int d = 0;d<4;d++){
	   		if (m2[d] != -1){
	   			if (tmpm2<prof[pos[0]][m2[d]][rand-1].x){
	   			tmpm2 = prof[pos[0]][m2[d]][rand-1].x;
	   			}
	   		}
	   		if (m1[d] != -1){
	   			if (tmpm1<prof[pos[0]][m1[d]][rand-1].x){
	   			tmpm1 = prof[pos[0]][m1[d]][rand-1].x;
	   		}
	   		}
	   		if (zero[d] != -1){
	   			if (tmpzero<prof[pos[0]][zero[d]][rand-1].x){
	   			tmpzero = prof[pos[0]][zero[d]][rand-1].x;
	   		}
	   		}
	   		if (one[d] != -1){
	   			if (tmpone<prof[pos[0]][one[d]][rand-1].x){
	   			tmpone = prof[pos[0]][one[d]][rand-1].x;
	   		}
	   		}
	   		if (two[d] != -1){
	   			if (tmptwo<prof[pos[0]][two[d]][rand-1].x){
	   			tmptwo = prof[pos[0]][two[d]][rand-1].x;
	   		}
	   		}
	   	}
	   	} else if (deltax == -1){
	   		tmpm2 = 5;
		   	tmpm1 = 5;
		   	tmpzero = 5;
		   	tmpone = 5;
		   	tmptwo = 5;
	   		for (int d = 0;d<4;d++){
		   		if (m2[d] != -1){
		   			if (tmpm2>prof[pos[0]][m2[d]][rand-1].x){
		   			tmpm2 = prof[pos[0]][m2[d]][rand-1].x;
		   			}
		   		}
		   		if (m1[d] != -1){
		   			if (tmpm1>prof[pos[0]][m1[d]][rand-1].x){
		   			tmpm1 = prof[pos[0]][m1[d]][rand-1].x;
		   		}
		   		}
		   		if (zero[d] != -1){
		   			if (tmpzero>prof[pos[0]][zero[d]][rand-1].x){
		   			tmpzero = prof[pos[0]][zero[d]][rand-1].x;
		   		}
		   		}
		   		if (one[d] != -1){
		   			if (tmpone>prof[pos[0]][one[d]][rand-1].x){
		   			tmpone = prof[pos[0]][one[d]][rand-1].x;
		   		}
		   		}
		   		if (two[d] != -1){
		   			if (tmptwo>prof[pos[0]][two[d]][rand-1].x){
		   			tmptwo = prof[pos[0]][two[d]][rand-1].x;
		   		}
		   		}
		   	}
	   	}
	   	int total = 0;
	   	for (int d = 0;d<4;d++){
	   		if (prof[pos[0]][d][rand-1].y == -2){
	   			if (perim[2+centralx+deltax+tmpm2][2+centraly-2] != 2){ 
	   				if(b[centralx+deltax+tmpm2][centraly-2].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].y == -1){
	   			if (perim[2+centralx+deltax+tmpm1][2+centraly-1] != 2){
	   					if (b[centralx+deltax+tmpm1][centraly-1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].y == 0){
	   			if (perim[2+centralx+deltax+tmpzero][2+centraly] != 2){
	   					if (b[centralx+deltax+tmpzero][centraly].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].y == 1){
	   			if (perim[2+centralx+deltax+tmpone][2+centraly+1] != 2){
	   					if (b[centralx+deltax+tmpone][centraly+1].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		} else if (prof[pos[0]][d][rand-1].y == 2){
	   			if (perim[2+centralx+deltax+tmptwo][2+centraly+2] != 2){
	   				if (b[centralx+deltax+tmptwo][centraly+2].getBackground() == Color.DARK_GRAY){
	   				total++;
	   			}}
	   		}
	   	} if (total == 4){
	   				b[centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y].setBackground(Color.DARK_GRAY);
	   				b[centralx+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y].setBackground(Color.DARK_GRAY);
	  	    	    b[centralx+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y].setBackground(Color.DARK_GRAY);
	  	    	    b[centralx+prof[pos[0]][3][rand-1].x][centraly+prof[pos[0]][3][rand-1].y].setBackground(Color.DARK_GRAY);
	  	         	centralx = centralx+deltax;
	  	         	b[centralx+prof[pos[0]][0][rand-1].x][centraly+prof[pos[0]][0][rand-1].y].setBackground(rnd[rand-1]);
	  	    	    b[centralx+prof[pos[0]][1][rand-1].x][centraly+prof[pos[0]][1][rand-1].y].setBackground(rnd[rand-1]);
	  	    	    b[centralx+prof[pos[0]][2][rand-1].x][centraly+prof[pos[0]][2][rand-1].y].setBackground(rnd[rand-1]);
	  	    	    b[centralx+prof[pos[0]][3][rand-1].x][centraly+prof[pos[0]][3][rand-1].y].setBackground(rnd[rand-1]);
	   	}
	    		  
	    	  
   }

public static void main (String[] args){
	new Tetris();
}

@Override
public void keyPressed(KeyEvent e) {
	if (e.getKeyCode() == KeyEvent.VK_RIGHT){
		deltax = 1;
		movelr();
		}
	if (e.getKeyCode() == KeyEvent.VK_LEFT){
		deltax = -1;
		movelr();
		}
	if (e.getKeyCode() == KeyEvent.VK_UP){
		rotate();
		}
	if (e.getKeyCode() == KeyEvent.VK_DOWN){
		movedown();
		}
}


@Override
public void keyReleased(KeyEvent e) {
	// TODO Auto-generated method stub
	
}


@Override
public void keyTyped(KeyEvent e) {
	// TODO Auto-generated method stub
	
}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值