有关简单弹幕射击游戏的开发思路

发布时间:2026/8/13 12:41:16

有关简单弹幕射击游戏的开发思路
简单弹幕射击游戏的开发弹幕射击游戏区别于其他的特点是其需要运用多线程的开发思路需要了解并灵活运用并发与并行线程和进程的相关知识一游戏界面的设计//创建窗口对象JframejfnewJFrame();jf.setTitle(游戏界面”);//标题jf.setSize(900,900);jf.setLocationRelativeTo(null);//窗口居中显示//点关闭按钮是时程序终止运行jf.setDefaultCloseOperation(3);JPaneljpnewJPanel();//创建面板jp.setBackground(Color.WHITE);jf.add(jp,BorderLayout.CENTER);jf.setVisible(true);Graphicsgjp.getGraphics();//获取面板的绘图对象GameListenerlistenernewGamelistener();jf.addKeyListener(listener);//添加键盘监听器//将键盘焦点设置到面板上jp.requestFocus();特别注意设置焦点的原因是键盘事件只有焦点组件才能接收而JPanel可以获取焦点但是不会自动获取二事件监听器2.1GameListener类实现键盘监听器额接口,并重写其抽象方法publicclassGameListnenerimplementsKeyListener{publicvoidkeyTyped(KeyEvente){}publicvoidkeyPressed(KeyEvente){}publicvoidkeyReleased(KeyEvente){}}2.2具体的功能实现publicvoidkeyPressed(KeyEvente){intkeye.getKeyCode();switch(key){caseKeyEvent.VK_SPACE:System.out.println(空格被按下);rolenewRole(350,600);GameThreadthreadnewGameThread(g,role,arrayList,this);thread.start();break;caseKeyEvent.VK_J:System.out.println(发射子弹);BulletbulletnewBullet(role.xrole.size/2,role.y);arrayList.add(bullet);break;caseKeyEvent.VK_W:System.out.println(向上移动);role.speedY-5;break;caseKeyEvent.VK_S:System.out.println(向下移动);role.speedY5;break;caseKeyEvent.VK_A:System.out.println(向左移动);role.speedX-5;break;caseKeyEvent.VK_D:System.out.println(向右移动);role.speedX5;break;caseKeyEvent.VK_B:System.out.println(切换开火方式);b!b;}}publicvoidkeyTyped(KeyEvente){}publicvoidkeyReleased(KeyEvente){intkeye.getKeyCode();switch(key){caseKeyEvent.VK_W:System.out.println(向上移动结束);role.speedY0;caseKeyEvent.VK_S:System.out.println(向下移动结束);role.speedY0;caseKeyEvent.VK_A:System.out.println(向左移动结束);role.speedX0;caseKeyEvent.VK_D:System.out.println(向右移动结束);role.speedX0;}}特别注意1.使用switch case结构来处理不同按键功能2.使用速度值控制方向正负值代表方向3.松键是速度归零实现停止三游戏主线程GameThreadpublicvoidrun(){System.out.println(Thread.currentThread().getName()线程已启动);while(true){try{Thread.sleep(10);}catch(InterruptedExceptione){thrownewRuntimeException(e);}if(listener.btrue){count;if(count3){BulletbulletnewBullet(role.xrole.size/2,role.y);arrayList.add(bullet);count0;}}role.drawRole(g);for(inti0;iarrayList.size();i){BulletbulletarrayList.get(i);bullet.drawBullet(g);bullet.move();}}}特别注意1.使用while(true)无限循环保证游戏正常运行2.Thread.sleep控制速度3.自动开火时计数器控制开火速度四定时任务线程TimeThreadpubliclongtime200;publicRolerole;publicArrayListBulletbullets;publicbooleanrunningtrue;publicTimeThread(ArrayListBulletbullets,Rolerole){this.bulletsbullets;this.rolerole;}publicvoidrun(){while(running){try{Thread.sleep(time);}catch(InterruptedExceptione){thrownewRuntimeException(e);}BulletbulletnewBullet(role.xrole.size/2,role.y);bullets.add(bullet);}}publicvoidstopBullet(){runningfalse;}五角色类RolepublicvoiddrawRole(Graphicsg){g.setColor(Color.WHITE);g.fillRect(x,y,size,size);// 更新位置move();// 黑色实体g.setColor(Color.BLACK);g.fillRect(x,y,size,size);}六子弹类Bullet)publicvoiddrawBullet(Graphicsg){// 红色子弹主体g.setColor(Color.RED);g.fillRect(x,y,size,size);// 白色子弹用来消除轨迹g.setColor(Color.WHITE);g.fillRect(x,yspeed,size,size);}七敌机类EnemyPlane// 存放所有敌机的列表ArrayListEnemylistnewArrayList();// 计数器控制多久生成一个敌机intcount0;classEnemy{intx(int)(Math.random()*800);inty-40;intsize40;intspeed2;intoldXx;// 记录旧位置初始等于当前位置intoldYy;// 向下移动voidmove(){oldXx;oldYy;yyspeed;}// 画出自己voiddraw(Graphicsg){g.setColor(Color.WHITE);g.fillRect(oldX,oldY,size,size);//消除敌机尾迹g.setColor(Color.RED);g.fillRect(x,y,size,size);}// 判断是否超出屏幕底部booleanisOut(){if(y800){returntrue;}else{returnfalse;}}}//更新所有敌机voidupdate(){// 每60帧生成一个敌机countcount1;if(count60){count0;EnemyenewEnemy();list.add(e);}// 让所有敌机移动超出屏幕的删掉// 倒着数从最后一个到第一个intilist.size()-1;// 最后一个的位置while(i0){Enemyelist.get(i);// 取出第i个敌机e.move();// 让它往下走if(e.isOut()){// 如果超出屏幕了list.remove(i);// 删掉它}ii-1;// 看前一个}}// 画出所有敌机 voiddraw(Graphicsg){// 用普通循环从第一个到最后一个inti0;while(ilist.size()){Enemyelist.get(i);// 取出第i个敌机e.draw(g);// 让它画出自己ii1;// 看下一个}}

