简单贪吃蛇 java应用 (感谢狂神说Java的教学)

//游戏的主启动类
public class StartGame {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setBounds(10,10,900,720);
        frame.setResizable(false);//窗口大小不可变
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
          //正常游戏界面都应该在面板上
        frame.add(new GamePanel());
        frame.setVisible(true);
    }
}
//游戏的面板
//1  定义数据
//2   画上去
// 3  监听事件   1 键盘监听  2  事件监听
    
public class GamePanel extends JPanel implements KeyListener, ActionListener {
    //定义蛇的数据结构
    int length;//蛇的长度
    int[]  snakeX=new int[600];//蛇的X坐标
    int[]  snakeY=new int[500];//蛇的Y坐标
    String fx;
    //食物的坐标
    int foodX;
    int foodY;
    Random random=new Random();
    //成绩
    int score;
    //游戏当前的状态
    boolean isStart=false;//默认不开始
    boolean isFail=false;//默认失败
    //定时器    以毫秒为单位
      Timer timer= new Timer(100,this);//100毫秒执行一次
    //构造器
    public GamePanel(){
        init();
        //获得焦点和键盘事件
        this.setFocusable(true);//获得焦点事件
        this.addKeyListener(this);//获得键盘监听事件
        timer.start();//游戏开始,定时器启动
    }
    //初始化方法
    public void init(){
        length=3;
        snakeX[0]=100;snakeY[0]=100;//脑袋的坐标
        snakeX[1]=75;snakeY[1]=100;//第一个身体的坐标
        snakeX[2]=50;snakeY[2]=100;//第二个身体的坐标
        //初始方向
        fx="Right";
        //把食物随机分布在界面上
        foodX=25+25*random.nextInt(34);
        foodY=75+25*random.nextInt(24);
        score=0;
    }
    //绘制面板,游戏中的所有东西都用这个画笔画
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);//清屏
        //绘制静态面板
        setBackground(Color.WHITE);
        Data.header.paintIcon(this,g,25,11);//头部广告栏
       g.fillRect(25,75,850,600);
       //画积分
        g.setColor(Color.cyan);
        g.setFont(new Font("微软雅黑",Font.BOLD,20));
       g.drawString("长度"+length,750,35);
       g.drawString("分数"+score,750,50);
        //画食物
        Data.food.paintIcon(this,g,foodX,foodY);
       //画小蛇
        if (fx.equals("Right")){
            Data.right.paintIcon(this,g,snakeX[0],snakeY[0]);//蛇头初始化向右,需要通过方向来判断
        }else if (fx.equals("Left")){
            Data.left.paintIcon(this,g,snakeX[0],snakeY[0]);//蛇头初始化向右,需要通过方向来判断
        }else if (fx.equals("Up")){
            Data.up.paintIcon(this,g,snakeX[0],snakeY[0]);//蛇头初始化向右,需要通过方向来判断
        }else if (fx.equals("Down")){
            Data.down.paintIcon(this,g,snakeX[0],snakeY[0]);//蛇头初始化向右,需要通过方向来判断
        }
        for (int i = 1; i 0 ; i--) {//后一节移到前一节
                snakeX[i]=snakeX[i-1];
                snakeY[i]=snakeY[i-1];
            }
            //走向
            if (fx.equals("Right")){
                snakeX[0]=snakeX[0]+25;
                if (snakeX[0]>850){snakeX[0]=25;}
            }else  if (fx.equals("Left")){
                snakeX[0]=snakeX[0]-25;
                if (snakeX[0]<25){snakeX[0]=850;}
            }else  if (fx.equals("Up")){
                snakeY[0]=snakeY[0]-25;
                if (snakeY[0]<75){snakeY[0]=650;}
            }else  if (fx.equals("Down")){
                snakeY[0]=snakeY[0]+25;
                if (snakeY[0]>650){snakeY[0]=75;}
            }
            //失败判定,撞到自己就算失败
            for (int i = 1; i 
//数据中心
public class Data {
    //相对路径  tx.jpg
    //绝对路径  /
    //栏
    public static  URL headerURL=Data.class.getResource("statics/header.png");
    public  static ImageIcon header=new ImageIcon(headerURL);
    //身体
    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);
}

你可能感兴趣的:(java,开发语言)