Android植物大战僵尸教程学习总结(二)

本文详细介绍了在Android平台上开发植物大战僵尸游戏的过程,包括创建BaseModel基类、TouchAble接口,以及绘制和触摸事件处理。文章还涉及了游戏逻辑中的植物分层、触摸响应、HashMap的应用等关键知识点,帮助开发者深入理解游戏开发。
摘要由CSDN通过智能技术生成

在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我就不一一计算了,还是很
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值