植物大战僵尸安放植物
接下来需要实现安放植物的逻辑,首先我们需要将可以安放植物的点加载出来,安放植物的点放在二维数组中,因为每个点都是有第几行和第几列构成的。然后当点击已选植物框内的植物的时候,需要将被点击的图片变为灰色,最后点击草坪的时候去安放植物。
加载安放植物的点的实现如下,需要在游戏开始的时候去调用。
/**
* 开始游戏
*/
TMXTiledMapmap,List<ShowPlant>selectPlant){
=map;
=selectPlant;
isStart=true;//是否开始游戏的标记
zombiesPoint = (map,"road");//初始化僵尸的坐标点
();//定时器
("loadZombies", this,2, false);
loadPlantPoint();
}
/**
* 加载安放植物的点
*/
private void loadPlantPoint(){
Stringformat="tower%02d";
for(inti= 1; i <=5; i++) {
List<CGPoint>loadPoint =(map, (format,
20.
i));
for(intj = 0; j < (); j++) {
22. plantPoint[i-1][j]=(j);
}
}
}
为了方便的判断该列上面有没有植物和僵尸,我们需要定义一个“FightLine”用 hashMap 存放该列上面的植物和僵尸。
.;
import ;
import ;
import ;
.;
.;
.;
/**战线
*
****@author 子豪
*
*/
public class FightLine {
publicFightLine(int i){
}
//保存该战线上所有植物
private HashMap<Integer, Plant> plants=new HashMap<Integer, Plant>();
//维护所有僵尸
Private CopyOnWriteArrayList<Zombie> zombies=new CopyOnWriteArrayList<Zombie>();
/**
* 添加僵尸
*/
publicvoidaddZombies(final Zombiezombie){
(newDieListener(){
***@Override
publicvoiddie() {
28. (zombie);//僵尸死亡,从集合中移除
}
});
(zombie);
}
/**
* 添加植物
*/
publicvoidaddPlant(finalPlant plant){
(new DieListener() {
***@Override
publicvoiddie() {
40.
(());
}
});
((),plant);
}
/**
* 判断该条线是否包含植物
* ***@return
*/
publicboolean containsPlant(PlantmPlant){
//判断 hashmap 的键集合中是否包含传进来的植物的列数
().contains(());
}
}
GameEngine 中需要初始化一条战线。
static{
fightLine=newArrayList<FightLine>();
for(inti= 0
安卓教程:植物大战僵尸安放植物 来自淘豆网m.daumloan.com转载请标明出处.