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

📄 贪吃蛇游戏界面.java.bak

📁 我们的project——贪吃蛇游戏
💻 BAK
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class 贪吃蛇游戏界面 extends JPanel implements Runnable,KeyListener
{
		JFrame snakeplay=new JFrame();
		JPanel[][] grids;
		JLabel gameover;
		LinkedList snakeBody;
		LinkedList others;
		Thread thread;

		Color bodyColor=Color.red;
		Color headColor=Color.green;
		Color tempColor=Color.orange;
		Color othersColor=Color.blue;
	
		snakeUse direction;		
		snakeUse snakeHead;
		snakeUse Block;
		SnakeModel snake;		
		

		int row = 25;
		int col = 50;
		int gameScore=0;
		int snakeLength=3;
		long speedTime;	
		boolean readyAddScore;		
		boolean isEnd;
		boolean gameHaveExit;

public 贪吃蛇游戏界面(贪吃蛇界面 游戏界面){  
	snakeplay = 游戏界面;
	//生成游戏界面
	grids=new JPanel[row][col];

		others=new LinkedList();
		snakeBody=new LinkedList();
		snakeHead=new snakeUse(0,0);
		Block=new snakeUse(0,0);
		direction=new snakeUse(0,1);

	setLayout(new GridLayout(row,col,1,1));

		for(int i=0;i<row;i++){
			for(int j=0;j<col;j++){
				grids[i][j]=new JPanel();
				grids[i][j].setBackground(Color.blue);
				add(grids[i][j]);
			}
		}
		addKeyListener(this);	
		
	}

	public void newGame(long speedTime){
		this.speedTime=speedTime;				
		if (gameHaveExit) {		
			snake.initializeV();
		}else{			
			snake=new SnakeModel(row,col);
			gameHaveExit=true;
			thread=new Thread(this);
			thread.start();
		}

		requestFocus();
		direction.setX(0);
		direction.setY(1);
		gameScore=0;
		snakeLength=3;
		updateTextFiled(""+gameScore,""+snakeLength);
		isEnd=false;		for(int i=0;i<row;i++){
			for(int j=0;j<col;j++){				
				add(grids[i][j]);
			}
		}	
		repaint();
		try{remove(gameover);}catch(NullPointerException e){}		
	}


	public void stopGame(){		
		requestFocus();
		isEnd=true;
	}


	public void resumeGame(){
		requestFocus();
		isEnd=false;
	}



	public int getGameScore()
		{return gameScore;	}

	private void updateTextFiled(String score,String body){
		((贪吃蛇界面)snakeplay).textField1.setText(score);
		((贪吃蛇界面)snakeplay).textField2.setText(body);		
	}
	
	private void updateBg(){		
		snakeBody=snake.getSnake();
		Iterator e =snakeBody.iterator();
		while(e.hasNext()){
			snakeUse t=(snakeUse)(e.next());
			grids[t.getX()][t.getY()].setBackground(bodyColor);
		}
		//设定蛇头颜色
		snakeHead=snake.getSnakeHead();
		grids[snakeHead.getX()][snakeHead.getY()].setBackground(headColor);
		//设定背景颜色
		others=snake.getOthers();
		e =others.iterator();
		while(e.hasNext()){
			snakeUse t=(snakeUse)(e.next());
			grids[t.getX()][t.getY()].setBackground(othersColor);
		}
		//设定临时块的颜色
		Block=snake.getTempBlock();
		grids[Block.getX()][Block.getY()].setBackground(tempColor);		
	}

	
	
	//实现Runnable接口
	public void run(){		
			while(true){				
		try{Thread.sleep(speedTime);}
			catch (InterruptedException e){}
				if(!isEnd){
					isEnd=!snake.move(direction);
					updateBg();
					if(snake.getReadyAddScore()){
						gameScore+=100;
						snakeLength+=1;
						updateTextFiled(""+gameScore,""+snakeLength);
					if (gameScore%100 == 0 && speedTime>25)
					{JOptionPane.showMessageDialog(snakeplay,"升级啦!\n注意了!\nREADY? GO !   !   !");
						if (speedTime >100 )
							speedTime -=100;
						else if (speedTime <=100 )
							speedTime -=25;
					}
					}
				if (isEnd)
				{	//GAME OVER是干什么
				
				//重新开始
				try{for(int i=0;i<row;i++){
					for(int j=0;j<col;j++){
						remove(grids[i][j]);						
							}
						}
				}catch(ArrayIndexOutOfBoundsException e){}
					
					setLayout(new FlowLayout());
					Icon gameoverPicture = new ImageIcon( "GAMEOVER.jpg" );
					gameover = new JLabel(gameoverPicture);
					gameover.setBackground(Color.red);
					add(gameover);
					repaint();
					validate();
					//重新开始结束
				}
			}									
		}			
	}
	
	//实现KeyListener接口
	
	public void keyPressed(KeyEvent event)
	      {  	         
			 
		     if (event.getKeyCode() == KeyEvent.VK_LEFT) {
		         	direction.setX(0);
		         	direction.setY(-1);		         				         			         	
		         }
		     if (event.getKeyCode() == KeyEvent.VK_RIGHT) {
		         	direction.setX(0);
		         	direction.setY(1);		         				         	
		         }
		     if (event.getKeyCode() == KeyEvent.VK_UP) {
		         	direction.setX(-1);
		         	direction.setY(0);		         				         			         	
		         }
		     if (event.getKeyCode() == KeyEvent.VK_DOWN) {
		         	direction.setX(1);
		         	direction.setY(0);		         				         			         	
		         }			 	
			 if (event.getKeyCode() == KeyEvent.VK_ENTER){
				 	isEnd=!isEnd;
				 }			 	
			 }
		 

	      
		public void keyReleased(KeyEvent event){}
		public void keyTyped(KeyEvent event){}	
		
		//实现KeyListener接口
}

⌨️ 快捷键说明

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