java实现飞机大战小游戏(源码+注释)

整体的思路和博主其他博文java实现贪吃蛇小游戏(源码+注释)java实现2048小游戏(源码+注释)是一样的,都是利用Frame创建窗体,利用Panel添加组件,提前规划好布局,调用鼠标和键盘监听,引用图片元素。
此处的思路在于不断的刷新敌机集合和子弹集合来实现动态效果。

文章目录

一.工程文件

在这里插入图片描述

二.Main.java

主函数,实现类

package ui;

//主函数实现
public class Main {
    public static void main(String[] args) {
        //创建窗体
        GameFrame frame = new GameFrame();
        //创建面板
        GamePanel panel = new GamePanel(frame);
        //调用开始游戏的方法启动游戏
        panel.action();
        //将面板加入到窗体中
        frame.add(panel);
        //设置窗体可见
        frame.setVisible(true);
    }
}

三.GameFrame.java

窗体类,绘制窗体

package ui;

import javax.swing.*;

//创建窗体
public class GameFrame extends JFrame {
    //构造方法,初始化窗体属性
    public GameFrame(){
        //设置标题,来源于JFrame
        setTitle("飞机大战");
        //设置大小
        setSize(512,768);
        //设置居中
        setLocationRelativeTo(null);
        //设置窗体可见
        //setVisible(true);
        //不允许玩家修改界面大小
        setResizable(false);
        //设置默认的关闭选项
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

四.GamePanel.java

画布类,用于勾勒元素

package ui;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

//自定义游戏面板(创建画布)
public class GamePanel extends JPanel {

    //定义背景图
    BufferedImage bg;

    //构造游戏机
    Hero hero = new Hero();
    //敌机集合
    List<Ep> eps = new ArrayList<Ep>();
    //弹药集合
    List<Fire> fs = new ArrayList<Fire>();
    //定义分数
    int score;
    //设置游戏开关
    Boolean gameover=false;
    //设置火力
    int power = 1;

    //动作函数,描绘场景内飞行物的运动状态
    public void action(){
        //创建线程(基本模板)
        new Thread(){
            public void run(){
                //无线循环创建
                while (true){
                    //判断如果游戏没有失败,则执行以下操作
                    if(!gameover){
                        //敌机进场
                        epEnter();
                        //调用敌机移动方法
                        epMove();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值