飞机大战的需求:

​ 1.游戏可以产生: 小敌机/大敌机/小蜜蜂 -> 随机(概率)产生
​ 2.跟鼠标相关的操作:
​ a.自己的飞机移动
​ b.点击开始游戏
​ c.鼠标移出窗口,游戏暂停
​ d.鼠标进入窗口,游戏继续
​ 3.子弹打中小敌机: 分数 + 5
​ 4.子弹打中大敌机: 分数 + 50,奖励(双倍火力,生命值加成) - 接口
​ 5.子弹打中小蜜蜂: 奖励(双倍火力,生命值加成)

API(application programming Interface): 应用程序接口
帮助文档

Scanner
System -> java.lang
Arrays -> java.utils
Math -> java.lang
构造方法 方法

1.java.awt javax.swing - 窗口化界面

​ Frame -> JFrame : 窗口类

DO_NOTHING_ON_CLOSE:关闭时什么都不做
HIDE_ON_CLOSE:关闭时隐藏窗口(默认效果)
DISPOSE_ON_CLOSE:关闭时注销窗口
EXIT_ON_CLOSE:关闭时退出程序什么时候使用静态常量:如果是只判断两种情况: boolean如果是一开始就固定好几种状态: final一般会使用int类型修饰,因为浮点型不能判断两个值是否相等
2.画板类:

​ Panel -> JPanel -> 解决闪屏问题

原生的 JPanel 是不能自定义绘画的
只能画 按钮,输入框...等的一些组件
功能增强 -> 自定义类继承JPanel因为子类更能一定比父类更强大
3.加载图片

​ 1)图片是存在磁盘中,要将此文件加载到JVM内存中
​ I0 -> 输入/输出流

 new File("相对路径") - 工程下文件必须存在:和类同包下ImageDemo.class -> 获取类的字节码文件对象ImageDemo.class.getResource()ImageDemo.class.getResourceAsStream() - 获取资源文件流文件必须存在src下:ImageDemo.class.getClassLoader()
4.程序设计 - 类的设计

​ 对象: 小飞机/大飞机/小蜜蜂/英雄机/子弹

父类(基类):抽象类成员变量:int blood   int x  int y  图片图片宽/ 高成员方法:move() -> 抽象方法 -> 中文对象对应的类:
子类 extends 父类:小飞机:成员变量:int blood  int score  int x  int y  图片图片宽/ 高  int speed成员方法:move()大飞机成员变量:int blood  int score  int x  int y  图片图片宽/ 高  int speed成员方法:move()小蜜蜂成员变量:int blood   int x  int y  图片图片宽/ 高  int speed成员方法:move()英雄机成员变量:int blood   int x  int y  图片图片宽/ 高  子弹成员方法:move()子弹成员变量:int blood   int x  int y  图片图片宽/ 高  int speed成员方法:move()构造方法:
5.存很多数据 -> 数组:

​ 1.数组长度不可变的,如果想给数组扩容,就必须使用到数组的复制
​ 方法的复制:
​ 1).最原始的方式
​ 2).Arrays.copyOf()
​ 3).System.arrayCopy()

2.数组只能存放同种类型的数据基本数据类型:int[] = {1,2,3,4}引用数据类型Student[] = new Student[5];

ArrayList: 可变长数组
1.只能存放引用数据类型数组
int -> Integer (包装类)
char -> Character
byte -> Byte
long -> Long

2.可以存所有类型,但是建议存同一种类型,因为有可能出现类型转换异常泛型:<E> -> E表示Object,所有类型3.构造方法:空参构造方法: 没有内容的集合ArrayList list = new ArrayList();常用方法API:void add(Object obj)void add(int index, Object obj)Object get(int index)Obejct remove(int index)

具体步骤:

