返回顶部
首页 > 资讯 > 后端开发 > Python >java实现雷霆战机
  • 917
分享到

java实现雷霆战机

2024-04-02 19:04:59 917人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了java实现雷霆战机的具体代码,供大家参考,具体内容如下 GameFame.java package cn. tx;   import javax.swing.*

本文实例为大家分享了java实现雷霆战机的具体代码,供大家参考,具体内容如下

GameFame.java

package cn. tx;
 
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;
import java.util.Vector;
 
 class GameFrame extends JFrame {
 
    HeroPlane heroPlane;
 
    //定义子弹的集合
    Vector<Bullet> bullets = new Vector<>();
    //敌机集合
     Vector<EnemyPlane> enemys = new Vector<>();
 
     GameFrame  frame;
 
    public GameFrame () {
        frame = this;
        //创建英雄机
        heroPlane =new HeroPlane();
        heroPlane.start();
        //设置窗体的宽高
        this.setSize(450, 730);
        //标题
        this.setTitle("雷霆战机");
        this.setResizable(false);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        //窗口可见
        this.setVisible(true);
 
 
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    repaint();
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
 
        //产生敌机的线程
        new Thread(new Runnable() {
            //创建随机数的对象
            Random r = new Random();
 
            @Override
            public void run() {
                while (true){
                    //启动敌机
                    EnemyPlane enemyPlane = new EnemyPlane(r.nextInt(500), 0, frame);
                    enemyPlane.start();
                    //添加敌机的时候,让x轴随机
                    enemys.add(enemyPlane);
                    try{
                        Thread.sleep(500);
                    } catch (InterruptedException e){
                        e.printStackTrace();
                    }
                }
 
            }
        }).start();
 
    }
 
 
//        *在窗口上画,内容,paint这 个画笔的方法在窗口初始化的时候会默认的执行
//        @param g
 
        public void paint (Graphics g) {
            //System.out.println("绘制画板");
            //两背景
            BufferedImage image = (BufferedImage) this.createImage(this.getSize().width, this.getSize().height);
            //高效缓存的画笔
            Graphics bi = image.getGraphics();
            //画背景
            bi.drawImage(new ImageIcon("img/MAP02_01.png").getImage(),0,0,null);
            //画战斗机
            bi.drawImage(heroPlane.img, heroPlane.x,heroPlane.y, heroPlane.width,heroPlane.heigth,null);
            //飞机发射炮弹
            for (int i = 0; i < bullets.size(); i++) {
                System.out.println(bullets);
                Bullet bullet = bullets.get(i);
                if(bullet.y > 0)
                    bi.drawImage(bullet.image, bullet.x,bullet.y -= bullet.speed, bullet.width,bullet.height, null);
                else
                    bullets.remove(bullet);
            }
            //画敌机
            for (int i = 0; i < enemys.size(); i++) {
                System.out.println(enemys);
                EnemyPlane ep = enemys.get(i);
                if(ep.y < 730 )
                    bi.drawImage(ep.img, ep.x,ep.y += ep.speed, ep.width,ep.heigth,null);
                else
                    enemys.remove(ep);
            }
 
 
            //生效
            g.drawImage(image,0,0,null);
        }
        public static void main (String[]args){
            GameFrame frame = new GameFrame();
            Player player = new Player(frame);
            frame.addKeyListener(player);
        }
    }

HeroPlane

package cn.tx;
import javax.swing.*;
import java.awt.*;
 
public class HeroPlane extends Thread{
    //英雄机在画板上的位置
    int x=200, y=600;
 
    int width = 50, heigth = 50;
    //飞机的速度
    int speed = 10;
 
    Image img = new ImageIcon("img/10011.png").getImage();
 
    //定义方向键的标志
    boolean up,down,left,right;
 
    public HeroPlane() {
    }
 
    public HeroPlane(int x, int y, int width, int heigth, Image img) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.heigth = heigth;
    }
 
    @Override
    public void run() {
        while (true){
            if (up){
                y -= speed;
            }
            if (down){
                y += speed;
            }
            if (left){
                x -= speed;
            }
            if (right){
                x += speed;
            }
 
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Player

package cn.tx;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
//定义一个玩家
public class Player extends KeyAdapter {
    GameFrame frame;
    HeroPlane heroPlane;
    public Player(GameFrame frame) {
       this.frame=frame;
    }
 
    public void keyPressed(KeyEvent e) {
        int keyCode = e.geTKEyCode();
        //38、40、37、39
        switch (keyCode){
            case 38:
                frame.heroPlane.up = true;
                break;
            case 40:
                frame. heroPlane.down = true;
                break;
            case 37:
                frame. heroPlane.left = true;
                break;
            case 39:
                frame. heroPlane.right = true;
                break;
            case 66:
                addBullut();
                break;
        }
 
    }
 
    @Override
    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        //38、40、37、39
        switch (keyCode){
            case 38:
                frame.heroPlane.up = false;
                break;
            case 40:
                frame. heroPlane.down = false;
                break;
            case 37:
                frame.  heroPlane.left = false;
                break;
            case 39:
                frame. heroPlane.right = false;
                break;
        }
    }
    public void addBullut(){
        frame.bullets.add(new Bullet( frame.heroPlane.x+5,  frame.heroPlane.y - 20));
    }
}

EnemyPlane

package cn.tx;
 
import javax.swing.*;
import java.awt.*;
 
 
public class EnemyPlane extends Thread {
    public GameFrame gf;
    //子弹的坐标,大小速度
    public int x, y;
    public int width = 50;
    public int heigth = 50;
    public int speed = 2;
    public Image img = new ImageIcon("img/10021.png").getImage();
 
    public EnemyPlane(int x, int y, GameFrame gf) {
        super();
        this.x = x;
        this.y = y;
        this.gf = gf;
    }
 
    public EnemyPlane(int x, int y, int width, int heigth, GameFrame gf) {
        super();
        this.x = x;
        this.y = y;
        this.width = width;
        this.heigth = heigth;
        this.gf = gf;
    }
 
    //玛丽飞翔的逻辑;移动的逻辑都在这里。
    public void run() {
        while (true) {
            //向左走
            if (hit()) {
                System.out.println("hit................");
                this.speed = 0;
                this.img = new ImageIcon("img/300350.png").getImage();
                    try {
                        this.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    gf.enemys.remove(this);
                    break;
                }
                if (this.y >= 760) {
                    break;
                }
                try {
                    this.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
        }
    }
 
 
    //检测碰撞
    public boolean hit() {
        // swing在水中,人家已经提供了
        Rectangle myrect = new Rectangle(this.x, this.y, this.width, this.heigth);
        Rectangle rect = null;
        for (int i = 0; 1 < gf.bullets.size(); i++) {
            Bullet bullet = gf.bullets.get(i);
            System.out.println("test hit");
            rect = new Rectangle(bullet.x, bullet.y - 1, bullet.width, bullet.height);
            //碰撞检测
            if (myrect.intersects(rect)) {
                return true;
            }
        }
        return false;
    }
 
    @Override
    public String toString() {
        return "EnemyPlane{" +
                "x=" + x +
                ", y=" + y +
                ", width=" + width +
                ", height=" + heigth +
                '}';
    }
}

Bullet

package cn.tx;
import javax.swing.*;
import java.awt.*;
 
public class Bullet {
    //在面板上的坐标
    int x, y;
    int width= 50,height = 50;
 
    //定义飞机默认速度
    int speed = 5;
 
    Image image = new ImageIcon("img/30022.png").getImage();
 
    public Bullet(int x, int y) {
        this.x = x;
        this.y = y;
    }
 
    public Bullet(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: java实现雷霆战机

本文链接: https://lsjlt.com/news/151101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java实现雷霆战机
    本文实例为大家分享了java实现雷霆战机的具体代码,供大家参考,具体内容如下 GameFame.java package cn. tx;   import javax.swing.*...
    99+
    2024-04-02
  • java如何实现雷霆战机
    本篇内容主要讲解“java如何实现雷霆战机”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java如何实现雷霆战机”吧!GameFame.javapackage cn. tx;...
    99+
    2023-07-02
  • 如何用VUE和Canvas实现雷霆战机打字类小游戏
    今天就来实现一个雷霆战机打字游戏,玩法很简单,每一个“敌人”都是一些英文单词,键盘正确打出单词的字母,飞机就会发射一个个子弹消灭“敌人”,每次需要击毙当前“敌人”后才能击毙下一个,一...
    99+
    2024-04-02
  • Python+OpenCV实现自动扫雷,挑战扫雷世界记录!
             目录 准备 - 扫雷软件  实现思路 - 01 窗体截取 - 02 雷块分割 - 03 雷块识别 - 04 扫雷算法实现 福利:文末有Python全套资料哦         我们一起来玩扫雷吧。用Python+Open...
    99+
    2023-08-31
    python opencv 开发语言
  • java实现飞机大战游戏
    java实现飞机大战,供大家参考,具体内容如下 用Java写个飞机大战游戏练习一下,实现可播放游戏背景音乐和游戏的基本功能 设计 1、准备好相应的图片和背景音乐(.wav文件); 2...
    99+
    2024-04-02
  • Java开发实现飞机大战
    目录一、飞机大战1 封装所有飞行物公共属性和功能的父类2 封装英雄机属性和功能类3 封装敌机属性和功能的类4 封装大飞机属性和功能的类5 子弹类6 飞机大战射击的主方法二、测试结果本...
    99+
    2024-04-02
  • java实现简易飞机大战
    目录整体思路代码实现英雄战机类敌机类子弹类图片工具类游戏窗体类启动游戏类运行效果图本文实例为大家分享了java实现简易飞机大战的具体代码,供大家参考,具体内容如下 整体思路 1.创建...
    99+
    2024-04-02
  • Java Swing实现扫雷源码
    本文实例为大家分享了Java Swing实现扫雷源码的具体代码,供大家参考,具体内容如下 先来看下效果 运行时只需要创建一个GameWindow的对象即可,可使用有参构造函数自...
    99+
    2024-04-02
  • 用java实现扫雷游戏
    用java做出简单一个扫雷游戏,供大家参考,具体内容如下 1.创造窗口 //创建扫雷窗口界面       public Saolei() {                     ...
    99+
    2024-04-02
  • java实现飞机大战小游戏
    本文实例为大家分享了java实现飞机大战游戏的具体代码,供大家参考,具体内容如下 MyPanel类 package  P; import java.awt.Font; import...
    99+
    2024-04-02
  • 怎么用Java实现飞机大战
    这篇文章将为大家详细讲解有关怎么用Java实现飞机大战,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言《飞机大战》是一款融合了街机、竞技等多种元素的经典射击手游。华丽精致的游戏画面,超炫带感的技能特效,...
    99+
    2023-06-29
  • Java实现简单的扫雷图
    用Java实现简单的扫雷图,供大家参考,具体内容如下 扫雷图的思想是: 1、地图可以是一个二维数组,并对数组进行初始化 2、随机生成雷的位置,可以用Random函数进行随机生成也...
    99+
    2024-04-02
  • Java实现简单扫雷程序
    用Java实现简单扫雷程序,供大家参考,具体内容如下 页面设置:框架是borderlayout,在上中下加入外面要加入的组件(左边和右边不加)。扫雷用的布局是gridlayout即网...
    99+
    2024-04-02
  • Java实现人机对战猜拳游戏
    本文实例为大家分享了Java实现人机对战猜拳游戏的具体代码,供大家参考,具体内容如下 通过控制台方式实现一个人机对战的猜拳游戏 1.用户通过输入(2.剪刀 0.石头 5.布) 2...
    99+
    2024-04-02
  • java实现飞机大战案例详解
    前言 飞机大战是一个非常经典的案例,因为它包含了多种新手需要掌握的概念,是一个非常契合面向对象思想的入门练习案例 程序分析: 在此游戏中共有六个对象: 小敌机Airplane,大敌机...
    99+
    2024-04-02
  • Java实现在线五子棋对战游戏(人机对战)
    目录1. 人机对战1.1 演示1.2 评分表1.3 算法思路1.4 具体代码1. 人机对战 要增添一个人机对战的模块, 最大的难点就是如何让人机知道下在什么位置是最好的, 不仅要具备...
    99+
    2024-04-02
  • 怎么用java实现扫雷游戏
    这篇文章主要介绍“怎么用java实现扫雷游戏”,在日常操作中,相信很多人在怎么用java实现扫雷游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用java实现扫雷游戏”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • PythonPygame实战之飞机大战的实现
    目录导语一、环境安装1)各种素材(图片、字体等)2)运行环境二、代码展示1)文章思路2)附代码讲解3)主程序三、效果展示总结导语 三月疫情原因,很多地方都封闭式管理了! 在回家无聊的...
    99+
    2024-04-02
  • Java实现飞机大战-II游戏详解
    目录前言主要设计功能截图代码实现启动类玩家飞机总结前言 《飞机大战-II》是一款融合了街机、竞技等多种元素的经典射击手游。华丽精致的游戏画面,超炫带感的技能特效,超火爆画面让你肾上腺...
    99+
    2024-04-02
  • java如何实现飞机大战小游戏
    本篇内容介绍了“java如何实现飞机大战小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyPanel类package &nb...
    99+
    2023-07-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作