【Java】Java基础飞机大战小游戏完整代码

您所在的位置:网站首页 飞机大战编程素材 【Java】Java基础飞机大战小游戏完整代码

【Java】Java基础飞机大战小游戏完整代码

2024-07-03 03:17| 来源: 网络整理| 查看: 265

Java基础飞机大战小游戏完整代码

先来展示一下代码实现结果图 代码结果图1 代码结果图2

主函数ShootGame

初始化游戏原始背景图片,游戏人物图片,游戏开始结束图片;构建产生敌人算法;产生英雄机算法;发射子弹算法;判断是否相撞算法(子弹与敌机相撞,英雄机与敌机相撞);击落敌人奖励算法;绘制游戏中人物算法;鼠标控制移动算法;

import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; public class ShootGame extends JPanel implements MouseMotionListener,MouseListener{ //继承JPanel类 public static final int width = 400; public static final int height = 600; //设置对象图片名称(与源文件名称一致) public static Image background; public static Image airplane; public static Image bee; public static Image bullet; public static Image gameover; public static Image hero0; public static Image hero1; public static Image pause; public static Image start; //定义游戏的四种状态 public static final int START = 0; //开始状态 public static final int RUNNING = 1; //运行状态 public static final int PAUSE = 3; //暂停状态 public static final int GAMEOVER =4; //结束状态 int state =START; //创建对象----------------------------------------------------------------------------------------------- Hero hero = new Hero(); //创建英雄机对象 Bullet[] bullets = {}; //子弹(众多),定义子弹数组 FlyingObject[] flyings = {}; //小敌机(众多),定义小敌机数组 //ShootGame无惨构造方法(给创建对象初始化) /*public ShootGame() { flyings = new FlyingObject[2]; //多态 夫妇 flyings[0] = new Airplane();//小敌机 flyings[1] = new Bee();//小蜜蜂 bullets = new Bullet[2]; bullets[0] = new Bullet(130,250); bullets[1] = new Bullet(100,120); }*/ //静态代码块内容加载 static { try { //导入图片文件----------------------------------------------------------------------------------- //将图片文件赋给图片对象 background = ImageIO.read(new File("image\\background.png")); airplane = ImageIO.read(new File("image\\airplane.png")); bee = ImageIO.read(new File("image\\bee.png")); bullet = ImageIO.read(new File("image\\bullet.png")); gameover = ImageIO.read(new File("image\\gameover.png")); hero0 = ImageIO.read(new File("image\\hero0.png")); hero1 = ImageIO.read(new File("image\\hero1.png")); pause = ImageIO.read(new File("image\\pause.png")); start = ImageIO.read(new File("image\\start.png")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //产生敌人方法------------------------------------------------------------------------------------------- public FlyingObject nextOne() { FlyingObject f; //小敌机类型 Random r = new Random(); //随机产生数 int random = r.nextInt(20); //产生[0,20)随机数 if(random > 3) { f = new Airplane(); //随机数为[4,20) 产生小敌机 }else { f = new Bee(); //随机数为[0,3] 产生小蜜蜂 } return f; //返回小敌机 } int flyingEnterIndex = 0; //敌人对象初始化为0 //把产生的敌人添加到敌人数组中方法------------------------------------------------------------------------ public void enterAction() { flyingEnterIndex++; //敌人对象自加 if(flyingEnterIndex % 50 == 0) { //50 100...每隔50毫秒执行一次,用于控制敌人出现速度 //1、创建敌人对象 FlyingObject one = nextOne(); //创建敌人对象,赋值给 One //2.将敌人对象添加到flyings敌人数组中 flyings = Arrays.copyOf(flyings, flyings.length+1); //扩容+1(增加小敌机) flyings[flyings.length-1] = one; //把产的敌人one赋值(添加)给最后一个数组元素 } } //游戏中各个对象的移动方式-------------------------------------------------------------------------------- public void stepAction() { //敌人的移动(敌人处于敌人数组中,调用数组) for(int i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3