图片版坦克大战其他相关的 类(三)
package imageban;
/**
* 该枚举类定义了坦克,子弹运动的方向
* @author dell
*
*/
public enum Direction {
/*
* 从左到右一次是
* 左 ,上,,右,,下,,停止
*/
L, U, R, D, STOP
}
***************************************************************
package imageban;
import java.util.ArrayList;
/**
* 这是敌方坦克基地,里面有有五个坦克
*
* @author dell
*
*/
public class EnemysBase {
// 装有五个坦克的链表
ArrayList<Enemy> enemy = new ArrayList<Enemy>();
// 提供一个坦克基地
public static EnemysBase enemyBase = new EnemysBase();
/**
* 往链表里添加五个坦克
*/
public void addEnemy() {
for (int i = 0; i < 4; i++) {
enemy.add(new Enemy("images/enemy0.gif",50 + 350*i , 10));
}
}
/**
* 根据索引获得坦克
*
* @param i要获得的那个坦克
* @return Enemy 坦克
*/
public Enemy getEnemy(int i) {
return enemy.get(i);
}
/*
* 在初始化的时候就添加了五个坦克
*/
private EnemysBase() {
addEnemy();
}
/***
* 获得坦克基地里坦克的数量
*
* @return int
*/
public int size() {
return enemy.size();
}
/*
* 获得坦克基地
*/
public static EnemysBase getEnemyBase() {
return enemyBase;
}
/*
* 如果坦克死了,就删除该坦克
*/
public void remove(int i) {
enemy.remove(i);
}
}
***************************************************************
package imageban;
import java.awt.Color;
import java.awt.Graphics;
import java.io.IOException;
import tankImage.Explosion;
/**
* 此类的作用是当坦克被击中时发生爆炸的效果
*
* @author Arthur
*
*/
public class Explode extends Tank{
Explosion explosion = new Explosion("images/blast",4);
public Explode(String imagePath,int x,int y,int n){
super(imagePath,x,y);
}
public Explosion getExplosion() {
return explosion;
}
public void setExplosion(Explosion explosion) {
this.explosion = explosion;
}
int step = 0;// 储存数组的下标
// 画爆炸的园
public void draw(Graphics g) {
if (step == explosion.size()) {
this.setAlive(false);
step = 0;
return;
}
Color c = g.getColor();
g.setColor(Color.yellow);
g.drawImage(explosion.getImage(step), this.getX(), this.getY(), null);
g.setColor(c);
step++;
}
@Override
public void fire(Graphics g) {
// TODO Auto-generated method stub
}
@Override
public void loadMissiles() {
// TODO Auto-generated method stub
}
@Override
public void locateDirection() throws IOException {
// TODO Auto-generated method stub
}
}
******************************************************************************
package imageban;
import java.awt.Graphics;
import java.awt.Rectangle;
/**
* 定义了绘画矩形的方法接口和获得矩形的方法接口
* @author dell
*
*/
public interface RectangleInter {
public Rectangle getRect();
public void draw(Graphics g);
public void move();
}
**********************************************************
package imageban;
import java.awt.*;
import java.awt.event.*;
import music.Music;
/**
* 战场类
* @author dell
*
*/
public class WarField extends Frame {
/**
* T
*/
public static final int WIDTH =1200,HEIGHT=720;//战场的高度和宽度
private static final long serialVersionUID = 1L;
Image offScreenImage = null;
EnemysBase enemybase = EnemysBase.getEnemyBase();//坦克基地
Music music = new Music();
public void init() {
this.setTitle("TankWar");
this.setSize(WIDTH, HEIGHT);
this.setResizable(false);//设置为不可改变大小
this.setVisible(true);
music.playSound("images/start.wav",3) ;//播放背景音乐
/**
* 定义一个关闭窗口的方法
*/
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.addKeyListener(new Key());//谈价键盘监听器
this.setBackground(Color.GREEN);
new Thread(new PaintThread()).start();
}
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(WIDTH, HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.black);
gOffScreen.fillRect(0, 0, WIDTH, HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
}
/*
* 绘画坦克的最主要的方法(non-Javadoc)
* @see java.awt.Container#paint(java.awt.Graphics)
*/
@Override
public void paint(Graphics g) {
Color color = g.getColor();
MyTank.myTank.draw(g);//绘画我方坦克,即为我方坦克登陆战场
g.setColor(color);
//敌方军团来啦
for(int i=0;i<enemybase.size();i++){
Enemy e = enemybase.getEnemy(i);
e.draw(g);//敌方坦克登陆战场
}
}
public WarField() {
this.init();
}
/**
* 键盘监听内部类,用来控制炮弹的方向
* @author dell
*
*/
private class Key extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
MyTank.myTank.keyPressed(e);
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
MyTank.myTank.keyReleased(e);
}
}
/**
* 线程内部类
* @author dell
*
*/
private class PaintThread implements Runnable {
public void run() {
while (true) {
repaint();//这个方法自动调用上面的paint方法
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
图片版坦克大战其他相关的 类(三)相关推荐
- Java小项目:图片版坦克大战
0.1最低版本 (1)要求:产生一个空白窗口 (2)掌握技巧: a.通过eclipse建立新的项目 b.为新的项目指定不同的源代码和输出目录 c.指定项目所用的JDK d.通过eclipse建立新的类 ...
- 基于Netty的联机版坦克大战
基于Netty的联机版坦克大战 项目介绍 项目github地址:基于Netty的联机版坦克大战 该项目实现了联机版坦克大战,项目包括客户端与服务端 项目使用技术: 使用Netty实现客户端和服务端之间 ...
- jQuery 版坦克大战游戏
查看效果 下载地址 jQuery 版坦克大战游戏,仅完成了一个基本的对战模块雏形,为你打造功能完备的大型射击类网页游戏做准备.通过这个小游戏的编程实战,你可以了解到角色转换.角色移动.子弹碰撞判断.生 ...
- Java版坦克大战游戏
技术:Java等 摘要: Java随着各种电子设备,其中尤其是移动通信设备的发展所诞生的一项新的开发技术.Java定位在各种电子设备产品的功能应用上,对电子产品的多样,智能化,提供了很大的帮助.本次设 ...
- python版坦克大战
Python版坦克大战 Python一千行代码搞定坦克大战游戏. 在开发坦克大战游戏项目中,我们使用的是pygame模块来完成的,所以得先装好pygame模块.本游戏一共封装了11个类和两个模块(py ...
- 基于ComblockEngine+Unity的联机版坦克大战(一)
文章目录 阶段目标 环境搭建 流程设计 相关说明 相关代码 上述源码地址 写在前面的一段话: 之前准备用LuaServer写一个简单moba手游,后来觉得,LuaServer毕竟是前公司内部的产品,不 ...
- java swing 版坦克大战
1.基于Java swing版坦克大战,git链接:https://github.com/zhangliqingyun/TankGame.git 2.项目包结构图,TankGame.java程序启动类 ...
- 从零开始5——简陋版坦克大战(2)
从零开始5--简陋版坦克大战(2) 往期内容 从零开始5--简陋版坦克大战(1) 从零开始制作一款游戏4--DarkRoom-I改进版 2020新春献礼--从零开始制作一款游戏3 从零开始制作一款游戏 ...
- html5+javascript+css实现---网页版坦克大战---无需运行环境
html5+javascript+css实现-网页版坦克大战-无需运行环境,只需一个浏览器,重拾少年情. 运行环境-除老版IE浏览器都可以: 源码需要请:点赞留言邮箱: 可以跳关,回退关卡.支持双人坦 ...
- java怎么给坦克上图片_Java坦克大战 (七) 之图片版
在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学完J2SE的小伙伴们一点启示! 坦克大战效果图: 坦克大战V0.7图片版实现功能: 1.将方向定义为一个E ...
最新文章
- C# 栈 、队列的概念
- A股暴跌,户均亏2万!刚写好的辞职信又撕了……
- TCP和UDP和IP和HTTP和socket
- ubuntu 12.04 交叉编译 arm/mips 平台的 strace
- 【PAT乙级】1073 多选题常见计分法 (20 分)
- 快手文档 - www.kuaishou.net
- C# 接受MQTT服务器推送的消息
- OpenCV学习笔记(1)——显示图片
- 搭建LNMP环境(CentOS 6.8 + nginx1.10 + mysql5.6 + php5.6 )
- python2还能用吗_官方推荐python3,为何还有人在用python2呢?
- java 关于日期的操作
- Python大数据处理扩展库pySpark用法精要
- python设计模式六大原则_学习设计模式 - 六大基本原则之迪米特法则(示例代码)...
- 数学建模——层次分析法模型
- 【数据采集】-目前比较流行的几种数据采集方式
- TBSchedule调度平台疑难解答
- Excel 文件格式解析
- 【AIOT】HumanCenteredSensing
- 大学生计算机基础学多久,大学生计算机基础学期总结
- java微信录音arm转mp3_使用FFmpeg将微信录音 amr格式 转 MP3格式
热门文章
- 江西单招主计算机学校,2019年江西单招学校,江西单招信息技术试题,2019江西单招综合素质...
- Vue源码:mustache模板引擎学习
- MySQL查询日期类数据常用函数
- HTML:表单学习笔记
- scapy获取ip_如何使用scapy从数据包中读取整个ip层和tcp层?
- 理解线程/多线程处理数组(MultiThreaded dealing with arrays)
- PyTorch 之 Checkpoint 机制解析
- Focal Loss-RetinaNet算法解析
- 强推WordPress里的一款代码高亮插件——EnlighterJS
- ABP框架系列之四十九:(Startup-Configuration-启动配置)