⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fang.java

📁 简单的小游戏俄罗斯方块 java开发 含报告
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
public class fang extends JFrame implements KeyListener ,ActionListener{
	protected JPanel p1,p2;
	JLabel label,imlabel;
	JRadioButtonMenuItem r1,r2,r3,r4 ;
    protected ButtonGroup bg;
    protected JMenuBar menubar;
    protected JMenu menu,submenu;
    protected JMenuItem start,dengji,out,chonglai;
	JLabel[][] l;
	int[][] a;
	JLabel[][] L1;
	int[][] aaa;
	kuai kuai;	 
	int x,y,b,bb,count,count1,count2,fenshu,sudu,mm,beishu,nn;
	boolean go,to,ri,fi,zou,yuce;   
	music mu;
	xiaohang xiao;
	public fang(){		
		menubar=new JMenuBar();
		this.setJMenuBar(menubar);		
		menu=new JMenu("操作");
	    menubar.add(menu);	    
	    start=new JMenuItem("开始");
	    start.addActionListener(this);
	    start.registerKeyboardAction(this,KeyStroke.getKeyStroke("F5"),JComponent.WHEN_IN_FOCUSED_WINDOW);
	    menu.add(start);
	    bg=new ButtonGroup();
	    submenu=new JMenu("等级");
	    r1=new JRadioButtonMenuItem("等级一",true);
	    r1.addActionListener(this);
	    bg.add(r1);	    
	    r2=new JRadioButtonMenuItem("等级二",false);
	    r2.addActionListener(this);
	    bg.add(r2);	    
	    r3=new JRadioButtonMenuItem("等级三",false);
	    r3.addActionListener(this);
	    bg.add(r3);	    
	    r4=new JRadioButtonMenuItem("等级四",false);
	    r4.addActionListener(this);
	    bg.add(r4);	    
	    submenu.add(r1);
	    submenu.add(r2);
	    submenu.add(r3);
	    submenu.add(r4);
	    menu.add(submenu);	    
	    chonglai=new JMenuItem("重来");
	    chonglai.addActionListener(this);
	    chonglai.setEnabled(false);
	    menu.add(chonglai);	    
	    out=new JMenuItem("退出");
	    out.addActionListener(this);
	    menu.add(out);	    		 
		mu=new music();
		kuai=new kuai();
		this.setTitle("游戏-俄罗斯方块");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(500,456);
		this.setLocation(300,100);
		x=0;
		y=8;
		beishu=0;
		this.go=false;
		this.to=true;
		this.fi=true;
		this.ri=true;
		this.zou=false;
		this.yuce=true;
		this.nn=400;
		this.sudu=nn;
		count=0;
		count1=0;
		count2=0;
		fenshu=0;		 
		Container cp=getContentPane();
	    cp.setBackground(Color.pink);
		label=new JLabel("",JLabel.CENTER);
		label.setForeground(Color.red);
		label.setText("分数:"+fenshu);
		label.setBounds(310,15,80,40);
		label.setOpaque(true);
		l=new JLabel[20][15];
		a=new int[24][23];	 
	    imlabel=new JLabel();
	    imlabel.setBounds(307,170,176,220);
	    ImageIcon icon=new ImageIcon("1.jpg");
	    imlabel.setIcon(icon);
		L1=new JLabel[4][4];
		aaa=new int[4][4];
		for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){
				L1[i][j]=new JLabel();
				L1[i][j].setOpaque(true);
				aaa[i][j]=0;
			}			
				}						
		for(int i=0;i<20;i++){
			for(int j=0;j<15;j++){
				l[i][j]=new JLabel();				 
				 l[i][j].setOpaque(true);				 
			}
		}
		for(int i=0;i<24;i++){
			for(int j=0;j<23;j++){
				a[i][j]=0;
			}
		} 
	    this.addKeyListener(this);
		p2=new JPanel();
		 p2.setBounds(315,70,84,84);
		 p2.setBorder(new BevelBorder(BevelBorder.RAISED));	 
		p2.setBackground(Color.white);
		p2.setOpaque(true);
		p2.setLayout(new GridLayout(4,4,1,1));		
		for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){
				p2.add(L1[i][j]);
			}
		}
		p1=new JPanel();
		 p1.setBounds(5,5,290,385);
		 p1.setBorder(new BevelBorder(BevelBorder.RAISED));	 
		p1.setBackground(Color.white);
		p1.setOpaque(true);
		p1.setLayout(new GridLayout(20,15,1,1));	   
		for(int i=0;i<20;i++){
			for(int j=0;j<15;j++){
				p1.add(l[i][j]);
			}
		}	  
		cp.add(p1);
		cp.add(p2);
		cp.add(label);
		cp.add(imlabel);
		cp.setLayout(null);	  
    xiao=new xiaohang(this,mu);	 			
	}
	public void actionPerformed(ActionEvent e){
	  Object s=e.getSource();
	  if(s==start){
	  	 this.init1();
		 b=mm;		     
		this.fuzhi(); 
	  	 xiao.start();
			mu.play();
			start.setEnabled(false);
			chonglai.setEnabled(true);
	  }
	  if(s==r1){
	  	nn=400;
	  }
	  if(s==r2){
	  	nn=300;
	  } 
	  if(s==r3){
	  	nn=200;
	  }
	  if(s==r4){
	  	nn=100;
	  }
	  if(s==out){
	  	System.exit(0);
	  }
	  if(s==chonglai){
	  	xiao.suspend();
	  	for(int i=0;i<20;i++){
	  		for(int j=0;j<15;j++){
	  			a[i][j+4]=0;
	  			l[i][j].setBackground(p1.getBackground());	  			
	  		}
	  	}
	  for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){		 
				aaa[i][j]=0;
				L1[i][j].setBackground(p2.getBackground());
			}
			
		}
		x=0;
		y=8;
	      mu.play();
		 this.go=false;
		this.to=true;
		this.fi=true;
		this.ri=true;
		this.zou=false;
		this.yuce=true;		
		count=0;
		count1=0;
		count2=0;
		fenshu=0;
		label.setText(""+0);
		beishu=0;
		this.init1();
		 b=mm;		     
		this.fuzhi(); 
	  	 xiao.resume();				
	  }
	  
	}
	public void init(){		     
		    b=mm;
		     if((nn-(fenshu/500)*20)>40){
		     sudu=nn-(fenshu/500)*20;
		      }else{
		    	sudu=40;
		     }		     
		    	x=0;
		       y=8;
		       count=0;
		       to=true;
		       ri=true;
		       fi=true;
		       zou=false;
		this.fuzhi(); 
	}
	     public void yundong() {	     
	 	if(stop()){			  
			 this.defen();
			 this.beishu=0;
		   this.yuce=true;
			this.init();
			go=false;
		}	   	   
		count1++;
		for(int i=0;i<20;i++){
			for(int j=0;j<15;j++){
				if(a[i][j+4]==0){
					l[i][j].setBackground(p1.getBackground());					
				}
				if(a[i][j+4]==1){
					l[i][j].setBackground(Color.GRAY);				
				}
			}
		}		
		if(count1%sudu==0){					
		 this.xialuo();
		}
			 if(yuce){
	     		this.init1();
	     	} 
	     	if(!this.stop()){
	     		 this.yuce=false;
	     	}		
	}
	public void fuzhi(){
		for(int i=0;i<4;i++){
				 	for(int j=0;j<4;j++){
				 		if(a[x+i][y+j]!=1&&kuai.l[b][i][j]==1){
				 			a[x+i][y+j]=kuai.l[b][i][j];
				 		}				 		
				 	}
				 }
	}
	public void init1(){
		 mm=kuai.chuangjian();
			for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){			 
				aaa[i][j]=0;
			}
			
				}		
			for(int i=0;i<4;i++){
				 	for(int j=0;j<4;j++){
				 		if(aaa[i][j]!=1&&kuai.l[mm][i][j]==1){
				 			aaa[i][j]=kuai.l[mm][i][j];
				 		}			 		
				 	}
				 }				 
			for(int i=0;i<4;i++){
			for(int j=0;j<4;j++){
			 if(aaa[i][j]==0){
			  L1[i][j].setBackground(p2.getBackground());
			 }
			 if(aaa[i][j]==1){
			 	L1[i][j].setBackground(Color.black);
			 }
			 }			
		    }		 		
	}
	public void keyPressed(KeyEvent e){
		if(e.getKeyCode()==e.VK_ENTER){
			if(count2%2==0){
				xiao.suspend();				
			}
			if(count2%2==1){
				xiao.resume();				 
			}
			count2++;
		}		
		if(e.getKeyCode()==32){
			if(!this.stop()){
				this.sudu=1;
			}
		}	 		
		if(e.getKeyCode()==37){//left
		if(this.canl()){
	         ri=true;			  
				 for(int i=0;i<4;i++){
				 	for(int j=0;j<4;j++){
				 	if(kuai.l[b][i][j]==1){
				 			a[x+i][y+j]=0;
				 		}
				 	}
				 }
				 y--;
				 this.fuzhi(); 
			}	 
		}		
	 if(e.getKeyCode()==39){//right
	 if(this.canr()){
	 fi=true;	  
	 	for(int i=0;i<4;i++){
				 	for(int j=0;j<4;j++){
				 		if(kuai.l[b][i][j]==1){
				 			a[x+i][y+j]=0;
				 		}
				 	}
				 }
				 y++;
				 this.fuzhi(); 	 	
	 }	 
	 }
	 if(e.getKeyCode()==38){//up bianhuan	 
	 if(kebian()&&b!=3){	 	 	 
	 count++;
	 for(int i=0;i<4;i++){
				 	for(int j=0;j<4;j++){
				 		if(kuai.l[b][i][j]==1){
				 			a[x+i][y+j]=0;
				 		}				 		
				 	}
				 }
	    if(b==0){
	    	if(count==1){    	   
	    	    int m[][]= {{1,1,1,1},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
	    	    for(int i=0;i<4;i++){
	    	    	for(int j=0;j<4;j++){
	    	    		kuai.l[b][i][j]=m[i][j];
	    	    	}
	    	    }
	    	    while(y+3>18){
	    	    	y--;
	    	    }
	    	    while(a[x+1][y+1]==1||a[x+1][y+2]==1||a[x+1][y+1]==1){
	    	    	x--;
	    	    }
	    	   this.fuzhi(); 	    	  
	    	}
	    	if(count==2){
	    	   
	    		int m[][]={{1,0,0,0},{1,0,0,0},{1,0,0,0},{1,0,0,0}};
	    		 for(int i=0;i<4;i++){
	    	    	for(int j=0;j<4;j++){
	    	    		kuai.l[b][i][j]=m[i][j];
	    	    	}
	    	    }
	    	    while(a[x+3][y]==1||a[x+2][y]==1){
	    	    	x--;
	    	    }
	    	   this.fuzhi(); 	    		
	    	 count=0;	
	    	}	    
	    }
	 if(b==1){
	    	if(count==1){	    	   
	    	    int m[][]= {{0,1,1,1},{0,1,0,0},{0,0,0,0},{0,0,0,0}};//L+90度
	    	    for(int i=0;i<4;i++){
	    	    	for(int j=0;j<4;j++){
	    	    		kuai.l[b][i][j]=m[i][j];
	    	    	}
	    	    }
	    	    while(y<3){
	    	      y++;
	    	    }
	    	    while(y+3>18){
	    	    	y--;
	    	    }	    	     
	    	   this.fuzhi(); 	    	  
	    	}
	    	if(count==2){	    	   
	    		int m[][]={{0,0,1,1},{0,0,0,1},{0,0,0,1},{0,0,0,0}};//L+180度
	    		 for(int i=0;i<4;i++){
	    	    	for(int j=0;j<4;j++){
	    	    		kuai.l[b][i][j]=m[i][j];
	    	    	}
	    	    }
	    	    while(y<2){
	    	      y++;
	    	    }
	    	    while(y+3>18){
	    	    	y--;
	    	    }
	    	    while(a[x+3][y]==1){
	    	    	x--;
	    	    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -