贪食蛇(Snake)
package Game_snake;
import javax.swing.*;
public class StartGrame
{
public static void main(String[] args)
{
JFrame frame=new JFrame("贪食蛇");
frame.setBounds(10,10,900,720);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//2.画板jpanel 可以加入到Frame
frame.add(new GamePanel());//设置颜色
frame.setVisible(true);
}
}
package Game_snake;
import javax.swing.*;
import java.net.URL;
//存放外部数据
public class Data
{
//头部的图片 URL 定位资源图片 imageIcon :图片
public static URL headrURL=Data.class.getResource("/statics/header.png"); //当前这个类点class获取它的反对象
public static ImageIcon header=new ImageIcon(headrURL);
//头部
public static URL upURL=Data.class.getResource("/statics/up.png");
public static URL downURL=Data.class.getResource("/statics/down.png");
public static URL leftURL=Data.class.getResource("/statics/left.png");
public static URL rightURL=Data.class.getResource("/statics/right.png");
public static ImageIcon up=new ImageIcon(upURL);
public static ImageIcon down=new ImageIcon(downURL);
public static ImageIcon left=new ImageIcon(leftURL);
public static ImageIcon right=new ImageIcon(rightURL);
//身体
public static URL bodyURL=Data.class.getResource("/statics/body.png");
public static ImageIcon body=new ImageIcon(bodyURL);
//食物
public static URL foodURL=Data.class.getResource("/statics/food.png");
public static ImageIcon food=new ImageIcon(foodURL);
}
package Game_snake;
import javax.swing.*;
import java.awt.*;
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 GamePanel extends JPanel implements KeyListener, ActionListener {//ActionListener事件监听在Timer按alt+enter
int lengt;//蛇的长度
int [] snakex=new int[600];//蛇的坐标x
int [] snakey=new int[500];//蛇的坐标y
String fx;//R右 //L左 U 上 D 下
boolean isStart=false;//游戏是否开始
Timer timer=new Timer(100,this);//定时器 每隔一百毫秒动一次
//定义一个食物
int foodx;
int foody;
Random random=new Random(); //随机数的类
//死亡判断
boolean isFail=false;
//积分系统
int score;
//构造器 调用初始化方法
public GamePanel()
{
init();
//获取键盘的监听事件
this.setFocusable(true);//键盘焦点聚集在游戏上面
this.addKeyListener(this);
timer.start();//(构造器也得)让时间动起来 如果在初始化的时候不让它运行,计时器就不能动了,就调用不到actionPerformed方法
}
//初始化数据
public void init()
{
lengt=3;
snakex[0]=100;snakey[0]=100; //头的位置坐标
snakex[1]=75;snakey[1]=100; //第一个身体
snakex[2]=50;snakey[2]=100; //第二个身体
fx="R";
foodx=25+25*random.nextInt(34);//25开始加上游戏的屏幕坐标
foody=75+25*random.nextInt(24);
score=0;
}
//画板:画界面,画蛇
//Graphics:画笔