【JAVA】飞机大战

这篇具有很好参考价值的文章主要介绍了【JAVA】飞机大战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

20231016:
1、原来画面比较闪烁,使用双缓冲解决了;
2、当前服务端和客户端可以分别操作不同友方飞机;
3、日志打印自己定义了下格式;

20231003:
1、添加背景音乐;

20231001:
1、现在子弹打中飞机,飞机会挂(打敌人的飞机,或者友方的飞机被打中都会挂);
2、把敌方飞机发子弹的频率调低了下,不然打不过;

20230930:
1、添加了随机添加敌机,这样敌机比较多了(友军发的红色子弹,敌方发射蓝色子弹);
2、把刷新的速度调快了些;
3、子弹的Vector有数量限制(30个);
4、敌机数量也有限制(8个);

运行效果:
【JAVA】飞机大战,java,python,前端

20230929:
1、当前友方飞机和敌方飞机支持自动发子弹;
2、友方飞机1可以通过AWSD和F分别控制方向和发射子弹;友方飞机2可以通过上下左右和空格分别控制方向和发射子弹;
3、未监测子弹飞出屏幕外;
4、当前子弹只能竖直向上飞和向下飞;
5、当前敌机只有两辆,不能自动生成;
6、还有很多未开发的;

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

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

【JAVA】飞机大战,java,python,前端

【JAVA】飞机大战,java,python,前端文章来源地址https://www.toymoban.com/news/detail-717584.html

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 x
    private int planeX;

    //plane y
    private int planeY;

    private int bulletX;
    private int bulletY;

    private boolean bulletFlag;
    private int backgroundY;

    //bullet move step
    private 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);

        // background
        graphics.drawImage(backgroundImage2, 0, backgroundY, width, height, this);
        graphics.drawImage(backgroundImage1, 0, backgroundY - height, width, height, this);

        // plane
        graphics.drawImage(planeImage, planeX, planeY, null);

        //bullet
        if (bulletFlag)
        {
            graphics.drawImage(bulletImage, bulletX, bulletY, null);
            bulletY -= 2 * moveStep;
        }

        backgroundY += 2;

        return runFlag;
    }
}

到了这里,关于【JAVA】飞机大战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python学习-飞机大战

    一、pygame正确安装 1.安装:pip install pygame 2.验证安装:python -m pygame.examples.aliens;安装ok即会出现如下图所示动画 二、使用pygame创建图像窗口 1.游戏的初始化和退出;要使用pygame提供的所有功能之前,必须先调用init方法;在游戏结束,需要调用quit方法 2.在游戏中,所有可见的

    2024年02月11日
    浏览(75)
  • Python飞机大战(完整版)

    简介:一共分为2个py文件,分别是主类、和精灵类 飞机大战图片地址:链接: https://pan.baidu.com/s/18T6n9JFIDxBqYX9CnHi7ZQ  密码: tqbr 注释:项目启动后如果报libpng warning: iCCP: known incorrect sRGB profile无须处理,不会影响项目和代码,视觉洁癖可以直接百度搜索这个错误提示,网上有解

    2024年02月12日
    浏览(38)
  • python项目:飞机大战已封装(第一部分)第二部分在飞机大战专辑,后期合并

    图片资源已经展示在了顶部 上面我们用import进行了导包以方便后期调用,并用pygame.init()进行了初始化,pygame的所有使用都需要初始化,然后用pygame.display.set_mode创建游戏总画布注意总画布大小要与背景图相关联 英雄子弹类解析 在许多射击游戏中,子弹类是基本的组成部分之

    2024年04月17日
    浏览(37)
  • python——飞机大战小游戏

    目录 1、导入模块 2、窗口操作 3、事件操作 4、长按事件 5、添加游戏背景 6、添加英雄飞机 7、获取飞机的图片矩形 8、基本游戏窗口 9、添加游戏窗口图片 10、英雄飞机登场 11、英雄飞机装备子弹并发射 1、enemy_plane 2、game_main 3、game_map 4、game_score 5、hero_plane 6、plane_bullet 先安

    2024年02月03日
    浏览(61)
  • Python——飞机大战(day10)

    一、面向过程实现 二、面向对象 plane pro需求的描述: 存在四个对象: 我方飞机、敌方飞机、我方子弹、敌方子弹 功能: 背景音乐的添加 我方飞机可以移动【根据按键来控制的】 敌方飞机也可以移动【随机的自动移动】 双方飞机都可以发送子弹 步骤: 1.创建一个窗口 2.创建

    2023年04月09日
    浏览(33)
  • python飞机大战实战演练代码

    # 以下是飞机大战的精灵组函数

    2024年02月08日
    浏览(45)
  • python---简单游戏制作(飞机大战)

    1.开发软件 pycharm 编程软件 pygame 第三方库 sprite Group 2.技术介绍      pycharm: PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供

    2024年02月12日
    浏览(46)
  • Python飞机大战小游戏

    游戏规则:键盘上下左右键控制飞机移动 游戏展示图片: 源码: 第一个py命名为:plane_main.py 第二py命名为:plane_sprites.py 素材图片image关注私信我获取!!!

    2024年02月10日
    浏览(53)
  • python小游戏开发(飞机大战)

    目录 一:背景       1. pygame 模块初识 二.项目设计内容 开发一款飞机大战游戏,要求: (1)实现飞机的移动、子弹发射,对本次游戏有一个初步的编写及认识。 (2)飞机的持续按键移动和飞机自爆优化。 (3)进行基类的抽取,使代码更具有层次性和简化重复代码。 (

    2024年02月16日
    浏览(46)
  • Python代码下的飞机大战

    飞机大战项目 本项目的优点就是,不需要你创建很多复杂的文件夹,单个操作台就可以完成飞机大战游戏的基础版本。如果你感兴趣,就快去试一试吧!素材链接也在下面喽,快去开启你的游戏之旅吧! 素材链接:链接:https://pan.baidu.com/s/1Mb5w-_I-oUi-W0n0jHFYXw 百度网盘提取码

    2024年04月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包