如何比较泰坦之旅装备颜色 战坦示例

当前位置: /
战地1全坦克武器搭配推荐
时间: 来源: 作者:小JJ炖蘑菇面 热度: 13 次
《战地1》中有很多不同类型的坦克,很多玩家对于这些坦克的武器搭配还不是很了解,小编这里就来和大家分享下其资料和心得,以供参考。
《战地1》中有很多不同类型的坦克,很多玩家对于这些坦克的武器搭配还不是很了解,小编这里就来和大家分享下其资料和心得,以供参考。
具体如下:
迫击炮landship,驾驶员使用机枪和空爆/毒/烟雾迫击炮
副炮位使用霰弹和高爆弹
坦克猎手landship
驾驶员使用地图反坦克狙,射速不变
技能为紧急修复30血,去除瘫痪。毒气弹
副驾驶使用57mm!穿!甲!炮!弹!和???(忘了。。。好像是机枪?b测开了一天这个型号的主驾驶,感觉看见坦克在小队语音里报个点补一枪就炸了,包括重坦,伤害有毒)
请勿接近密集建筑物,后果自负
小队支援landship
前后都有机枪,尼玛简直了
技能是履带维修和投掷补给箱
副炮位使用高爆弹和霰弹
45号位是机枪,配合步兵push食用
重型突击A7V
主炮位使用高爆蛋和霰弹
技能是紧急维修和烟幕
2号位(正后)使用双管重机枪
其他乘员使用重机枪
重型突破A7V尼玛是要上天啊,趁没削赶紧玩!!!!!!!!!!!!
主炮位使用超级穿甲炮弹和霰弹
技能是维修和投掷补给箱
正后方2号位使用双管机枪
左右高爆炮弹是什么gui,还让不让步兵活了啊,主驾反坦,侧面步兵被看到就死,神特么贴雷子要从正面上
这主也是要上天
主炮高爆弹和霰弹
2,3重机枪
4和5是喷火器
可惜没有护菊机枪
轻型近距支援雷诺
主炮位37mm高爆和霰弹,注意其他坦克的炮都是59mm,
现在炮塔转不动,霰弹打步兵不太好打,还和高爆共用炮弹。。。
主炮全打中都不一定能打死其他坦克,备弹数太少
技能修履带丢补给包
说实话差不多废了
武器是15发的霰弹和高爆,装弹快,可随时切换
技能是修履带和放反坦克雷
这个我b测一直在用,爹4btr收人头大家都知道有多快,这东西就是用来捞的
无需任何技术含量,无需开第一人称视角,无限备蛋可以一直开火
玩过就知道有的图根本没那么多载具让你打,被对面坦克打了直接修履带放完雷就走
离得近直接绕后艹菊
现在见过最能捞的载具
从某种意义上可称为最强也不为过
75mm主炮配机枪(主炮伤害吊到爆炸,不过算上弹道为啥不叫迫击雷诺)
技能是烟幕和维修(最流氓技能没有之一)
这个也是雷日天级的,在大手子手里破坏性极其恐怖
再加上这两个技能,我玩楼上雷诺就怕这个,两炮直接上天,打也打不过。。。
←扫一扫关注“k73手游”
游戏、动画、漫画,ACG的圈内圈外事
公众号查询:k73手游 轻松订阅 &&
官方QQ群1: 官方QQ群2:
游戏平台:
游戏类型:动作射击
游戏版本:日版美版欧版中文版
游戏标签:
玩家评分:47
k73评分:39
版权所有 鄂ICP备号
鄂公网安备 03号
K73电玩之家80年代末期冷战主要国家的主力坦克的具体型号装备情况大致是怎样的,哪一具体改型最有代表性? - 知乎171被浏览21555分享邀请回答310101 条评论分享收藏感谢收起2536 条评论分享收藏感谢收起更多与世界分享知识、经验和见解王者荣耀这个手游,在1月12好的时候正式改版,出了新的英雄哪吒。正所谓一代英雄一代神,版本的变动对于英雄的修改和装备参数的修改也是常事!今天跟大家讨论一下新版本下坦克的出装!
先说下对于战士很有帮助的版本基本改动:冰脉对于很多坦克和战士来说必出,减速,冷却,防御,增加伤害。当然这个版本赵云必出,由于这件装备和黑切的提升。赵云也有了明显提升!
看看大家在说什么阿玛塔主战坦克全方位武器图解
发帖人:越长大越不安
信息来源:军盟
【导读】阿玛塔主战坦克360°全方位武器图解,带你一分钟了解阿玛塔主战坦克。7874人阅读
实验作品(4)
java(25)
原创性声明
此博文的出处 为&如果进行转载请注明出处。本文作者原创,邮箱,如有问题请联系作者
很久没碰java了,今天突然找出了大二时期写的一个坦克大战游戏的源码,然后运行了一下,竟然依然如此的亲切,突然想到了以前大二的时候的点点时光。好了不废话了,先给出一张图。
这个就是整个游戏的界面了,界面全是用的java画的,不是很好看。如果想要好看的得做成图片版本的
游戏的基本原理就是,一开始创建N个敌人的实例,多线程在界面中移动(移动使用的是重写paint函数来实现的),然后随机移动和发射子弹。
还有就是使用了简单的碰撞检测方法来实现子弹击中别人和碰到障碍物
双缓冲技术,消除频闪
坦克类是这个游戏的主要对象,可以分为三种坦克 一种是自己的坦克,一种是普通坦克,而另一种是BOSS坦克(血多 伤害大),不过都是一个类来实现的
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Tank {
public static final int XSPEED = 5;
public static final int YSPEED = 5;
public static final int WIDTH = 30;
public static final int HEIGHT = 30;
private int x,//坦克的坐标,即位置
private int oldX, oldY;//用来保存上一步的坐标,撞墙的时候调整方向用的
private boolean bL=false, bU=false, bR=false, bD =//方向的标志变量
enum Direction {L, LU, U, RU, R, RD, D, LD, STOP};//方向的枚举
private Direction dir = Direction.STOP;//我方坦克,初始方向
private Direction ptDir = Direction.D;//敌方坦克初始方向,向下
private int step = r.nextInt(12) + 3;
private boolean isSuper=
public boolean isSuper()
return isS
public void setSuper(boolean isSuper)
this.isSuper = isS
private static Random r = new Random();//随机数产生器
//区分好坏的变量
public boolean isBoss()
public boolean isGood()
public void setGood(boolean good)
this.good =
private BloodBar bb=new BloodBar();//血条
//坦克生命值的变量
private int life=100;
public int getLife()
public void setLife(int life)
this.life =
//坦克生死的变量
private boolean live=
public boolean isLive()
public void setLive(boolean live)
this.live =
//坦克的构造方法
public Tank(int x, int y,boolean good) {
this.oldX =
this.oldY =
this.good=
public Tank(int x, int y,boolean good,Direction dir, TankClient tc) {
this(x, y,good);
public Tank(int x, int y,boolean good,boolean boss, Direction dir, TankClient tc) {
this(x, y,good);
this.boss=
//画坦克的方法
public void draw(Graphics g) {
if(!live)//Tank死了就不在重画了
Color c = g.getColor();
if(good)//通过好坏设置颜色
g.setColor(Color.CYAN);
else if(boss)
g.setColor(Color.RED);
g.setColor(Color.BLUE);
g.fillOval(x, y, WIDTH, HEIGHT);
g.setColor(c);
if(good) bb.draw(g);//我方坦克有血条
if(boss) bb.draw(g);//boss有血条
switch(ptDir) {//通过方位判断,画炮筒位置
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y + Tank.HEIGHT/2);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH/2, y);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y + Tank.HEIGHT/2);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y + Tank.HEIGHT);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH/2, y + Tank.HEIGHT);
g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y + Tank.HEIGHT);
move();//重画时,进行移动
//坦克的移动方法,在重画的时候,通过方向定位来进行移动
void move() {
this.oldX =
this.oldY =
switch(dir) {
x -= XSPEED;
x -= XSPEED;
y -= YSPEED;
y -= YSPEED;
x += XSPEED;
y -= YSPEED;
x += XSPEED;
x += XSPEED;
y += YSPEED;
y += YSPEED;
x -= XSPEED;
y += YSPEED;
case STOP:
if(this.dir != Direction.STOP) {//炮筒位置的定位,和行动方向一致
this.ptDir = this.
//判断坦克是否出界,遇到边界则停止
if(x & 0) x = 0;
if(y & 30) y = 30;
if(x + Tank.WIDTH & TankClient.GAME_WIDTH) x = TankClient.GAME_WIDTH - Tank.WIDTH;
if(y + Tank.HEIGHT & TankClient.GAME_HEIGHT) y = TankClient.GAME_HEIGHT - Tank.HEIGHT;
//坏蛋坦克的随机移动,以及发子弹的时间
if(!good&&!boss) {
Direction[] dirs = Direction.values();
if(step == 0) {
step = r.nextInt(12) + 3;
int rn = r.nextInt(dirs.length);
dir = dirs[rn];
if(r.nextInt(40) & 38) this.fire();
//boss坦克的攻击方法
if(!good&&boss)
Direction[] dirs = Direction.values();
if(step == 0) {
step = r.nextInt(12) + 3;
int rn = r.nextInt(dirs.length);
dir = dirs[rn];
if(r.nextInt(40) & 20)this.fire();
//按下键时进行设置键位标志,用于方向定位判断
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_CAPS_LOCK:
this.setSuper(!this.isSuper());
case KeyEvent.VK_F2 :
if(!this.live) {
this.live =
this.life = 100;
case KeyEvent.VK_CONTROL:
case KeyEvent.VK_LEFT :
case KeyEvent.VK_UP :
case KeyEvent.VK_RIGHT :
case KeyEvent.VK_DOWN :
locateDirection();//每次按键后就判断方向
//Tank的方向定位,通过按键后设置的标志进行判断
void locateDirection() {
if(bL && !bU && !bR && !bD) dir = Direction.L;
else if(bL && bU && !bR && !bD) dir = Direction.LU;
else if(!bL && bU && !bR && !bD) dir = Direction.U;
else if(!bL && bU && bR && !bD) dir = Direction.RU;
else if(!bL && !bU && bR && !bD) dir = Direction.R;
else if(!bL && !bU && bR && bD) dir = Direction.RD;
else if(!bL && !bU && !bR && bD) dir = Direction.D;
else if(bL && !bU && !bR && bD) dir = Direction.LD;
else if(!bL && !bU && !bR && !bD) dir = Direction.STOP;
//方向键抬起来时的,恢复键位标志,也进行方向判断
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_LEFT :
case KeyEvent.VK_UP :
case KeyEvent.VK_RIGHT :
case KeyEvent.VK_DOWN :
case KeyEvent.VK_A :
superFire();
locateDirection();
//发出一发子弹的方法,向missiles里面添加子弹
public Missile fire() {
int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;
int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;
if(good&&this.isSuper())//判断是不是超级炮弹
m = new Missile(x, y,good, ptDir,this.tc,true);
m = new Missile(x, y,good, ptDir,this.tc);
tc.missiles.add(m);
//SuperFire向每个方向发子弹的方法
public Missile fire(Direction Dir) {
int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;
int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;
Missile m = new Missile(x, y,good, Dir,this.tc);
tc.missiles.add(m);
private void superFire()
Direction[] dirs = Direction.values();
for(int i=0;i&8;i++)
//tc.missiles.add(fire(dirs[i]));
fire(dirs[i]);
//判断相撞的方法所需的
public Rectangle getRect() {
return new Rectangle(x, y, WIDTH, HEIGHT);
//与坦克和墙相撞时停下来的方法
private void stay() {
//判断坦克是否与墙相撞的方法
public boolean collidesWithWall(Wall w) {
if(this.live && this.getRect().intersects(w.getRect())) {
this.stay();
//判断坦克是否与坦克相撞的方法
public boolean collidesWithTanks(java.util.List&Tank& tanks) {
for(int i=0; i&tanks.size(); i++) {
Tank t = tanks.get(i);
if(this != t) {
if(this.live && t.isLive() && this.getRect().intersects(t.getRect())) {
this.stay();
//血条的内部类
private class BloodBar {
public void draw(Graphics g) {
Color c = g.getColor();
g.setColor(Color.orange);
g.drawRect(x, y-10, WIDTH, 10);
int w = WIDTH * life/100 ;
g.fillRect(x, y-10, w, 10);
g.setColor(c);
//吃血块的方法
public boolean eat(Blood b) {
if(this.live && b.isLive() && this.getRect().intersects(b.getRect())) {
this.life = 100;
b.setLive(false);
坦克类内部有很多的操作方法,还有一个血条。
子弹类就是分为敌方子弹和我方子弹,具有移动速度等属性,具有碰撞检测等功能。
import java.awt.*;
import java.util.L
public class Missile {
public static final int XSPEED = 10;//子弹速度的变量
public static final int YSPEED = 10;
public static
int WIDTH = 10;//子弹大小
public static
int HEIGHT = 10;
private TankC
Tank.D//方向变量
private boolean isS
private boolean live =//子弹的生死变量
public boolean isLive() {
//坦克的好坏之分变量
public boolean isGood()
//Missile的两个构造方法
public Missile(int x, int y, Tank.Direction dir) {
this.dir =
public Missile(int x, int y,boolean good, Tank.Direction dir, TankClient tc) {
this(x, y, dir);
this.good=
public Missile(int x, int y,boolean good, Tank.Direction dir, TankClient tc,boolean isSuper) {
this(x, y, dir);
this.isSuper=isS
this.good=
//画子弹的方法
public void draw(Graphics g) {
if(!live) {
tc.missiles.remove(this);
Color c = g.getColor();
if(good&&isSuper)//是超级炮弹就变大
g.setColor(Color.YELLOW);
g.fillOval(x-5, y-5, 20, 20);
else if(good&&!isSuper) {
g.setColor(Color.YELLOW);
g.fillOval(x, y, WIDTH, HEIGHT);
g.setColor(Color.RED);
g.fillOval(x, y, WIDTH, HEIGHT);
g.setColor(c);
move();//画子弹的时候就要移动
//子弹的移动方法,与坦克方位有关
private void move() {
switch(dir) {//通过方位判断速度
x -= XSPEED;
x -= XSPEED;
y -= YSPEED;
y -= YSPEED;
x += XSPEED;
y -= YSPEED;
x += XSPEED;
x += XSPEED;
y += YSPEED;
y += YSPEED;
x -= XSPEED;
y += YSPEED;
case STOP:
//子弹越界了就要死
if(x & 0 || y & 0 || x & TankClient.GAME_WIDTH || y & TankClient.GAME_HEIGHT) {
tc.missiles.remove(this);
public Rectangle getRect() {
return new Rectangle(x, y, WIDTH, HEIGHT);
//子弹与子弹相撞的方法,且子弹分好坏
public boolean hitMissile(Missile m) {
if(this.live && this.getRect().intersects(m.getRect()) && m.isLive() && this.good !=m.isGood() )
this.live=
public boolean hitMissiles(List&Missile& missiles) {
for(int i=0; i&missiles.size(); i++) {
if(hitMissile(missiles.get(i))) {//调用了hitMissile方法
missiles.remove(missiles.get(i));
public boolean hitTank(Tank t) {
if(this.live && this.getRect().intersects(t.getRect()) && t.isLive() && this.good !=t.isGood() )
if(t.isGood())//自己被击中减血
t.setLife(t.getLife()-20);
if(t.getLife()&=0)
t.setLive(false);
else if(t.isBoss())//BOSS被击中
if(this.isSuper)//被超级炮弹击中
t.setLife(t.getLife()-33);
if(t.getLife()&=0)
t.setLive(false);
t.setLife(t.getLife()-5);
if(t.getLife()&=0)
t.setLive(false);
else//坏人直接死
t.setLive(false);
//t.setLive(false);
this.live =
Explode e = new Explode(x, y, tc);
tc.explodes.add(e);
//子弹与坦克相撞,且子弹分好坏(打敌人坦克的方法)
public boolean hitTanks(List&Tank& tanks) {
for(int i=0; i&tanks.size(); i++) {
if(hitTank(tanks.get(i))) {//调用了hitTank方法
tanks.remove(tanks.get(i));
//子弹与墙相撞的方法
public boolean hitWall(Wall w) {
if(this.live && this.getRect().intersects(w.getRect())) {
this.live =
主类主要是实现显示界面的功能,把在内存中的对象画出来,实现动画的效果。
import java.awt.*;
import java.awt.event.*;
import java.util.L
import java.util.ArrayL
import org.omg.CORBA.PUBLIC_MEMBER;
public class TankClient extends Frame{
public static
int GAME_WIDTH = 800;
public static int GAME_HEIGHT = 600;
Tank myTank = new Tank(200, 300,true,Tank.Direction.STOP, this);
Tank BossTank = new Tank(60, 50,false,true,Tank.Direction.D,this);
List&Missile& missiles=new ArrayList&Missile&();//装子弹的容器
List&Explode& explodes = new ArrayList&Explode&();//装爆炸的容器
List&Tank& tanks = new ArrayList&Tank&();//装敌方坦克的容器
Blood b = new Blood();//实例化一个血块
//实例化两个墙
Wall w1=new Wall(300, 200, 20,150, this);
Wall w2=new Wall(200, 100, 20,150, this);
//双缓冲技术,消除频闪
Image offScreenImage =
public void update(Graphics g) {
if(offScreenImage == null) {
offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.gray);
gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
public void paint(Graphics g)//会自动调用这个方法
g.drawString(&tanks
count:& + tanks.size(), 10, 35);
g.drawString(&explodes count:& + explodes.size(), 10, 50);
g.drawString(&missiles count:& + missiles.size(), 10, 65);
g.drawString(&Tank
life:& + myTank.getLife(), 10, 80);
if(tanks.size() &= 0) {
for(int i=0; i&5; i++) {
tanks.add(new Tank(50 + 40*(i+1), 50, false, Tank.Direction.D, this));
//把容器里面的子弹都画出来
for(int i=0;i&missiles.size();i++)
Missile m=missiles.get(i);
m.hitTanks(tanks);//添加子弹打坦克的方法
m.hitTank(myTank);
m.hitTank(BossTank);
m.hitWall(w1);
m.hitWall(w2);
m.hitMissiles(missiles);//调用子弹撞子弹方法
m.draw(g);
//把容器里面的爆炸全部画出来
for(int i=0; i&explodes.size(); i++) {
Explode e = explodes.get(i);
e.draw(g);
//e.ExplodehitTanks(tanks);
//e.ExplodehitTank(BossTank);
//把容器里面的坦克全部画出来
for(int i=0; i&tanks.size(); i++) {
Tank t = tanks.get(i);
t.collidesWithWall(w1);
t.collidesWithWall(w2);
t.collidesWithTanks(tanks);
t.draw(g);
b.draw(g);//血块画出来
BossTank.draw(g);
BossTank.collidesWithWall(w1);
BossTank.collidesWithWall(w2);
BossTank.collidesWithTanks(tanks);
//我方坦克画出来并添加方法
myTank.draw(g);
myTank.eat(b);
myTank.collidesWithWall(w1);
myTank.collidesWithWall(w2);
//画出墙来
w1.draw(g);
w2.draw(g);
//初始化游戏窗口的方法
public void lauchFrame(){
//初始化坦克,添加进容器
for(int i=0;i&10;i++)
tanks.add(new Tank(50+40*(i+1),50,false,Tank.Direction.D,this));
this.setLocation(300, 100);
this.setSize(GAME_WIDTH,GAME_HEIGHT);
this.setTitle(&zz TankWar&);
this.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
this.setBackground(Color.GREEN);
this.setResizable(false);
this.addKeyListener(new KeyMonitor());
this.setVisible(true);
new Thread(new PaintThread()).start();
private class PaintThread implements Runnable
public void run()
while(true)
repaint();
Thread.sleep(50);
}catch(InterruptedException e)
{e.printStackTrace();}
private class KeyMonitor extends KeyAdapter {//键盘监听
public void keyReleased(KeyEvent e)
myTank.keyReleased(e);
public void keyPressed(KeyEvent e) {
myTank.keyPressed(e);
public static void main(String[] args) {
TankClient t=new TankClient();
t.lauchFrame();
其实坦克大战这种游戏很简单,只要懂一些基本的数据结构和碰撞检测,还有重绘的方法就能够打造属于自己的坦克大战,给自己童年一个华丽的蜕变。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:634638次
积分:7543
积分:7543
排名:第2713名
原创:126篇
转载:65篇
评论:158条
作者是一名软件工程出生的苦逼程序员,本科阶段也是软件工程,目前研究生在读,热爱新技术,热爱编程,为人幽默,热爱开源。
文章:13篇
阅读:98020
阅读:68805
文章:10篇
阅读:17429
(1)(2)(3)(1)(10)(2)(4)(5)(2)(16)(6)(13)(16)(5)(2)(8)(32)(1)(6)(31)(27)

我要回帖

更多关于 奇迹战士泰坦装备镶嵌 的文章

 

随机推荐