当前位置: 首页 > news >正文

【GUI】-- 10 贪吃蛇小游戏之静态面板绘制

GUI编程

04 贪吃蛇小游戏

4.1 第一步:先绘制一个静态的面板

首先,需要新建两个类,一个StartGame类作为游戏的主启动类;一个GamePanel类作为游戏的面板类。此外,再新建一个Data类作为数据中心(存放了小蛇各部分图像的URL及ImageIcon)。代码如下:

StartGame:

package com.duo.snake;import javax.swing.*;//游戏的主启动类
public class StartGame {public static void main(String[] args) {JFrame frame = new JFrame();frame.setVisible(true);frame.setResizable(false);frame.setTitle("贪吃蛇-2023");frame.setBounds(5, 10, 915, 740);frame.setLocationRelativeTo(null);frame.add(new GamePanel());frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}

GamePanel:

package com.duo.snake;import javax.swing.*;
import java.awt.*;//游戏的面板
public class GamePanel extends JPanel {@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);  //起到清屏的作用//先绘制一个静态的面板Data.header.paintIcon(this, g, 25, 11);g.fillRect(25, 75, 850, 600);this.setBackground(Color.white);}
}

Data:

package com.duo.snake;import javax.swing.*;
import java.net.URL;//数据中心
public class Data {//相对路径  tx.jpg//绝对路径  /:相当于当前的项目public static URL headerURL = Data.class.getResource("static/header.png");public static URL upURL = Data.class.getResource("static/up.png");public static URL downURL = Data.class.getResource("static/down.png");public static URL leftURL = Data.class.getResource("static/left.png");public static URL rightURL = Data.class.getResource("static/right.png");public static URL bodyURL = Data.class.getResource("static/body.png");public static URL foodURL = Data.class.getResource("static/food.png");public static ImageIcon header = new ImageIcon(headerURL);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 ImageIcon body = new ImageIcon(bodyURL);public static ImageIcon food = new ImageIcon(foodURL);}

最后,通过StartGame中main方法,显示当前绘制的静态窗口如下:

图1


相关文章:

  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 数据结构 线性表
  • CURL踩坑记录
  • MongoDB相关基础操作(库、集合、文档)
  • c语言:回文字符串
  • LeetCode40. Combination Sum II
  • FlinkCDC实现主数据与各业务系统数据的一致性(瀚高、TIDB)
  • Axure插件浏览器一键安装:轻松享受高效工作!
  • 【广州华锐互动】VR虚拟现实技术助力太空探险:穿越时空,探索宇宙奥秘
  • 源启容器平台KubeGien 打造云原生转型的破浪之舰
  • skywalking中gateway的拓扑图没有出现
  • quickapp_快应用_requestHeader
  • git进阶使用《多账号管理》
  • HarmonyOS ArkTS开发语言介绍(三)
  • IO口电压下降那么多是怎么回事??
  • 深入了解以太坊
  • 【译】JS基础算法脚本:字符串结尾
  • 【译】理解JavaScript:new 关键字
  • C++11: atomic 头文件
  • canvas 高仿 Apple Watch 表盘
  • CAP理论的例子讲解
  • Docker 笔记(2):Dockerfile
  • ES6 学习笔记(一)let,const和解构赋值
  • gitlab-ci配置详解(一)
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Koa2 之文件上传下载
  • Linux各目录及每个目录的详细介绍
  • PHP 7 修改了什么呢 -- 2
  • Python进阶细节
  • vue-cli3搭建项目
  • 阿里云应用高可用服务公测发布
  • 分布式事物理论与实践
  • 力扣(LeetCode)56
  • 前端面试题总结
  • 三栏布局总结
  • 学习笔记TF060:图像语音结合,看图说话
  • 移动端解决方案学习记录
  • 用mpvue开发微信小程序
  • 最近的计划
  • 【云吞铺子】性能抖动剖析(二)
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​2020 年大前端技术趋势解读
  • ​批处理文件中的errorlevel用法
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $.ajax()方法详解
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (C语言)字符分类函数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二十三)Flask之高频面试点