Java做一个贪吃蛇小游戏

包名snakegame
第一个类 Snake

package snakegame;
import javax.swing.JFrame;

public class Snake {

	/**
	 * @param args
	 */
	/*运行框大小900*720,沙盘大小850*600*/
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame frame = new JFrame();
		frame.setBounds(200, 80, 900, 720);//设置边框坐标
		frame.setResizable(false);//设置边框为不可改变的大小
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );//设置默认退出时自动关闭程序,没有设置的话,默认点关闭时只是隐藏窗体,在后台进程中还可以看到
		
		
		Snake_Panel panel1 = new Snake_Panel();
		frame.add(panel1);//将panel视图添加到边框上
		frame.setVisible(true);//使视图可见
	}

}

第二个类 Snake_Panel

package snakegame;

import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.ImageIcon;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;

public class Snake_Panel extends JPanel implements KeyListener,ActionListener {//KeyListener监听键盘,
	//ActionListener监听事件
		
	//创建图像对象
	ImageIcon title = new ImageIcon("pic/title.jpg");
	ImageIcon body = new ImageIcon("pic/body.png");
	ImageIcon food = new ImageIcon("pic/food.png");
	ImageIcon up = new ImageIcon("pic/up.png");
	ImageIcon down = new ImageIcon("pic/down.png");
	ImageIcon left = new ImageIcon("pic/left.png");
	ImageIcon right = new ImageIcon("pic/right.png");
	
	int snake_x[] = new int[100];//存放蛇的横坐标
	int snake_y[] = new int[100];//存放蛇的纵坐标
	int snake_lenth;//存放蛇的长度
	String direction = "right";//存放蛇头的方向
	boolean isStarted = false; //记录游戏的暂停开始状态
	Timer timer = new Timer(200,this);//每当过Nms,触发监听事件
	
	Random r = new Random();
	int food_x = r.nextInt(34)*25+25;
	int food_y = r.nextInt(24)*25+75;
	
	public Snake_Panel()
	{
		this.setFocusable(true);//使画布可被选中,因为需要输入上下左右
		initSnake();//初始化蛇,即放置一个静态蛇
		this.addKeyListener(this);//添加键盘监听接口
		timer.start();
	}
	
	public void initSnake()//初始化蛇
	{
		snake_lenth=3;
		direction = "right";
		snake_x[0]=100;//数组的第一个代表蛇头,蛇身每+1,数组长度+1
		snake_y[0]=100;
		snake_x[1]=75;
		snake_y[1]=100;
		snake_x[2]=50;
		snake_y[2]=100; 
	}
	
	
	
	public void paint(Graphics g)
	{
		
		this.setBackground(Color.black);//设置背景颜色
		g.fillRect(25,75, 850, 600);//填充颜色区域,沙盘的大小为850*600
		
		title.paintIcon(this, g, 25,21);
//		body.paintIcon(this, g, 75, 100);
//		body.paintIcon(this, g, 50, 100);
//		right.paintIcon(this, g, 100, 100);	
		//画蛇头
		if(direction.equals("right"))
		{
			right.paintIcon(this, g, snake_x[0],snake_y[0]);
		}
		else if(direction.equals("left"))
		{
			left.paintIcon(this, g, snake_x[0],snake_y[0]);
		}
		else if(direction.equals("up"))
		{
			up.paintIcon(this, g, snake_x[0],snake_y[0]);
		}
		else if(direction.equals("down"))
		{
			down.paintIcon(this, g, snake_x[0],snake_y[0]);
		}
		//画蛇身
		for(int i=1;i0;i--)
			{
				snake_x[i]=snake_x[i-1];
				snake_y[i]=snake_y[i-1];
			}
			if(direction.equals("right"))
			{
				snake_x[0]+=25;
				if (snake_x[0]>850)
				{
					snake_x[0]=25;
				}
			}
			else if(direction.equals("left"))
			{
				snake_x[0]-=25;
				if(snake_x[0]<25)
				{
					snake_x[0]=850;
				}
			}
			else if(direction.equals("up"))
			{
				snake_y[0]-=25;
				if (snake_y[0]<75)
				{
					snake_y[0]=650;
				}
				
			}
			else if(direction.equals("down"))
			{
				snake_y[0]+=25;
				if (snake_y[0]>650)
				{
					snake_y[0]=75;
				}
			}
			repaint();
		}
		//实现吃食物的逻辑
		if(snake_x[0]== food_x&&snake_y[0]== food_y)
		{
			snake_lenth++;
			food_x = r.nextInt(34)*25+25;
			food_y = r.nextInt(24)*25+75;
		}

	}

	
}

IDE为Eclipse
Java做一个贪吃蛇小游戏_第1张图片

素材:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后效果图:
Java做一个贪吃蛇小游戏_第2张图片

你可能感兴趣的:(Java做一个贪吃蛇小游戏)