您当前的位置: 首页 >  Java

小新爱学习.

暂无认证

  • 2浏览

    0关注

    89博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java小项目】--- 飞机大战(源码+注释)

小新爱学习. 发布时间:2022-08-11 00:00:06 ,浏览量:2

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

前言:

“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默 经过小新缜密的思考与亲身体验,忍不住分享一下给大家。有人工智能兴趣的朋友们,推荐大家一起学习 🎉点击直接访问🎉 里面有丰富的人工智能学习资料,真正做到从入门到入土,还不快来一起学习🎏🎏🎏

个人名片:

🐼作者简介:一名大一在校生 🐻‍❄️个人主页:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:零基础学java ----- 重识c语言 🐓每日一句:青山一片云雾心安即归处。

文章目录
    • 构思
      • 主类(ShootGame)
      • 英雄机(Hero)
      • 飞行物(FlyingObject)
      • 子弹(Bullet)
      • 奖励蜜蜂(Bee)类
      • 敌飞机类(AirPlane)
      • 奖励接口
      • 计分接口
    • 源码图片获取,微信私

构思

首先,要把整体的游戏框架和内容构思出来(根据预先构思游戏里存在的组件内容和游戏功能抽象出指定类)。以我的小游戏为例:

  • 1.主界面框架类: 显示开始界面

  • 2.弹出界面类: JDialog 窗体的功能是从一个窗体中弹出另一个窗体,就像是在使用 IE 浏览器时弹出的确定对话框,JDialog 窗体与 JFrame 窗体形式基本相同,设置窗体的特性时调用的方法名称都基本相同,如设置窗体大小、窗体关闭状态等

  • 3.游戏面板类:GamePanel (extends JPanel) 真正显示飞机大战动态游戏画面,并且还添加了按钮JButton用于控制游戏开始暂停。

  • 4.玩家飞机类:Hero 移动玩家飞机、画玩家飞机等其他与玩家飞机相关的方法

  • 5.敌机类:AirPlane 移动敌机、画敌机

  • 6.子弹类 移动子弹、绘制子弹

  • 7碰撞类:Collision 检测各种碰撞情况

  • 8.主类:Main 开启程序

主类(ShootGame)
package cn.tede.shoot;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Arrays;
import java.util.Random;
import java.util.TimerTask;

//import static java.util.concurrent.locks.StampedLock.STATE;


public class ShootGame extends JPanel {
    public static final int WIDTH =400;
    public static final int HEIGHT =654;
    private int state;
    public static final int START = 0;
    public static final int RUNNING = 1;
    public static final int PAUSE = 2;
    public static final int GAME_OVER =4;

    public static BufferedImage background;
    public static BufferedImage start;
    public static BufferedImage airplane;
    public static BufferedImage bee;
    public static BufferedImage bullet;
    public static BufferedImage hero0;
    public static BufferedImage hero1;
    public static BufferedImage pause;
    public static BufferedImage gameover;

    private FlyingObject[] flyings = {}; //敌机数组
    private Bullet [] bullets = {}; //子弹数组
    private Hero hero = new Hero();//英雄鸡

    private Timer timer;//定时器
    private int intervel = 1000/100; //时间间隔,十毫秒

    private int score = 0;//得分
//    public ShootGame(){
        flyings  = new FlyingObject[2];
        flyings[0] = new AirPlane();
        flyings[1] = new Bee();
        bullets = new Bullet[1];
        bullets[0] = new Bullet(180,300);
//    }
    static{//静态代码块
        try {
            background= ImageIO.read(ShootGame.class.getResource("background.png"));
            start= ImageIO.read(ShootGame.class.getResource("start.png"));
            airplane = ImageIO.read(ShootGame.class.getResource("airplane.png"));
            bee = ImageIO.read(ShootGame.class.getResource("bee.png"));
            bullet = ImageIO.read(ShootGame.class.getResource("bullet.png"));
            //bullet = ImageIO.read(ShootGame.class.getResource("B1.png"));
            //hero0= ImageIO.read(ShootGame.class.getResource("C.png"));
            hero0= ImageIO.read(ShootGame.class.getResource("hero0.png"));
            hero1 = ImageIO.read(ShootGame.class.getResource("hero1.png"));
            pause= ImageIO.read(ShootGame.class.getResource("pause.png"));
            gameover = ImageIO.read(ShootGame.class.getResource("gameover.png"));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(background,0,0,null);//画背景图片
        paintHero(g);
        paintBullets(g);
        paintFlyingObject(g);
        paintScore(g);//画分数
       // paintPause(g);
        paintState(g);


    }

    /**
     * 画游戏状态
     *
     */
    public void paintState(Graphics g){
        switch(state){
            case START:
                g.drawImage(start,0,0,null);
                break;
            case PAUSE:
                g.drawImage(pause, 0, 0, null);
                break;
            case GAME_OVER:
                g.drawImage(gameover, 0, 0, null);
                break;
        }
    }

    /**
     * 画分数
     * @param g
     */
    public void paintScore(Graphics g){
        Font font = new Font(Font.SANS_SERIF, Font.BOLD,4);
        g.setColor(new Color(0xffff0));//设置字体

        g.drawString("SCORE"+score,10,25);
        g.drawString("LIFE"+hero.getLife(),10,45);
    }
    //画英雄鸡
    public void  paintHero(Graphics g){
        g.drawImage(hero.getImage(),hero.getX(),hero.getY(),null);
    }
    //画子弹
    public void paintBullets(Graphics g){
        for(int i = 0;i             
关注
打赏
1663374351
查看更多评论
0.0603s