雷电游戏大家应该很多都玩过吧(至少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)相关推荐

  1. 如何用java让坦克发射子弹_手把手教你用Java实现一个简易联网坦克对战小游戏 !...

    介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...

  2. 碰球游戏java课设实验体会_对碰球游戏教案

    活动目标:1.能合拍地随音乐边拍手唱歌边走步.2.用不同的动作方式与同伴相"碰",学会按指令做出迅速准确的反应.3.体验与同伴合作.交流的友好情感和愉快心情.活动准备:1.在日常活 ...

  3. 安装java后电脑崩溃了_我的世界游戏启动失败怎么办 PC版游戏崩溃解决办法

    MC在使用的过程中经常会出现游戏启动失败,或者游戏崩溃的情况,遇到这些情况要怎么办呢?今天PConline为大家带来 我的世界电脑版 游戏启动失败怎么办,PC版游戏崩溃解决办法,解决大家的烦恼! 游戏 ...

  4. 小手拍拍机器人_幼儿园互动儿歌游戏,小朋友瞬间变听话!

    原标题:幼儿园互动儿歌游戏,小朋友瞬间变听话! 幼儿天生好玩好动,儿歌是孩子最喜爱的互动之一,在幼儿园的一日常规中,巧用儿歌互动,既有利于幼儿智力开发,又能让幼儿配合活动,形成规范,是保教工作的好帮手 ...

  5. python弹球游戏实验报告_弹珠小游戏课程设计实验报告

    摘要: 这个小程序是关于弹珠的小游戏, 游戏比较简单, 以小球的速度来区分游戏的难易. 该小程序是用左右键控制游戏的开始和挡板的方向,不让小球落到底端,当然,小球的 速度越快,该游戏的难度也就越大.此 ...

  6. java上课听不懂怎么办_为什么都说参加Java培训班依然学不会?

    原标题:为什么都说参加Java培训班依然学不会? 目前,IT行业最热门的是Java,Java是一门编程语言,没有接触过的同学总感觉Java一定很难,零基础担心学不会Java该怎么办呢?其实每个人都是从 ...

  7. java中execution的作用_一文初步了解Java虚拟机

    大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制.编译过程和如何对Java程序进行调优相信都会有一个很好的认知. 什么是JVM? JVM(Java Virtual Machin ...

  8. unity塔防游戏怪物转向_萌宠打怪物游戏下载-萌宠打怪物最新安卓版下载

    萌宠打怪物是一款非常有意思的休闲类小游戏,在这款游戏中玩家可以操控可爱的宠物进行挑战,每一种怪物都有它的弱点,找出弱点可以帮助你更好的完成挑战任务,游戏采用Q版画风,十分可爱治愈,对这款游戏感兴趣的话 ...

  9. 微信公众账号后台怎么解除小程序_微信小程序怎么注销账号_微信小程序注销方法_快吧小程序...

    微信小程序一直存在一个问题:开发者不能注销自己的小程序.之前当开发者需要彻底清除小程序信息时,只能够通过暂停服务或关闭"允许被搜索"的方式曲线救国.现在,这个问题终于解决了. 在微 ...

最新文章

  1. Tomcat发布项目方法!
  2. 神经网络反向传播梯度计算数学原理
  3. iOS单例创建的一点疑惑
  4. Linux知识积累(6) 系统目录及其用途
  5. NSIS 的 Modern UI 教程(一)
  6. 【资讯】CloudBase Framework工具推荐:前后端一体化部署,效能提升开源“神器”
  7. C#中的Explicit和Implicit了解一下吧
  8. elasticsearch-head 谷歌插件以及安装和使用说明
  9. php自动验证,ThinkPHP 自动验证及验证规则详解
  10. solidworks图纸模板添加_「solidworks工程图模板」solidworks怎么添加置工程图模板? - seo实验室...
  11. PDF识别文字、关键字,获取对应坐标,用于插入电子签名
  12. 分享一个可以让你在朋友圈赚钱的小工具
  13. 阿里云服务器是否限制流量?阿里云固定宽带和按使用流量计费2种方式解读
  14. 申清企业微信需要什么条件
  15. CentOS 8 如何更换yum源
  16. 模糊测试中的动态符号执行
  17. 多媒体计算机维修记载,多媒体个人工作总结
  18. CAS:1347750-20-2,氨基PEG巯基,NH2-PEG-SH,Amine-PEG-Thiol
  19. 2022年自考专业(工商企业管理)企业管理概论练习题
  20. 年轻人,如何才能抗造之 - 预期管理及心态控制

热门文章

  1. 【Oracle】oracle 计算当月有多少个星期天、星期六、星期一
  2. 二叉树排序-Java版本
  3. GitHub上只下载部分文件的操作教程
  4. c语言数组最大值最小值 平均值,C语言数组的最大值,倒序,平均值等方法分享...
  5. SNAP 1. snap的介绍以及下载
  6. 缓存穿透、缓存雪崩、缓存击穿
  7. 几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)
  8. 活/死细胞双染色试剂盒工作原理揭晓
  9. JavaScript去除文本框中重复内容 js去重复
  10. CH582M 模拟iic 驱动 QMI8658笔记(避免失败坑)