1 package com.gui.snake;
2
3 import javax.swing.*;
4 import java.awt.*;
5
6 //游戏的面板
7 public class GamePanel extends JPanel {
8
9 //定义蛇的数据结构
10 int length; //蛇的长度
11 int[] snakeX = new int[600]; //蛇的x坐标 25*25
12 int[] snakeY = new int[500]; //蛇的Y坐标 25*25
13 String fx;
14 //游戏当前的状态:开始、停止
15 boolean isStart = false; //默认是不开始
16
17 //构造器
18 public GamePanel() {
19 init();
20 }
21
22 //初始化方法
23 public void init() {
24 length = 3;
25 snakeX[0] = 100;
26 snakeY[0] = 100;//脑袋的坐标
27 snakeX[1] = 75;
28 snakeY[1] = 100;//第一个身体的坐标
29 snakeX[2] = 50;
30 snakeY[2] = 100;//第二个身体的坐标
31 fx = "R";//初始方向向右
32 }
33
34 //绘制面板,我们游戏中的所有东西,都是用这个画笔来画。 Ctrl+O,画组件
35 @Override
36 protected void paintComponent(Graphics g) {
37 super.paintComponent(g);//清屏的作用,不用会闪烁
38 //绘制静态的面板
39 this.setBackground(Color.WHITE);
40 Data.header.paintIcon(this, g, 25, 11);//头部广告栏画上去
41 g.fillRect(25, 75, 850, 600);//默认游戏界面
42
43 //把小蛇画上去
44 if (fx.equals("R")) {
45 Data.right.paintIcon(this, g, snakeX[0], snakeY[0]);//蛇头初始化向右,需要通过方向来判断
46 } else if (fx.equals("L")) {
47 Data.left.paintIcon(this, g, snakeX[0], snakeY[0]);
48 } else if (fx.equals("U")) {
49 Data.up.paintIcon(this, g, snakeX[0], snakeY[0]);
50 } else if (fx.equals("D")) {
51 Data.down.paintIcon(this, g, snakeX[0], snakeY[0]);
52 }
53
54 for (int i = 1; i < length; i++) {
55 Data.body.paintIcon(this, g, snakeX[i], snakeY[i]);//蛇的身体
56 }
57
58 //游戏状态
59 if (isStart == false) {
60 g.setColor(Color.white);
61 g.setFont(new Font("楷体", Font.BOLD, 40));
62 g.drawString("按下空格开始游戏", 300, 300);
63 }
64 }
65 }