本篇介绍坦克大战游戏除坦克之外的几个角色。
1. Bullet 子弹类 坦克发射出的子弹在游戏中飞行
2.Explosion 爆炸类 子弹击中子弹,障碍物,或是坦克显示爆炸
3. Powerup 增强宝贝类 星星,加坦克,定时器等
4. Score 分数类。 击中坦克或是攻取增强宝贝,加分显示,分数有100,200,300,400,500,击中不同坦克分数不同。
为直观起见,参见下图,红圈里从上到下分别是Bullet, Powerup, Explosion, Score.
子弹类,屏幕中所有显示子弹从一个子弹池BULLET_POOL中取出,子弹有方向,速度,及强度等属性,高强度的子弹可以击破石块。
它每个游戏帧所要完成的操作如下。
/**
* Operation be done in each tick.
*/
public void tick(){
if (!isVisible() || direction==BattleField.NONE)
return;
// Move the bullet.
move(dx, dy);
int x = getRefPixelX();
int y = getRefPixelY();
PlayerTank playerTank=(PlayerTank)Tank.getTank(0);
//outside the battle field, hitting the border
if (x <= 0 || x >= battleField.getWidth() || y <= 0
|| y >= battleField.getHeight()) {
//this is to avoid explosition outside the battlefield.
if(x<=0) x=0;
if(x >= battleField.getWidth()) x= battleField.getWidth();
if(y<=0) y=0;
if(y>= battleField.getHeight())y=battleField.getHeight();
setPosition(x,y);
explode();
return;
}
// See if it hit a tank.
if (friendly) {
// See if it hit an enemy tank.
for (int i = 1; i < Tank.POOL_SIZE; i++) {
EnemyTank enemy = (EnemyTank)Tank.getTank(i);
if (enemy!=null && enemy.isVisible() &&
collidesWith(enemy, false)) {
enemy.explode();
explode();
return;
}
}
} else {
// See if it hit player tank.
if (collidesWith(playerTank, false)) {
playerTank.explode();
explode();
return;
}
}
//check to see if hit player's home
if(Powerup.isHittingHome(this)){
//TODO: Game Over
explode();
return;
}
// See if it hit a wall.
if (battleField.hitWall(x, y, strength)) {
explode();
return;
}
// See if it hit another bullet.
for (int i = 0; i < POOL_SIZE; i++) {
Bullet anotherBullet=BULLET_POOL;
if(this!=anotherBullet && anotherBullet.isVisible()){
if (collidesWith(anotherBullet, false)) {
explode();
BULLET_POOL.explode();
return;
}
}
}
}
要判断是否击中墙壁,对方坦克,或是对方子弹,是否击中“家”,如果有,则爆炸,如都没有,则同方向前行一步。
爆炸类,子弹击中障碍物(墙,子弹,坦克)时显示爆炸动画效果。它有两种一个是大爆炸,一个是小爆炸。
它每个游戏帧所要完成的操作比较简单,每步显示一个动画帧,直到显示完。要判断是否击中墙壁,对方坦克,或是对方子弹,是否击中“家”,如果有,则爆炸,如都没有,则同方向前行一步。
爆炸类,子弹击中障碍物(墙,子弹,坦克)时显示爆炸动画效果。它有两种一个是大爆炸,一个是小爆炸。
它每个游戏帧所要完成的操作比较简单,每步显示一个动画帧,直到显示完。
/**
* Operation be done in each tick.
*/
public void tick() {
if (!isVisible())
return;
nextFrame();
if (getFrame() == 0){
setVisible(false);
}
}
增强宝贝类,有多种,无敌,加坦克,地雷,定时器等。不同的增强宝贝可以使玩家获得不同的能力,玩过坦克大战游戏的人都比较熟悉。
在游戏进行中, 会不时或者当玩家打中红色坦克时,会有游戏中随机出现不同增强宝贝。
它每个游戏帧所要完成的操作如下:
如果玩家得到“无敌”增强功能时,“无敌”具有一定的时效性,需要判断无敌是否过时,其它时候则让该增强宝贝有闪烁效果,引起玩家注意。增强宝贝类,有多种,无敌,加坦克,地雷,定时器等。不同的增强宝贝可以使玩家获得不同的能力,玩过坦克大战游戏的人都比较熟悉。
在游戏进行中, 会不时或者当玩家打中红色坦克时,会有游戏中随机出现不同增强宝贝。
它每个游戏帧所要完成的操作如下:
如果玩家得到“无敌”增强功能时,“无敌”具有一定的时效性,需要判断无敌是否过时,其它时候则让该增强宝贝有闪烁效果,引起玩家注意。
/**
* Operation be done in each tick.
*/
public void tick(){
if(type==NOTHING || !isVisible()) return;
long tickTime = System.currentTimeMillis();
long refreshPeriod=MILLIS_PER_TICK;
//invulnerable powerup is controlled by the player tank.
if(type!=INVULNERABLE &&type!=HOME && type!=HOME_DESTROYED){
if(tickTime-startTime>livePeriod){
setFrame(NOTHING);
setVisible(false);
return;
}
}else{
refreshPeriod=MILLIS_PER_TICK/10;
}
if(timeTaken>=refreshPeriod){
showNextFrame=!showNextFrame;
if(type==INVULNERABLE){
if(showNextFrame){
setFrame(0);
}else{
setFrame(1);
}
}else if(type==HOME || type==HOME_DESTROYED){
setFrame(type);
}else{
if(showNextFrame){
setFrame(type);
}else{
setFrame(NOTHING);
}
}
timeTaken = System.currentTimeMillis() - tickTime;
} else{
timeTaken+=1;
}
}
最后一个是分数类,比较简单,它每个游戏帧所要完成的操作如下
最后一个是分数类,比较简单,它每个游戏帧所要完成的操作如下
/**
* Operation be done in each tick.
*/
public void tick(){
if(isVisible()){
long tickTime = System.currentTimeMillis();
if(startTime>0){
if(tickTime-startTime>livePeriod){
setVisible(false);
startTime=0;
return;
}
}
}
}
在屏幕上显示几秒种后消失。
在屏幕上显示几秒种后消失。
分享到:
相关推荐
android 坦克大战源码 更多我收藏的android源码请继续。。
Android坦克大战游戏源码
Android 坦克大战源代码。欢迎大家下载学习
Android 原生写的坦克大战游戏,其中包括绘图、自定义控件、音频、数据库等知识
安卓android坦克大战源码TankWar
Android坦克大战游戏分析资料。欢迎大家下载学习
Android开发实现坦克大战游戏,可联网对战,绝对NB
使用Android studio开发的坦克大战游戏,适合刚刚开始学习的小白使用,功能简单,也可以用来当作一个期末的大作业使用,不是很复杂,后续还会有更新。
基于C#.NET的坦克大战游戏的设计与实现
期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业...
android坦克大战实例。一个小游戏,新学者可以尝试学习
java毕业设计——网络版坦克大战游戏的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——网络版坦克大战游戏的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——网络版坦克大战游戏的设计与...
Android应用源码之坦克大战游戏源码
Funcode编程C++实现坦克大战游戏课程设计 1.内容 在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。 2.任务和要求 1).游戏有一个初始游戏页面。 2).按下任意键开始游戏,玩家控制坦克在...
C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码。C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业...
分享一款经典的游戏TankWar 坦克大战 Android版,比较完整的游戏源码,Bin目录下有游戏所需要的图像、音效等资源,编译android源码后会在Bin目录下生成apk文件,将此文件安装到android手机中即可玩游戏。 这是一个...