1.创建窗口对象
2.创建画板对象
3.类的设计 - 确定类中目前需要的成员变量和成员方法
4.成员方法目前只有一个 - move(), 研究不同类的移动方式
5.创建类需要不同的构造方法 - 初始化成员变量
a.加载(读取)图片 -> static{} -> 静态代码块,需要静态成员变量
b.获取父类中的成员变量
1.如果父类中的成员变量是protected修饰的
那么子类可以直接获取
2.如果父类中的成员变量是private修饰的
通过调用父类的有参构造方法super()

6.主程序: 添加定时器
a.生成所有飞行物
b.所有飞行物的移动
c.生成很多子弹
d.所有子弹的移动
e.判断所有飞行物 和子弹的越界
f.判断子弹和飞行物的碰撞
g.判断飞行物和英雄机的碰撞
h.英雄的移动 - 鼠标监听
MouseListener - 接口
MouseMotionListener - 接口
鼠标适配器 -> new MouseAdapter
i.判断游戏是否结束 -> blood == 0

7.添加鼠标监听 - 接口

8.游戏状态的判断 -> 结合鼠标适配器完成
//静态常量 -> 全大写

开始状态 -> START
运行状态 -> RUNNING
暂停状态 -> PAUSE
死亡状态 -> GAME_OVER//当前状态 - 会改变 -> 变量
int start = START;START -> 单击 -> RUNNING
RUNNING -> 移出 -> PAUSEgetBlood == 0 -> GAME_OVER
PAUSE -> 进入 -> RUNNING
GAME_OVER -> 单击START 如果只要两个状态 -> Boolean
使用int类型存储 -> 判断值是否相等

9.碰撞
判断子弹和飞行物的碰撞
小蜜蜂/大敌机/小敌机 -> 向上造型fyings
判断飞行物和英雄机的碰撞

10.添加奖励 [双倍火力/ 生命值加成]

11.判断游戏结束 -> hero.blood == 0

12.灰烬 -> 和父类是不同的类

Window类:实现主方法

