菜鸟如何零基础写一个小游戏2
在实现了上一篇的效果以后我们可以再更完善这个项目这次需要实现的效果有1利⽤线程控制⼦弹的运动2通过键盘j 发射⼦弹3按空格键⽣成⼀个玩家⻆⾊(填充正⽅形)4通过WASD控制玩家角色的移动step 1对游戏主界面的设置这是上一次设置的界面public class GameUI { public void initUI(){ JFrame jf new JFrame(游戏界面); jf.setSize(800,800); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(3); jf.getContentPane().setBackground(Color.WHITE); //]给窗体对象的内容层set颜色 jf.setVisible(true); public Graphics g; } public static void main(String[] args) { GameUI ui new GameUI(); ui.initUI(); } }我们会发现我们的操作都是在JFrame类窗体对象jf上操作的这样到后期会影响游戏的性能动画效果等于是我们对其进行改进新new一个JPanel类对象jp我们将操作放在jp上其余保持不变JFrame jf new JFrame(游戏界面); jf.setSize(800,800); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(3); JPanel jp new JPanel(); jp.setBackground(Color.WHITE); jf.add(jp,BorderLayout.CENTER); jf.setVisible(true); Graphics g jp.getGraphics();step 2为了让代码逻辑更清晰后期更好管理维护我们在新定义两个类一个是我们的Gamer玩家类还有一个Bulle子弹类并且子弹较多我们new一个动态数组来保存管理子弹public class Gamer { public Graphics g; public int x ,y ,size; public int speedX,speedY; //用于控制玩家的移动 public Gamer(int x,int y){ this.x x; this.y y; size 100; } }public class Bullet { public int x, y,speedX,speedY-10; public Graphics g; public Bullet(int x,int y) { this.x x; this.y y; } }同时添加GameThread类中的参数修改我们的构造函数public Graphics g; public int x,y; public Bullet bullet; public Gamer gamer ; public ArrayListBullet bullets new ArrayList();; public GameThread(Graphics g,Gamer gamer,ArrayListBullet bullets){ this.g g; this.gamer gamer; this.bullets bullets; }step 3接下来就来实现我们想要的效果由于我们想要用键盘来操控所以监听器也需要换成KeyListener键盘监听器GameListener listener new GameListener(g); jp.addKeyListener(listener);在GameListener中同样也需要继承KeyAdapter并初始化属性写构造方法重写KeyListener里的抽象方法public class GameListener extends KeyAdapter { public Graphics g; public int code; public Gamer gamer new Gamer(400,400); public ArrayListBullet bullets new ArrayList(); public GameThread gt ; public GameListener(Graphics g){ this.g g; }public void keyPressed(KeyEvent e) { }在keyPressed中我们继续实现按下不同按键实现不同效果的作用由于种类较多用if语句太冗杂我们选择使用switch语句分别管理不同的实现方法public void keyPressed(KeyEvent e) { code e.getKeyCode(); //用code 变量保存按键按下来的键码用于比对验证 switch(code){ case KeyEvent.VK_W: gamer.speedX 0; gamer.speedY -50; //控制玩家的移动 break; case KeyEvent.VK_A: gamer.speedX -50; gamer.speedY 0; break; case KeyEvent.VK_S: gamer.speedX 0; gamer.speedY 50; break; case KeyEvent.VK_D: gamer.speedX 50; gamer.speedY 0; break; case KeyEvent.VK_J: Bullet bu new Bullet(gamer.x gamer.size/2-25,gamer.y); //设置参数调整子弹从玩家上方的中间发射 bullets.add(bu); //动态数组添加新的子弹对象 break; break; case KeyEvent.VK_SPACE: gt new GameThread(g,gamer,bullets); gt.start(); break; } }step 4在玩家类中添加绘制玩家和玩家移动的方法public void draw(Graphics g){ g.setColor(Color.WHITE); g.fillRect(x,y,size,size); move(); g.setColor(Color.BLACK); g.fillRect(x,y,size,size); speedX 0; speedY 0; } public void move(){ xspeedX; yspeedY; }在子弹类中添加绘制子弹的方法public void shoot(Graphics g) { g.setColor(Color.WHITE); g.fillOval(x, y-50, 50, 50); y y speedY; g.setColor(Color.RED); g.fillOval(x, y-50, 50, 50); }step 5最后在GameThread类中修改我们的run方法public void run(){ while(true) { gamer.draw(g); for (int i 0; i bullets.size(); i) { bullet bullets.get(i); bullet.shoot(g); } try { sleep(50); } catch (InterruptedException ex) { throw new RuntimeException(ex); } } }这样子就实现了我们所有想要的效果了

相关新闻

Qt QStringListModel与QListView:MVC架构实现字符串列表管理

Qt QStringListModel与QListView:MVC架构实现字符串列表管理

在 Qt C 项目中,当需要展示和管理一组字符串列表时,直接使用 QListWidget 虽然简单,但缺乏数据与视图分离的灵活性。 QStringListModel 和 QListView 的组合正是为此场景设计的标准 MVC(Model-View-Controller)模…

2026/8/1 14:08:01 阅读更多 →
Hackintool:黑苹果配置的终极工具箱 - 快速解决显卡、音频、USB三大难题

Hackintool:黑苹果配置的终极工具箱 - 快速解决显卡、音频、USB三大难题

Hackintool:黑苹果配置的终极工具箱 - 快速解决显卡、音频、USB三大难题 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool Hackintool是黑苹果爱好者的瑞士军刀工具&…

2026/8/1 14:08:01 阅读更多 →
三维顶管下穿桥梁的MIDAS GTS NX施工模拟与力学分析

三维顶管下穿桥梁的MIDAS GTS NX施工模拟与力学分析

1. 先搞清楚三维顶管施工的核心挑战是什么 三维顶管施工,特别是下穿既有桥梁这类场景,最核心的挑战不是建模本身,而是如何准确模拟施工过程中的地层扰动、桥梁基础响应以及顶进力与土体之间的相互作用。很多人在接触这类项目时,容…

2026/8/1 14:08:01 阅读更多 →

最新新闻

智造微观世界,芯动大国工业:2026武汉国际芯片及半导体产业博览会全瞻

智造微观世界,芯动大国工业:2026武汉国际芯片及半导体产业博览会全瞻

2026武汉芯片博览会:透视半导体全产业链的重构逻辑 锁定九月江城!2026武汉半导体产业博览会,开启数智时代底层新局从IC设计到先进制程:2026武汉芯片展,定义未来工业的“心脏”智造微观世界,芯动大国工业&am…

2026/8/1 14:59:23 阅读更多 →
ZMK键盘固件完整指南:如何快速打造个性化机械键盘

ZMK键盘固件完整指南:如何快速打造个性化机械键盘

ZMK键盘固件完整指南:如何快速打造个性化机械键盘 【免费下载链接】zmk ZMK Firmware Repository 项目地址: https://gitcode.com/gh_mirrors/zm/zmk 想要打造完全属于自己的机械键盘,但又担心固件配置太复杂?ZMK键盘固件正是你需要的…

2026/8/1 14:59:23 阅读更多 →
maven多版本包导致java.lang.NoClassDefFoundError

maven多版本包导致java.lang.NoClassDefFoundError

1.现象ava.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.compress.archivers.zip.ZipEncodingHelper堆栈信息如下 java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.compress.archivers.zip.ZipEncodingHelperat…

2026/8/1 14:59:23 阅读更多 →
GBFR Logs终极指南:5个技巧彻底掌握《碧蓝幻想:Relink》DPS追踪与数据分析

GBFR Logs终极指南:5个技巧彻底掌握《碧蓝幻想:Relink》DPS追踪与数据分析

GBFR Logs终极指南:5个技巧彻底掌握《碧蓝幻想:Relink》DPS追踪与数据分析 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_…

2026/8/1 14:59:23 阅读更多 →
Android人脸采集模块封装实战:基于百度离线SDK的高可用解决方案

Android人脸采集模块封装实战:基于百度离线SDK的高可用解决方案

1. 项目概述:为什么需要一个独立的人脸采集模块? 在移动应用开发中,人脸识别相关的功能越来越常见,从实名认证、刷脸登录到互动娱乐,都离不开一个基础且关键的环节:人脸采集。这个环节直接决定了后续识别、…

2026/8/1 14:59:23 阅读更多 →
树莓派相机模块选型、驱动配置与OpenCV实战应用指南

树莓派相机模块选型、驱动配置与OpenCV实战应用指南

1. 项目概述:树莓派相机模块(E)的深度探索 如果你手头有一块树莓派,并且对图像采集、计算机视觉或者物联网项目感兴趣,那么“RPi Camera (E)”这个标题背后所代表的东西,绝对值得你花时间深入研究。这不仅仅…

2026/8/1 14:58:23 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →