java小游戏飞机大战_飞机大战小游戏Java(1)
雷电游戏大家应该很多都玩过吧(至少95后的我有段时间一直玩····没玩过可能你太年轻了hhh),然后我们今天做一个类似的小游戏。软件:eclipse.exe
编程语言:JAVA
首先,还是要做个窗口界面:
public class GameUI extends JFrame{
public void showUI(){
//創建创窗体对象
this.setSize(800, 700);
this.setTitle("飞机大战");
//设置退出进程的方法
this.setDefaultCloseOperation(3);
this.getContentPane().setBackground(Color.WHITE);
//设置居中显示
this.setLocationRelativeTo(null);
this.setVisible(true);
Graphics g=this.getGraphics();
}
public static void main(String[] args){
GameUI ui = new GameUI();
ui.showUI();
}
}
运行结果:
嗯,这部分很简单。然后呢,我们需要把背景图换一下,营造出星空的那种,随机就在网上找了图,然后利用重绘将图附上,这其实也很简单,代码:
public void paint(Graphics g) {
super.paint(g);
ImageIcon image = new ImageIcon(this.getClass().getResource("背景1.jpg"));
g.drawImage(image.getImage(), 0, 0, this.getWidth(), this.getHeight(), null);
}
加上之后就出效果了
一下子有感觉了吧加了背景图hhh
然后我们还要在图上添加我们的战斗机,因为后续战斗机还要运动发弹等等,故新建飞机类(MyPlane),初始好位置,速度,大小等参数,新建方法(画飞机)与之前画背景图类似,代码如下:
private int x, y, vx, vy, w = 100, h = 100;
private ImageIcon mp;
public MyPlane(int x, int y) {
this.x = x;
this.y = y;
mp = new ImageIcon(this.getClass().getResource("飞机1.png"));
}
/**
* 画飞机
*
* @param g
*/
public void drawPlane(Graphics g) {
g.drawImage(mp.getImage(), x, y, w, h, null);
}
然后构造方法,传递位置参数x,y,在监听类中的按下space键中新建MyPlane对象调用画飞机的方法,计算下数值,将其画在窗体正下方。(其中要得到窗体的长宽需要传递,写在构造方法里)
这样就可以在窗体上按下空格后,画出我们的飞机了,运行结果如下:
然后我们还需要按键将其动起来,在这里我们用上我们前面学的多线程吧。
新建线程类(GameThread),加Runnable接口,重写run抽象方法,类似之前的多线程小球循环执行,调用MyPlane里的drawplane(),当然要想调用需要在构造方法里传递。
这里我们需要通过键盘控制飞机运动,思路是通过键盘监听器得到键入的值,为我们需要用的按键(WASD)加功能,功能是对飞机速度赋值。
这里我们在飞机类中直接构造set和get方法:在Source里选Generate Getter and Setters选需要操作的变量。
然后在监听类中keyPressed()中写方法,比如键入W就应调用MyPlane里的setVy(int vy),带入我们需要的vy值。写完后结果并不是我们想要的:按下方向键后就朝着方向一直运行,这是不行的,我们需要按一下动一下,一直按着才一直动,故要在keyReleased()中将vx,vy重新赋值为零,即松开后不加速度不动。
这样就可以做出如下结果:
是不是发现需要把轨迹给清除了,这里在画飞机前绘出背景图,这样画下一个飞机前就能把前一个飞机给清除了,代码如下:
结果:
是不是就没留下痕迹了,然后给飞机加个界,别超出窗口范围,这就可以在MyPlane 的x,y着手了,加条件啥时候速度要为0 ,自己去想哈。
就这样,我们画出了背景图、自己的飞机,而且能通过WASD键操控飞机,是不是很棒呢,下期我们钻研下如何发射子弹,出现敌机等等问题。
怀挺,你今天更博学了吗?
java小游戏飞机大战_飞机大战小游戏Java(1)相关推荐
- 如何用java让坦克发射子弹_手把手教你用Java实现一个简易联网坦克对战小游戏 !...
介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...
- 碰球游戏java课设实验体会_对碰球游戏教案
活动目标:1.能合拍地随音乐边拍手唱歌边走步.2.用不同的动作方式与同伴相"碰",学会按指令做出迅速准确的反应.3.体验与同伴合作.交流的友好情感和愉快心情.活动准备:1.在日常活 ...
- 安装java后电脑崩溃了_我的世界游戏启动失败怎么办 PC版游戏崩溃解决办法
MC在使用的过程中经常会出现游戏启动失败,或者游戏崩溃的情况,遇到这些情况要怎么办呢?今天PConline为大家带来 我的世界电脑版 游戏启动失败怎么办,PC版游戏崩溃解决办法,解决大家的烦恼! 游戏 ...
- 小手拍拍机器人_幼儿园互动儿歌游戏,小朋友瞬间变听话!
原标题:幼儿园互动儿歌游戏,小朋友瞬间变听话! 幼儿天生好玩好动,儿歌是孩子最喜爱的互动之一,在幼儿园的一日常规中,巧用儿歌互动,既有利于幼儿智力开发,又能让幼儿配合活动,形成规范,是保教工作的好帮手 ...
- python弹球游戏实验报告_弹珠小游戏课程设计实验报告
摘要: 这个小程序是关于弹珠的小游戏, 游戏比较简单, 以小球的速度来区分游戏的难易. 该小程序是用左右键控制游戏的开始和挡板的方向,不让小球落到底端,当然,小球的 速度越快,该游戏的难度也就越大.此 ...
- java上课听不懂怎么办_为什么都说参加Java培训班依然学不会?
原标题:为什么都说参加Java培训班依然学不会? 目前,IT行业最热门的是Java,Java是一门编程语言,没有接触过的同学总感觉Java一定很难,零基础担心学不会Java该怎么办呢?其实每个人都是从 ...
- java中execution的作用_一文初步了解Java虚拟机
大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 什么是JVM? JVM(Java Virtual Machin ...
- unity塔防游戏怪物转向_萌宠打怪物游戏下载-萌宠打怪物最新安卓版下载
萌宠打怪物是一款非常有意思的休闲类小游戏,在这款游戏中玩家可以操控可爱的宠物进行挑战,每一种怪物都有它的弱点,找出弱点可以帮助你更好的完成挑战任务,游戏采用Q版画风,十分可爱治愈,对这款游戏感兴趣的话 ...
- 微信公众账号后台怎么解除小程序_微信小程序怎么注销账号_微信小程序注销方法_快吧小程序...
微信小程序一直存在一个问题:开发者不能注销自己的小程序.之前当开发者需要彻底清除小程序信息时,只能够通过暂停服务或关闭"允许被搜索"的方式曲线救国.现在,这个问题终于解决了. 在微 ...
最新文章
- Tomcat发布项目方法!
- 神经网络反向传播梯度计算数学原理
- iOS单例创建的一点疑惑
- Linux知识积累(6) 系统目录及其用途
- NSIS 的 Modern UI 教程(一)
- 【资讯】CloudBase Framework工具推荐:前后端一体化部署,效能提升开源“神器”
- C#中的Explicit和Implicit了解一下吧
- elasticsearch-head 谷歌插件以及安装和使用说明
- php自动验证,ThinkPHP 自动验证及验证规则详解
- solidworks图纸模板添加_「solidworks工程图模板」solidworks怎么添加置工程图模板? - seo实验室...
- PDF识别文字、关键字,获取对应坐标,用于插入电子签名
- 分享一个可以让你在朋友圈赚钱的小工具
- 阿里云服务器是否限制流量?阿里云固定宽带和按使用流量计费2种方式解读
- 申清企业微信需要什么条件
- CentOS 8 如何更换yum源
- 模糊测试中的动态符号执行
- 多媒体计算机维修记载,多媒体个人工作总结
- CAS:1347750-20-2,氨基PEG巯基,NH2-PEG-SH,Amine-PEG-Thiol
- 2022年自考专业(工商企业管理)企业管理概论练习题
- 年轻人,如何才能抗造之 - 预期管理及心态控制
热门文章
- 【Oracle】oracle 计算当月有多少个星期天、星期六、星期一
- 二叉树排序-Java版本
- GitHub上只下载部分文件的操作教程
- c语言数组最大值最小值 平均值,C语言数组的最大值,倒序,平均值等方法分享...
- SNAP 1. snap的介绍以及下载
- 缓存穿透、缓存雪崩、缓存击穿
- 几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)
- 活/死细胞双染色试剂盒工作原理揭晓
- JavaScript去除文本框中重复内容 js去重复
- CH582M 模拟iic 驱动 QMI8658笔记(避免失败坑)