package planewar;import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Timer;
import java.util.TimerTask;public class Window {public static void main(String[] args) {JFrame win = new JFrame();//设置窗口大小win.setSize(400,600);//设置居中win.setLocationRelativeTo(null);//设置窗口置顶//win.setAlwaysOnTop(true);//设置titlewin.setTitle("飞机大战");//关闭窗口win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//画板对象Draw draw = new Draw();//把画板添加到窗口win.add(draw);//调用action方法draw.action();//显示窗口win.setVisible(true);}
}

Fly类:所有飞行物的父类

package planewar;
/*所有飞行物的父类*/
import java.awt.image.BufferedImage;public abstract class Fly {protected int blood;protected int x;protected int y;protected BufferedImage image;protected int imageWidth;protected int imageHeight;protected boolean remove; //判断消失Fly(){}Fly(int x,int y, BufferedImage image,int blood){this.x=x;this.y=y;this.image=image;this.blood=blood;}abstract void move();public int getBlood() {return blood;}public void setBlood(int blood) {this.blood = blood;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public BufferedImage getImage() {return image;}public void setImage(BufferedImage image) {this.image = image;}public int getImageWidth() {return imageWidth;}public void setImageWidth(int imageWidth) {this.imageWidth = imageWidth;}public int getImageHeight() {return imageHeight;}public void setImageHeight(int imageHeight) {this.imageHeight = imageHeight;}public boolean isRemove() {return remove;}public void setRemove(boolean remove) {this.remove = remove;}
}

ImageFiler类:图片素材类

package planewar;
/*图片素材类*/
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;public class ImageFiler {public static BufferedImage heroplane;public static BufferedImage heroplane1;public static BufferedImage littleplane;public static BufferedImage littleplane1;public static BufferedImage littleplane2;public static BufferedImage littleplane3;public static BufferedImage littleplane4;public static BufferedImage bigplane;public static BufferedImage bigplane1;public static BufferedImage bigplane2;public static BufferedImage bigplane3;public static BufferedImage bigplane4;public static BufferedImage bee;public static BufferedImage bee1;public static BufferedImage bee2;public static BufferedImage bee3;public static BufferedImage bee4;public static BufferedImage bullet;public static BufferedImage start;public static BufferedImage pause;public static BufferedImage gameover;static {try {heroplane = ImageIO.read(ImageFiler.class.getResourceAsStream("image/hero0.png")); //英雄机heroplane1 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/hero1.png"));//小敌机littleplane = ImageIO.read(ImageFiler.class.getResourceAsStream("image/airplane.png"));littleplane1 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/airplane_ember0.png"));littleplane2 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/airplane_ember1.png"));littleplane3 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/airplane_ember2.png"));littleplane4 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/airplane_ember3.png"));//大敌机bigplane = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bigplane.png"));bigplane1 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bigplane_ember0.png"));bigplane2 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bigplane_ember1.png"));bigplane3 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bigplane_ember2.png"));bigplane4 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bigplane_ember3.png"));//小蜜蜂bee = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bee.png"));bee1 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bee_ember0.png"));bee2 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bee_ember1.png"));bee3 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bee_ember2.png"));bee4 = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bee_ember3.png"));//子弹bullet = ImageIO.read(ImageFiler.class.getResourceAsStream("image/bullet.png"));//开始状态start = ImageIO.read(ImageFiler.class.getResourceAsStream("image/start.png"));//暂停状态pause = ImageIO.read(ImageFiler.class.getResourceAsStream("image/pause.png"));//游戏结束gameover = ImageIO.read(ImageFiler.class.getResourceAsStream("image/gameover.png"));} catch (IOException e) {e.printStackTrace();}}
}

Draw类:画板类

package planewar;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.ArrayList;
import java.util.TimerTask;public class Draw extends JPanel {//游戏状态--静态常量public static final int START = 0;public static final int RUNNING = 1;public static final int PAUSE = 2;public static final int GAME_OVER = 3;//当前状态int start = START;HeroPlane hero= new HeroPlane();// LittlePlane littlePlane = new LittlePlane();//new小飞机// BigPlane bigPlane = new BigPlane();//new大飞机// Bee bee = new Bee();//new小蜜蜂// Bullet bullet = new Bullet(hero.getX(), hero.getY());//new子弹//创建所有飞行物的数组ArrayList<Fly> flyings = new ArrayList();//创建子弹的数组ArrayList<Bullet> bullets = new ArrayList();//定时器--成员变量java.util.Timer timer =new java.util.Timer();//成员方法()--游戏开始就执行的方法//定时且重复的事情public void action(){//timer.schedule(new TimerTask() {@Overridepublic void run() {//飞行物的运动//littlePlane.move();// bigPlane.move();// bee.move();// bullet.move();if(start==RUNNING){hero.move();//生成很多飞行物createArrayFly();//生成很多子弹createbullet();//所有飞行物的moveflymove();//子弹的movebulletmove();//判断所有飞行物是否越界outOfBoundAction();//判断子弹是否越界outOfBullet();//子弹打中fight();//飞行物与英雄机碰撞crash();}repaint();}},100,20);//添加监听器--适配器MouseAdapter adapter = new MouseAdapter(){@Overridepublic void mouseClicked(MouseEvent e) {super.mouseClicked(e);if(start==START){start=RUNNING;flyings = new ArrayList<Fly>();bullets = new ArrayList<Bullet>();hero.blood=3;}if(start==GAME_OVER){start=START;}}@Overridepublic void mouseEntered(MouseEvent e) {super.mouseEntered(e);if(start==PAUSE){start=RUNNING;}}@Overridepublic void mouseExited(MouseEvent e) {super.mouseExited(e);if(start==RUNNING){start=PAUSE;}}@Override//移动public void mouseMoved(MouseEvent e) {super.mouseMoved(e);//英雄机移动if(start==RUNNING){hero.setX(e.getX()-hero.getImageWidth()/2);hero.setY(e.getY()-hero.getImageHeight()/2);repaint();}}};this.addMouseListener(adapter);this.addMouseMotionListener(adapter);}//飞行物与英雄机的碰撞private void crash(){for (int i = 0; i < flyings.size(); i++) {Fly fly = flyings.get(i);if(hero.getX()< (fly.getX()+fly.getImageWidth()) && hero.getX()+hero.getImageWidth()> fly.getX() &&hero.getY()+hero.getImageHeight() > fly.getY() && hero.getY()< (fly.getY()+fly.getImageHeight())&&fly.blood>0){fly.blood -= 1;hero.blood -= 1;if(hero.blood<=0){start=GAME_OVER;}}}}//子弹击中飞行物private void fight() {for (int i = 0; i < flyings.size(); i++) {Fly fly = flyings.get(i);for (int j = 0; j < bullets.size(); j++) {Bullet bullet = bullets.get(j);if(bullet.getX()< (fly.getX()+fly.getImageWidth()) && bullet.getX()+bullet.getImageWidth()> fly.getX() &&bullet.getY()+bullet.getImageHeight() > fly.getY() && bullet.getY()< (fly.getY()+fly.getImageHeight())&&fly.blood>0 ){fly.blood -= 1;bullet.blood -= 1;//如果血量为零就消失if(bullet.blood==0){bullets.remove(bullet);}//加分if(fly.getBlood()==0){if(fly instanceof Enemy){Enemy enemy =(Enemy)fly;hero.setScore(hero.getScore()+enemy.getScore());}//小蜜蜂有几率加血if(fly instanceof Award) { //蜜蜂加血Award add = (Bee) fly;int n = (int) (Math.random() * 10);if(n%3==0){hero.setBlood(hero.getBlood()+add.addblood());}}//打败大飞机双倍火力if(fly instanceof BigPlane){BigPlane bigPlane =(BigPlane) fly;if(bigPlane.getBlood()==0){int n = (int) (Math.random()*10);if(n%3==0){hero.doubleFire();}}}}}}}}//判断子弹是否越界private void outOfBullet() {for (int i = 0; i < bullets.size(); i++) {Bullet bullet = bullets.get(i);if(bullet.getY()< 0){bullets.remove(bullet);}}}//判断所有飞行物是否越界private void outOfBoundAction() {for (int i = 0; i < flyings.size(); i++) {Fly fly = flyings.get(i);if(fly.getY() > 600){flyings.remove(fly);hero.setScore(hero.getScore()-2);}}}//子弹运动private void bulletmove() {for (int i = 0; i < bullets.size(); i++) {Bullet bullet = bullets.get(i);bullet.move();}}//所有飞行物的moveprivate void flymove() {for (int i = 0; i < flyings.size(); i++) {Fly fly = flyings.get(i);fly.move();if(fly.remove){flyings.remove(fly);}}}//生成子弹int i=0;private void createbullet() {i++;Bullet bullet;if(i%10==0){Bullet [] bs = hero.shoot();for(int i = 0 ; i < bs.length ; i++){bullets.add(bs[i]);}}/*bullet = new Bullet(hero.getX(), hero.getY());bullets.add(bullet);*/}//生成飞行物int flyingIndex=0;private void createArrayFly() {flyingIndex++;//判断定时器进入的时候if(flyingIndex%10 == 0){int ran = (int) (Math.random()*100);//创建父类对象Fly fly;if(ran<=10){fly = new Bee();}else if(ran>10&&ran<=30){fly = new BigPlane();}else{fly = new LittlePlane();}//将fly添加到flyings中flyings.add(fly);}}@Overridepublic void paint(Graphics g) {//调用父类的画画方法super.paint(g);//画背景BufferedImage bg = null;//加载图片//Draw01.class获取类的字节码对象try {bg= ImageIO.read(Draw.class.getResourceAsStream("image/background.png"));} catch (IOException e) {e.printStackTrace();}//画图片g.drawImage(bg,0,0,null);//英雄机g.drawImage(hero.getImage(),hero.getX(),hero.getY(),null);//状态切换if(start==START){g.drawImage(ImageFiler.start,0,0,null);}else if(start==RUNNING){//g.drawImage(ImageFiler.heroplane1,heroPlane1.getX(),heroPlane1.getY(),null);//画所有飞行物paintflyings(g);//小飞机// LittlePlane littlePlane = new LittlePlane();//g.drawImage(littlePlane.getImage(),littlePlane.getX(),littlePlane.getY(),null);//g.drawImage(ImageFiler.littleplane,littlePlane.getX(),littlePlane.getY(),null);//大飞机//BigPlane bigPlane = new BigPlane();//g.drawImage(bigPlane.getImage(),bigPlane.getX(),bigPlane.getY(),null);//小蜜蜂//Bee bee = new Bee();// g.drawImage(bee.getImage(),bee.getX(),bee.getY(),null);//子弹//Bullet bullet = new Bullet(200, 400);//g.drawImage(bullet.getImage(),bullet.getX(),bullet.getY(),null);//画子弹paintBullet(g);if(hero.blood==0){start=GAME_OVER;}}else if(start==PAUSE){paintflyings(g);paintBullet(g);g.drawImage(ImageFiler.pause,0,0,null);}else if(start==GAME_OVER){g.drawImage(ImageFiler.gameover,0,0,null);}//设置字体大小Font font = new Font("微软雅黑",Font.BOLD,20);g.setFont(font);//设置颜色Color color = new Color(0,0,0);g.setColor(color);g.drawString("Score:"+hero.score,0,30);g.drawString("Life:"+hero.blood,0,50);}//画子弹private void paintBullet(Graphics g) {for (int i = 0; i < bullets.size(); i++) {Bullet bullet = bullets.get(i);g.drawImage(bullet.getImage(),bullet.getX(),bullet.getY(),null);}}//画所有飞行物private void paintflyings(Graphics g) {for (int i = 0; i < flyings.size(); i++) {Fly fly = flyings.get(i);g.drawImage(fly.getImage(),fly.getX(),fly.getY(),null);}}}

HeroPlane类:英雄机类

package planewar;/*英雄机*/
public class HeroPlane extends Fly implements Enemy , Award {int score = 0;Bullet[] bs;HeroPlane(){x=150;y=400;image=ImageFiler.heroplane;imageWidth=image.getWidth();imageHeight=image.getHeight();blood=3;}//计数int count = 0;//数组存图片//BufferedImage[] images = {ImageFiler.heroplane,ImageFiler.heroplane1};@Overridevoid move() {//图片的切换count++;//images[count%2];//this.setImage( images[count%2]);if(count%5==0){setImage(ImageFiler.heroplane1);}else{setImage(ImageFiler.heroplane);}//跟随鼠标移动}int doublefire = 0;//剩余双倍火力public void doubleFire(){doublefire += 15;}public Bullet[] shoot(){Bullet[] bs = new Bullet[0];if(doublefire == 0){bs = new Bullet[1];bs[0]= new Bullet(this.getX(), this.getY());}else{bs = new Bullet[2];bs[0]= new Bullet(this.getX()-getImageWidth()/4, this.getY());bs[1]= new Bullet(this.getX()+getImageWidth()/4, this.getY());doublefire--;}return  bs;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic int addblood() {return blood;}
}

Bullet类:子弹类

package planewar;
/*子弹*/
public class Bullet extends Fly{int speed;Bullet(int x , int y){blood=1;image=ImageFiler.bullet;imageWidth=image.getWidth();imageHeight=image.getHeight();this.x=x+46;this.y=y-imageHeight;speed=3;}@Overridevoid move() {y -=speed;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}
}

LittlePlane类:小敌机类

package planewar;import java.util.ArrayList;/*小敌机*/
public class LittlePlane extends Fly implements Enemy{int score = 1;int speed;int count=0;//构造方法LittlePlane(){image = ImageFiler.littleplane;imageWidth = image.getWidth();imageHeight = image.getHeight();x= (int) (Math.random()*400);y=-imageHeight;blood=1;//初始化速度speed=3;}@Overridevoid move() {//随机x坐标  y++下移//成员变量是private修饰//setY(getY()+speed);//成员变量是protected修饰if(blood!=0){y +=speed;}else{if(count==0){setImage(ImageFiler.littleplane1);}else if(count==4){setImage(ImageFiler.littleplane2);}else if(count==8){setImage(ImageFiler.littleplane3);}else if(count==12){setImage(ImageFiler.littleplane4);}else if(count == 16){remove = true;}count++;}}public int getScore() {return score;}public void setScore(int score) {this.score = score;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}
}

BigPlane类:大敌机类

package planewar;
/*大敌机*/
public class BigPlane extends Fly implements Enemy{int score =5;int speed;int count =0;BigPlane(){blood=5;image = ImageFiler.bigplane;imageWidth=image.getWidth();imageHeight=image.getHeight();x= (int) (Math.random()*400);y=-imageHeight;speed=1;}@Overridevoid move() {//随机x坐标  y++下移if(blood!=0){y +=speed;}else{if(count==0){setImage(ImageFiler.bigplane1);}else if(count==4){setImage(ImageFiler.bigplane2);}else if(count==8){setImage(ImageFiler.bigplane3);}else if(count==12){setImage(ImageFiler.bigplane4);}else if(count==16){remove=true;}count++;}}public int getScore() {return score;}public void setScore(int score) {this.score = score;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}
}

Bee类:小蜜蜂类

package planewar;
/*小蜜蜂*/
public class Bee extends Fly implements Award {int speed;boolean aBoolean=true;int count=0;Bee(){blood=1;image=ImageFiler.bee;imageWidth=image.getWidth();imageHeight=image.getHeight();x= (int) (Math.random()*400);y=-imageHeight;speed=2;}@Overridevoid move() {//随机x坐标y++ x++ if(x=400) x--;if(x=0) x++;if(blood!=0){//y +=speed;if(aBoolean){x +=speed*2;y +=speed;}else {x -=speed*2;y +=speed;}if(x>400-imageWidth){x -=speed*2;aBoolean=false;}else if(x<0){x +=speed*2;aBoolean=true;}}else{if(count==0){setImage(ImageFiler.bee1);}else if(count==4){setImage(ImageFiler.bee2);}else if(count==8){setImage(ImageFiler.bee3);}else if(count==12){setImage(ImageFiler.bee4);}else if(count == 16){remove=true;}count++;}}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}@Overridepublic int addblood() {return 1;}
}

Enemy接口:敌机得分接口

package planewar;
/*加分数*/
public interface Enemy {int getScore();
}

Award接口:加血奖励接口

package planewar;public interface Award {int addblood();
}

运行结果:




在这三天边学边做的过程中收获非常多,理解了很多知识点,学会了自己查找问题。
全部代码都在上面,图片素材不知道怎么上传,需要的可以随时找我!

JAVA编写飞机大战---分析过程及源代码(超详细超完整)相关推荐

  1. 用Java编写飞机大战游戏

    飞机大战(Plane War)是一款非常受欢迎的小游戏,它通过增加玩家的难度和挑战性,促使玩家不断提高自己的操作能力和反应速度,并在升级过程中逐步拓展游戏世界的规模和内容.本文将介绍如何使用Java编 ...

  2. 基于Java的飞机大战游戏的设计与实现论文

    源码下载 http://www.byamd.xyz/hui-zong-1/ 摘 要 现如今,随着智能手机的兴起与普及,加上4G(the 4th Generation mobile communicat ...

  3. 基于Java的飞机大战游戏的设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于Java的飞机大战游戏的设计与实现 摘   要 现如今,随着智能手机的兴起与普及,加上4G( ...

  4. 基于Java的飞机大战游戏的设计与实现(论文+源码)

    毕业设计(论文)任务书 第1页 毕业设计(论文)题目:基于Java的飞机大战游戏的设计与实现毕业设计(论文)要求及原始数据(资料):1.综述基于Java的飞机大战游戏的现状:2.深入了解Java的设计 ...

  5. 毕业设计 基于Java的飞机大战游戏的设计与实现

    文章目录 前言 一.项目设计 1. 模块设计 功能需求 游戏状态控制功能模块 游戏难度的调整模块 游戏界面绘画功能模块 玩家游戏控制功能模块 2. 实现效果 二.部分源码 项目源码 前言 今天学长向大 ...

  6. 基于Java的飞机大战游戏的设计与实现

    项目介绍 飞机大战主要需要我方飞机和敌方飞机,还有子弹,特殊nPC,开始背景,结束背景,以及背景音乐.我方飞机可以随意移动,敌方飞机无规律出现.游戏玩家通过鼠标移动控制飞机移动,我方飞机在游戏开始时就 ...

  7. java版飞机大战代码

    java版飞机大战代码 前言 Plane PlaneStatus类 Power类 Gift Diji play类 over类 MainFrame主类 MyZiDan DijiZiDan Before ...

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

    Java基础飞机大战小游戏完整代码 先来展示一下代码实现结果图 主函数ShootGame 初始化游戏原始背景图片,游戏人物图片,游戏开始结束图片:构建产生敌人算法:产生英雄机算法:发射子弹算法:判断是 ...

  9. 基于Java Swing 飞机大战游戏

    一.项目概要: 基于Java Swing飞机大战游戏,打死飞机,可以随机出现加血包.子弹升级包.并支持根据游戏的分数,调整游戏难度. 二.界面展示: 三.主要代码: package com.maoxu ...

  10. 【Python飞机大战课程设计及源代码】

    摘 要:根据课程要求,以及面向对象程序设计的编程思想,在Windows操作系统环境下,运用PyCharm编译程序,以Python语言为开发语言,最终实现飞机大战游戏相应的游戏操作功能.Python是一 ...

最新文章

  1. JAVA中操作符的优先级
  2. python互相转换组合_Python基本类型的连接组合和互相转换方式(13种)
  3. 图像处理——基于OpenCV的canny边缘检测
  4. Css的filter常用濾波器屬性及語句大全
  5. 存储过程中同一语句多个聚合函数时 into 用法
  6. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
  7. 1821: 入学考试(1261采药)01背包
  8. Standard Driver Routines(标准驱动程序)
  9. css3实现的精美菜单
  10. Storm Trident示例shuffleparallelismHint
  11. 第12课:HA下的Spark集群工作机制解密
  12. labimage 怎样旋转图片_西安匠艺工坊丨别克gl8内饰改装床车图片,精湛工艺,空间力量...
  13. Lesson 10.1Lesson 10.2 开篇:超参数优化与枚举网格搜索的理论极限随机网格搜索
  14. html5 模拟scrollview,horizontalScrollView
  15. 【图形和图像】三原色
  16. R语言笔记--par()函数详解
  17. 基于QT实现的图形软件图片编辑器
  18. 肿瘤NGS的常规检测流程
  19. 量化投资学习——经济周期
  20. 微信自定义分享功能二次封装

热门文章

  1. 小米随身wifi没有网络显示无服务器,小米随身wifi创建失败如何解决_小米随身wifi网络创建失败的解决教程...
  2. python读取qq客户端消息_使用 Python 读取 QQ 消息
  3. FileUtils工具类的使用
  4. 【终极算法】从阿尔法狗元(AlphaGo Zero)的诞生看终极算法的可能性
  5. 微信浏览器视频自动播放
  6. CMOS电路中闩锁效应产生的原因、过程以及后果
  7. SQL存储过程和函数区别(超级简单,人人都可以看懂)
  8. 软硬件版本号命名规范及原则
  9. mysql centos 配置文件路径_Centos7 查看Mysql配置文件
  10. 一起学OCP:oracle-082题库及解析(1-20)