相关新闻

想把B站缓存视频转成MP4?这份m4s转MP4实操指南一次讲透

想把B站缓存视频转成MP4?这份m4s转MP4实操指南一次讲透

2026/8/13 12:41:16

想把B站缓存视频转成MP4?这份m4s转MP4实操指南一次讲透 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter "明明缓存了&#xff0c…

分布式一致性算法详解:从 2PC、3PC 到 Paxos、Raft、ZAB

分布式一致性算法详解:从 2PC、3PC 到 Paxos、Raft、ZAB

2026/8/13 12:41:16

在单机系统里,“一致性”通常意味着一次写入要么成功、要么失败,读到的数据应该符合预期。但在分布式系统中,数据被拆分到多台机器上,节点可能宕机,网络可能延迟、丢包、分区,消息可能乱序到达。此时&#…

线上AI服务token暴涨300%:从内存泄漏到静默失败的全链路排查

线上AI服务token暴涨300%:从内存泄漏到静默失败的全链路排查

2026/8/13 12:31:15

1. 项目概述:一次由“废话”引发的线上危机 那天下午,监控大屏上一条陡峭的红色曲线瞬间抓住了我的眼球:我们核心AI服务 OpenClaw 的 token 消耗量在短短半小时内暴涨了300%,远超业务增长的正常曲线。告警邮件和钉钉消息瞬间刷…

Anaconda3安装与Python虚拟环境管理全攻略

Anaconda3安装与Python虚拟环境管理全攻略

2026/8/13 13:51:19

1. 项目概述:为什么你需要Anaconda,而不仅仅是Python如果你刚开始接触Python,或者已经写了一些脚本,但每次想装个新库都因为版本冲突、依赖报错搞得焦头烂额,那你大概率需要一个环境管理工具。而Anaconda,就…

生物信息分析基石:如何正确选择参考基因组与注释文件

生物信息分析基石:如何正确选择参考基因组与注释文件

2026/8/13 13:51:19

1. 项目概述:从“选对”开始,让生物信息分析事半功倍刚入行做生物信息分析那会儿,我踩的第一个大坑,不是代码报错,而是选错了参考基因组和注释文件。当时手头有一批小鼠的RNA-seq数据,我图省事,…

全球顶级量化机构的隐秘武器:波动率收割术全解密

全球顶级量化机构的隐秘武器:波动率收割术全解密

2026/8/13 13:51:19

作 者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:今天带你拆解全球期权市场最核心的定价公式:Delta对冲损益方程。从简街43亿美元印度交易到LJM两天归零,从GameStop的Gamma挤压到0DTE的范式转变&#…

Ubuntu 16.04安装AMD显卡驱动与ROCm平台实战指南

Ubuntu 16.04安装AMD显卡驱动与ROCm平台实战指南

2026/8/13 13:51:19

1. 从一次失败的AI画图尝试说起 那天,我打算在实验室一台老旧的Ubuntu 16.04服务器上跑一个PyTorch的模型,试试用AMD显卡做点AI画图的实验。这台机器配置了一块Radeon RX 580显卡,按理说性能足够。我信心满满地敲下 python train.py &#…

揭秘徐州高端网站建设背后的逻辑与陷阱,企业到底该如何选对合作伙伴

揭秘徐州高端网站建设背后的逻辑与陷阱,企业到底该如何选对合作伙伴

2026/8/13 13:51:19

在这个互联网流量红利逐渐见顶、获客成本越来越高的时代,很多徐州的企业主都在问同一个问题:我的网站还需要做吗?当然需要,而且比以往任何时候都更需要。但是,大家对于“网站”二字的认知,可能还停留在十年前那个随便找个模板、填点文字图片就能上线的阶段。现在的市场逻…

UVa 1018 Building Bridges

UVa 1018 Building Bridges

2026/8/13 13:41:18

题目描述 New Altonville\texttt{New Altonville}New Altonville 市议会计划建造一个桥梁系统,连接市中心的所有建筑,以便人们可以在不走到户外的情况下从一栋建筑走到另一栋建筑。你需要编写一个程序来帮助确定最佳的桥梁配置。 New Altonville\texttt{…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/13 11:01:28

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/11 15:57:54

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

电商毛利率别再手动算了!2026年3种自动分析工具实测对比

电商毛利率别再手动算了!2026年3种自动分析工具实测对比

2026/8/13 0:00:21

一、开篇:毛利率——电商运营最该盯但最难盯的指标 电商运营中有一个指标,几乎所有老板都会问,但几乎所有运营都回答得不够确定——毛利率。不是"店铺毛利率",而是"每条链接的毛利率""每个品类的毛利率…

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代

2026/8/13 0:00:21

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代 一、为什么需要不停机发布? 传统发布方式:停服务 → 替换包 → 启服务。在内部系统里勉强能用,但在SaaS系统中是灾难。 我们的无人售货柜SaaS平台服务全国几千台设备&#…

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案

2026/8/13 0:00:21

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案 前言 大家好,我是黒漂技术佬。 线上出 Bug 这种事,就像你正吃着火锅唱着歌,突然接到电话说"柜子门打不开了"。炸不炸?慌不慌?别急&a…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…