在XXX.model包里新建一个BaseModel用来让所有的实体来继承,再新建一个接口TouchAble
老实说,一开始老师这里这么写,我是没太理解的,后来才发现这样写太棒了!优点,写到后面我们自然就明白了。
接下里,我们来画seedflower(就是向日葵的卡片)。
先列出BaseModel
public class BaseModel {
private int locationX;
private int locationY;
private boolean isAlive;
public int getLocationX() {
return locationX;
}
public void setLocationX(int locationX) {
this.locationX = locationX;
}
public int getLocationY() {
return locationY;
}
public void setLocationY(int locationY) {
this.locationY = locationY;
}
public boolean isAlive() {
return isAlive;
}
public void setAlive(boolean isAlive) {
this.isAlive = isAlive;
}
public void drawself(Canvas canvas, Paint paint) {
}
public int getModelWidth(){
return 0;
}
}3个参数,设置set,get
locationX,locationY,分别代表实体左上角的横纵坐标,isAlive是boolean型,用来判断实体是否应该出现
drawSelf方法就不说了,都懂的
getModelWidth方法主要是为之后的碰撞检测做铺垫,这边先不管
然后是,TouchAble接口,里面就写入一个方法
public interface TouchAble {
public boolean onTouch(MotionEvent event);
}用来判断是否发生触碰事件
好,让我们开始画seedFlower吧。老样子,先配置好图片资源。
传入父类的所有参数,并配置好set,get方法。重写父类的drawSelf方法,以及实现接口的抽象方法onTouch
我们先画,触摸之后写。
初始化构造方法
public SeedFlower(int locationX, int locationY) {
this.locationX = locationX;
this.locationY = locationY;
isAlive = true;
}配置好后,写drawSelf方法
public void drawself(Canvas canvas, Paint paint) {
if (isAlive) {
canvas.drawBitmap(Config.seed_flower, locationX, locationY, paint);
}
}这里的locationX,locationY之前也提过了,是图片左上角的坐标
接下里就要在GameView里画出来了
这个时候,我们理一下画图分层以及触摸分层的概念。
画图层:后画上去的会覆盖掉先画上去的
触摸层:在上面的层会优先响应
那我们分一下层:
第一层:待安放状态的植物
第二层:种子
第三层:阳光
第四层:植物、僵尸,子弹
根据以上的内容,新建一个ArrayList<BaseModel> gameLayout2,在createElement方法里实例化
然后添加元素seedFlower和seedPea
gameLayout2 = new ArrayList<BaseModel>();
gameLayout2.add(new SeedFlower(Config.sunDisapperX+ Config.seedBank.getWidth() / 6, 0));
gameLayout2.add(new SeedPea(Config.sunDisapperX+ Config.seedBank.getWidth() / 6
<span style="white-space:pre"> </span>+ Config.seed_flower.getWidth() + 5, 0));这里面的locationX和locationY我就不一一计算了,还是很好理解的
接下里,写触摸。先在主Activity里写上触摸响应onTouchEvent
public boolean onTouchEvent(MotionEvent event) {
return gameview.onTouchEvent(event);
}因为有gameview的onTouchEvent,所以在GameView里写入方法
public boolean onTouchEvent(MotionEvent event) {
for (BaseModel model : gameLayout2) {
if (model instanceof TouchAble) {
if (

本文详细介绍了在Android平台上开发植物大战僵尸游戏的过程,包括创建BaseModel基类、TouchAble接口,以及绘制和触摸事件处理。文章还涉及了游戏逻辑中的植物分层、触摸响应、HashMap的应用等关键知识点,帮助开发者深入理解游戏开发。
最低0.47元/天 解锁文章
1181

被折叠的 条评论
为什么被折叠?



