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

【JAVA】飞机大战

代码和图片放在这个地址了:
https://gitee.com/r77683962/fighting/tree/master

最新的代码运行,可以有两架飞机,分别通过WASD(方向),F(发子弹);上下左右(控制方向),空格(发子弹)
但是敌人的飞机还没有。

代码写的比较匆忙,不太好。

运行效果:
在这里插入图片描述

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;class MyThread extends Thread
{GameFrame gameFrame;public MyThread(){gameFrame = new GameFrame();}public void run(){System.out.println("run");Boolean runFlag = true;while (runFlag){runFlag = gameFrame.Run();//System.out.println("runFlag: " + runFlag);try{Thread.sleep(100);}catch (InterruptedException e){e.printStackTrace();throw new RuntimeException(e);}}}public static void main(String[] args) {MyThread gameFrame = new MyThread();gameFrame.start();}
}public class GameFrame extends JFrame
{private Boolean runFlag;private final Graphics graphics;private final Image planeImage;private final Image bulletImage;private final Image backgroundImage1;private final Image backgroundImage2;//plane xprivate int planeX;//plane yprivate int planeY;private int bulletX;private int bulletY;private boolean bulletFlag;private int backgroundY;//bullet move stepprivate final int moveStep;private final int width;private final int height;public GameFrame(){setTitle("Fighting");setLayout(null);moveStep = 4;width = 629;height = 990;setSize(width, height);setLocationRelativeTo(null);setVisible(true);KeyCapture();backgroundY = 0;bulletFlag = false;planeY = height - 200;planeX = width / 2;runFlag = true;graphics = getContentPane().getGraphics();planeImage = Toolkit.getDefaultToolkit().getImage("D:\\Code\\JAVA\\class\\Fighting\\images\\bullet05.png");bulletImage = Toolkit.getDefaultToolkit().getImage("D:\\Code\\JAVA\\class\\Fighting\\images\\bullet_02.png");backgroundImage1 = Toolkit.getDefaultToolkit().getImage("D:\\Code\\JAVA\\class\\Fighting\\images\\mapback.png");backgroundImage2 = Toolkit.getDefaultToolkit().getImage("D:\\Code\\JAVA\\class\\Fighting\\images\\mapback.png");}public void KeyCapture(){this.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){int keyCode = e.getKeyCode();System.out.println("keyCode: " + keyCode);switch (keyCode){case KeyEvent.VK_UP:planeY -= moveStep; break;case KeyEvent.VK_DOWN:planeY += moveStep; break;case KeyEvent.VK_LEFT:planeX -= moveStep; break;case KeyEvent.VK_RIGHT:planeX += moveStep; break;case KeyEvent.VK_SPACE:bulletX = planeX;bulletY = planeY;bulletFlag = true;break;case KeyEvent.VK_Q:runFlag = false;break;default:System.out.println("KeyCode error!");break;}}});}public Boolean Run(){//System.out.println("x: " + planeX + " y:" + planeY);// backgroundgraphics.drawImage(backgroundImage2, 0, backgroundY, width, height, this);graphics.drawImage(backgroundImage1, 0, backgroundY - height, width, height, this);// planegraphics.drawImage(planeImage, planeX, planeY, null);//bulletif (bulletFlag){graphics.drawImage(bulletImage, bulletX, bulletY, null);bulletY -= 2 * moveStep;}backgroundY += 2;return runFlag;}
}
http://www.lryc.cn/news/177814.html

相关文章:

  • Midjourney 生成油画技巧
  • 26559-2021 机械式停车设备 分类
  • xxe攻击(XML外部实体)
  • 大数据-hadoop
  • 容器启动报错
  • 求生之路2服务器搭建插件安装及详细的游戏参数配置教程linux
  • IntelliJ IDEA 左侧Commit栏不见了
  • 使用自功率谱、互功率谱估计滤波器幅频特性
  • 51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)
  • socat管理haproxy配置
  • Linux发行版X华为鲲鹏openEuler
  • 计算机网络相关知识点
  • Jmeter+Ant+Git+Jenkins持续集成介绍
  • Spring Cloud Gateway实战WebFlux解析请求体及抛出指定错误代码和信息
  • Servlet开发-通过代码案例熟悉HttpServletRequest类
  • 离线环境harbor 搭建及使用
  • 华为杯数学建模比赛经验分享
  • c语言 - 实现每隔1秒向文件中写入当前系统时间
  • 使用cpolar端口映射的方法轻松实现在Linux环境下SVN服务器的搭建与公网访问
  • 前后台分离开发 YAPI平台 前端工程化之Vue-cli
  • 【js/es6】合集
  • Nginx modules build fail:field ‘pkt6’ has incomplete type
  • 电脑突然提示mfc140u.dll丢失,缺失mfc140u.dll无法运行程序的解决方法
  • 国庆day1
  • 从零开始之了解电机及其控制(11)实现空间矢量调制
  • 如何将html转换成markdown
  • 【VUE复习·3】@keyup.xxx 键盘事件触发函数(单按键 or 组合按键触发)
  • IntelliJ IDEA学习总结(3)—— IntelliJ IDEA 常用快捷键(带动图演示)
  • 巨人互动|Facebook海外户Facebook的特点优势
  • (vue3)create-vue 组合式API