java程序之飞机大战_java写飞机大战一
从前看马士兵老师的教程,学过一个坦克大战,不过当时一头雾水,一直想着模仿着写一个飞机大战,放假了终于动手写了,虽然AWT似乎已经不推荐用了,但是懒得研究swing啊,作为javase的练习还是可以的。
有点成型,尚未完成。
构想:
飞机从一开始就一直发射子弹(和微信那个差不多),敌方飞机从“天上”往下降落,但是不会发射子弹。
普通敌方飞机一炸就死。
BOSS敌方飞机则需要较长时间的攻击。
我方飞机一炸就死。
我方飞机可以吃技能,分别是
无敌技能
三射技能
变弱技能
这三个技能不能共存,使用状态模式控制。
首先,实现游戏窗口:继承Frame类
public class GameClient extends Frame
启动窗口的方法:
// 启动窗口
private void launchFrame() {
// 位置,大小,添加按键监听
this.setLocation(GameConstant.FrameData.WIN_X,
GameConstant.FrameData.WIN_Y);
this.setSize(GameConstant.FrameData.WIN_WIDTH,
GameConstant.FrameData.WIN_HEIGHT);
this.setResizable(false);
this.setTitle(GameConstant.GameStr.GAME_NAME);
this.setBackground(GameConstant.ColorHelper.GAMEBKCOLOR);
this.addWindowListener(new MyWindowAdapter());
this.addKeyListener(new KeyMonitor());
setVisible(true);
new Thread(paintThread).start();
new Thread(attack).start();
new Thread(fire).start();
new Thread(bossAttackThread).start();
}
四个线程是分别控制游戏的线程,暂时不理。
GameConstant这个类是用来放一些静态变量的,可以自己控制调试,游戏速度,角色大小等。
import java.awt.Color;
public class GameConstant {
// 游戏窗口的静态变量
public static class FrameData {
public static final int WIN_WIDTH = 400;
public static final int WIN_HEIGHT = 600;
public static final int WIN_X = 350;
public static final int WIN_Y = 50;
}
// 颜色
public static class ColorHelper {
public static final Color MAIN_PALNE_COLOR = Color.BLUE;
public static final Color PCNORMALCOLOR = Color.RED;
public static final Color BOSSCOLOR = Color.YELLOW;
public static final Color MISSLECOLOR = Color.BLACK;
public static final Color GAMEBKCOLOR = Color.WHITE;
}
// 游戏相关的静态变量
public static class GameStr {
public static final String GAME_NAME = "beatPlane";
}
// 子弹静态变量
public static class BulletData {
public static final int RADIUS = 10;
public static final int SPEED = 3;
public static final int ATTACKVALUE = 1;
}
// 我方飞机静态变量
public static class MainPlaneData {
public static final int RADIUS = 20;
public static final int FIRST_X = 175;
public static final int FIRST_Y = 550;
public static final int SPEED = 5;
}
// 普通敌方飞机的静态变量
public static class NormalPcPlaneData {
public static final int RADIUS = 20;
public static final int INIT_SPEED = 1;
public static final int BLOOD = 1;
}
// 敌方飞机BOSS的静态变量
public static class BossPcPlaneData {
public static final int RADIUS = 40;
public static final int INIT_SPEED = 1;
public static final int BLOOD = 10;
}
}
这里的
MyWindowAdapter很简单,为了控制右上角点击xx时候的动作,默认当然是退出游戏。
public class MyWindowAdapter extends WindowAdapter{
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
}
按键监听的
KeyMonitor,因为是按键主要是操作我方的飞机,所以这里采用了回调的方法,对我方飞机进行操作,可以暂时不理会。
// 按键监听
private class KeyMonitor extends KeyAdapter {
public void keyPressed(KeyEvent keyEvent) {
mainPlane.onkeyPressed(keyEvent);
}
}
在launchFrame方法执行之后,启动了四个线程: new Thread(paintThread).start();
new Thread(attack).start();
new Thread(fire).start();
new Thread(bossAttackThread).start();
先看paintThread:
// 不断刷新画面的线程
private class PaintThread implements Runnable {
public void run() {
while (true) {
// 每隔15ms,调用父类的repaint()方法
repaint();
try {
Thread.sleep(15);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
为什么调用父类的repaint方法呢?
就要看这个update方法了:
// 重写update方法,在父类repaint()方法调用的时候会调用这个方法
public void update(Graphics g) {
if (offScreanImage == null) {
offScreanImage = this.createImage(GameConstant.FrameData.WIN_WIDTH,
GameConstant.FrameData.WIN_HEIGHT);
}
Graphics gOffScrean = offScreanImage.getGraphics();
Color preColor = gOffScrean.getColor();
gOffScrean.setColor(GameConstant.ColorHelper.GAMEBKCOLOR);
gOffScrean.fillRect(0, 0, GameConstant.FrameData.WIN_WIDTH,
GameConstant.FrameData.WIN_HEIGHT);
gOffScrean.setColor(preColor);
paint(gOffScrean);
g.drawImage(offScreanImage, 0, 0, null);
}
If this component is not a lightweight component, the AWT calls the update method in response to a call to repaint. You can assume that the background is not cleared.
简单理解,这个update就是用来刷新界面的,我其实也不是特别理解。
先到这里吧。
java程序之飞机大战_java写飞机大战一相关推荐
- java做飞机大战_Java+swing版飞机大战
Java小游戏实训--飞机大战 一.实验目的 使用Java+swing实现飞机大战小游戏 二.实验要求 1.掌握Java的基本语法. 2.掌握面向对象的编程思想. 3.掌握利用swing布局游戏界面的 ...
- 怎么用java做全民飞机大战_Java飞机大战游戏设计与实现
1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...
- java飞机大战流程图_飞机大战说明文档
JIANGXI AGRICULTURAL UNIVERSITY精彩内容,尽在百度攻略:https://gl.baidu.com 科技月月评设计报告 精彩内容,尽在百度攻略:https://gl.bai ...
- Java窗口游戏开发,飞机大战,打飞机,打大飞机,打无敌飞机妙啊!!!!————————香啊~~~~~~~~~~~~~~~~~
身无分文宅家,细发日渐稀疏. 双亲日益劳累,奈何无心寻工. 复试遥遥无期,心情惨惨戚戚. 若问此时作甚?抽烟喝酒扣叮.---杂记2020/3/25-2020/4/12 矫情下,莫认真 接下来奉上近日学 ...
- javascript打飞机程序8x8x飞机大战js打飞机程序,飞机大战知识点包含了JavaScript面向过程的全部知识点,包括变量、运算符、判断、循环、数组、自定义函数、系统函数、事件等。...
js打飞机程序,飞机大战知识点包含了JavaScript面向过程的全部知识点,包括变量.运算符.判断.循环.数组.自定义函数.系统函数.事件等. 讲解了JavaScript编程语言制作游戏界面,添加游 ...
- python飞机大战概要设计_飞机大战大学课程设计初稿.doc
毕业设计(论文) 题 目: 基于安卓平台的飞机大战游戏 学 院: 计算机科学学院 专业班级: 计算机科学与技术10级2班 指导教师: 黄国兵 职称:高级工程师 学生姓名: 赵兵 学 号: 410090 ...
- python飞机大战概要设计_飞机大战--毕业论文--初稿.doc
您所在位置:网站首页 > 海量文档  > 学术论文 > 毕业论文 飞机大战--毕业论文--初稿.doc55页 本文档一 ...
- android飞机大战功能,安卓飞机大战(二) SurfaceView实现自制背景
用SurfaceView写一个自制的背景图,并且可以移动,加上安卓飞机大战(一)中的BackgroundManager类,可以直接使用 GameView代码: public class GameVie ...
- 飞机大战java_java版飞机大战实战项目详细步骤
本文为大家分享了java版飞机大战实战项目,供大家参考,具体内容如下 分析 飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应有英雄机(也就是 ...
最新文章
- 机器视觉资料汇总(2)
- (问题)c语言现代方法2th,自己编写的reminder.c程序 找错/修改/拓展延伸
- CSDN绑定GitHub账号
- Node.js 开发技能图谱
- javascript-复制
- 跨过虚拟化技术浪潮,Veeam快步入局云数据管理
- jquery 2.0.3代码结构
- Tesseract处理背景渐变的图片
- excel查找和替换
- 布料仿真中常用积分方法
- AI口罩“督查官”诞生记
- zynq100 linux移植,Linux3.6.7在OK6410平台的移植(四)搭建YAFFS2根文件系统
- js获取本周日期和上周日期
- 图解FDISK与FORMAT命令分区与格式化
- Nebula Graph 招募社区布道师
- 热烈祝贺“UTONMOS第一届公会会长圆桌会议”圆满举行
- 你的typora图床配置了吗?人家都开始收费了
- 我的网名为什么是ma6174????
- Havok物理引擎_百度百科
- Steam Apex Legends 最简单领取方法,不需要改地区
热门文章
- 软件测试中的黑盒测试和白盒测试和灰盒测试
- 某Xavier载板硬件方案
- 使用itextpdf生成pdf
- 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
- CC2640R2F之配对绑定与解除绑定篇
- IPA转APP的方法和APP转IPA的方法
- Python 扫雷游戏 完整源代码+图片素材
- **caffe_vcpkg+vs2017+win7安装整理**
- 2.10 窗口的拆分与隐藏 [原创Excel教程]
- exchange 连接远程服务器 拒绝访问