2.绘制静态的小蛇

 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 }

posted @ 2020-03-30 17:18  断浮  阅读(125)  评论(0编辑  收藏  举报