2.绘制静态的小蛇

本文详细介绍了一个Snake游戏的面板设计与实现过程,包括游戏面板的类结构、蛇的坐标管理、游戏状态控制以及绘制方法。通过具体代码展示了如何使用Java Swing进行游戏界面的构建,实现了蛇的初始化位置设置及绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值