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

📄 gamepanel.java

📁 “贪食蛇”游戏小程序设计与制作。实现贪食蛇游戏的运行
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
class GamePanel extends Panel implements Runnable,KeyListener{
	Snake snake;
	MainFrame frame;
	Detu dp;
	SetPanel sp=new SetPanel(frame);
 	Images im1=new Images();
	int foods ;
	int length;
	int fnsuint;
	int jafnsu;
	int swsuint;
	int sudu;
	Point currentFood;
	int xBound,yBound;   
	Thread t;
	int drict;
	Sound sound3=new Sound("1.WAV");
	Label  screen[][];
	Panel imPanel=new Panel();
	Label fnsuLabel=new Label("得分:");
	Label fnsu=new Label("0");
	Label swsuLabel=new Label("吃食物个数:");
	Label swsu=new Label("0");
	Panel fn=new Panel();
	JPanel eu=new JPanel();
class Images extends Panel{
	Image t;
	Toolkit tool;
	Images(){
		tool=this.getToolkit();
		t=tool.getImage("5.jpg");
	}
	public void paint(Graphics g){
		g.drawImage(t,0,0,this);
	} 
} 
	GamePanel(MainFrame frame){
		this.frame=frame;
		xBound =58;   
		yBound = 47;
		this.setBackground(Color.cyan);
		screen =new Label[yBound][xBound];
		eu.setBackground(Color.gray);
		this.setLayout(null);
		eu.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.green,1),"游戏区")); 
		eu.setLayout(new GridLayout(yBound,xBound,1,1));
		add(im1);
		for(int i=0;i<yBound;i++){
			for(int j=0;j<xBound;j++){
				screen[i][j] = new  Label();				
				eu.add(screen[i][j]);
			}
		}
	 	add(fnsuLabel);
		fnsuLabel.setBounds(70,10,100,40);
		add(fnsu);
		fnsu.setBounds(170,10,50,40);
		add(swsuLabel);
		swsuLabel.setBounds(250,10,100,40);
		add(swsu);
		swsu.setBounds(350,10,30,40);
		eu.setBounds(10,50,424,356);
		add(eu);
		this.setVisible(true);
       	this.addKeyListener(this);
  	}

	public void init(){
		for(int i=0;i<yBound;i++){
			for(int j=0;j<xBound;j++){
				screen[i][j].setBackground(Color.green);
			}
    	 }
	}
	public void start(MainFrame frame){
		swsuint=0;
		init();		
		drict = 0;
		length=frame.length;
		sudu=frame.sudu;
     	foods=frame.foods;
       	fnsuint=0;
     	jafnsu=frame.jafnsu;
     	snake=new Snake(this);
     	dp=new Detu(this);
     	fnsu.setText("0");
     	swsu.setText("0");
     	if(frame.detu==1){
     		dp.detu_1();
     	}
     	else if(frame.detu==2){
     		dp.detu_2();
     	}
     	createFood();
     	display();
     if(t!=null) {
     	t.stop();
     }
     	t=new Thread(this);
     	t.start();	
	}
	public	boolean eatFood(){
		foods--;
		sound3.play();
		fnsuint+=jafnsu;
		swsuint++;
		fnsu.setText(""+fnsuint);
		swsu.setText(""+swsuint);
		if(foods==0){
			frame.card.show(frame,"v");
			return true;	
		}
		else{
			createFood();
			return false;
		}
	}
	public	void createFood(){	
	    int x,y;
	    Point b,c;
	    boolean a;
	    do{
	    	a= false ;
	    	x =(int)(Math.random()*xBound);
	    	y =(int)(Math.random()*yBound);
	    	currentFood =new Point(x,y);
	    	for(int j=0;j<snake.size();j++){
	    		c=(Point)snake.elementAt(j);
	    		if(c.equals(currentFood)) a=true;
	    		
	    	}
	    	for(int i=0;i<dp.size();i++){
	    		b=(Point)dp.elementAt(i);
	    	
	    		if(b.equals(currentFood)) a=true; 
	    	}
	    }while(a);  
	    screen[currentFood.y][currentFood.x].setBackground(Color.orange);
	}
	public void display(){
		Point p;
		screen[ snake.head.y][ snake.head.x].setBackground(Color.red);
		if(snake.end!=null)
			screen[ snake.end.y][ snake.end.x].setBackground(Color.green);
	}
	public void run(){
		int drict;
		while(true){
			drict=this.drict;
			if(!snake.move(drict)){
				frame.card.show(frame,"f");
				return ;
			}
			if(snake.head.equals(this.currentFood))
				if(eatFood()) {display();return ;}
				display();
			try{
				Thread.sleep(sudu);
			}catch(Exception e){}
		}	
	}
		public void keyTyped(KeyEvent e){}
		public void keyReleased(KeyEvent e){}
		public void keyPressed(KeyEvent e){
			switch(e.getKeyCode()){
				case 37:
					if(drict!=0) drict=2;break;
				case 38:
					if(drict!=1) drict=3;break;
				case 39:
					if(drict!=2) drict=0;break;
				case 40:
					if(drict!=3) drict=1;break;
			}
		}
}

⌨️ 快捷键说明

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