设计好了草坪我们设计一个僵尸类Jiangshi.java,僵尸有一个整形变量type代表僵尸的类型,0代表普通僵尸,1代表红帽僵尸,2代表铁桶僵尸,其次僵尸有一个整形变量hp代表僵尸的血量,然后有一个isMove布尔型标识表示僵尸是否可移动,僵尸在碰到植物的时候让僵尸停止移动即正在吃食物,僵尸与植物的碰撞检测可用矩形碰撞检测,java的Rect对象有一个intersect方法用来判断两个矩形是否交合用于矩形碰撞检测。另外还有个是否被寒冰子弹击中布尔型属性,如果是被寒冰子弹击中移动速度减半,僵尸的移动就是x坐标减去一个速度值即可即向左边移动,依旧使用一个Vector容器来进行存储僵尸,如果僵尸血量为0就从该容器移除僵尸,创建僵尸的时候可以使用一个固定二维数组,如下边所示 int LEVELS[][]={{0},{0,0},{0,0,1},{0,1,1},{0,1,2},{2,2,1,1,0,0},{0,0,0,0,0,1,1,1,1,2},{0,0,0,0,0,1,0,0,0,2,2,2,2,1,1},{0,0,0,0,1,1,2,2,2,2,2,1,1,1},{0,1,2,0,1,2,0,1,2,0,2,2,1,1,0,2}};这是一个二维数组,第一维长度为10代表10波僵尸第二维表示要创建的僵尸,0表示普通僵尸,1表示红帽僵尸,2表示铁桶僵尸,当到达一定的时间就循环该波数的数组长度创建僵尸,然后波数值增加,比如这里第一波是一个普通僵尸,第二波是两个普通僵尸,虽然僵尸数据是固定的,但是对僵尸出现的位置也要进行一下随机。其次可使用波数值作为关卡进度值在底部绘制一个进度条,另外僵尸有一个整形变量列属性,取值范围在0到4总共五列,表示僵尸在哪一列,其作用是用于绘制僵尸时候按顺序绘制,由远到近的先后顺序绘制。否则你可能看到第一列的僵尸的脚在第二列僵尸的脑袋上面。僵尸的绘制我是用一个三维的图片数组,第一维表示僵尸是否被寒冰子弹击中,第二维表示僵尸的种类,第3维是僵尸的移动动画,其中被寒冰子弹击中的图片我是通过像素操作for循环图片的宽高如果该像素不是透明色填充像素为蓝色得到一个被寒冰子弹击中的僵尸图片。