项目代码
https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter18/src/com/yinhai/tankgame
目录
在坦克大战游戏(1.1版)基础上添加如下功能:当玩家按一下j键,就发射颗子弹。
个人思路,考虑创建bullet类,因为将来我们的坦克可以射出乱七八糟的子弹。定义大小,颜色,方向,速度,改变子弹位置应当在Bullet类内完成;
考虑在Hero内写shotBullet方法,该方法能调用生成新的子弹;
考虑在画板上使用监听者,当我们使用J键的时候就调用创建一个新的子弹对象,画子弹代码在MyPanel上完成;
考虑将画板变成线程,不停的repaint画板。
可能发射一堆子弹,子弹最好是做多线程避免堵塞;
1.创建一个Bullet类
1)该类应当有x,y,direct方向,speed速度,isLive是否存活,因为子弹会被发射,定义一个Shot内部类,当我们子弹被创建的时候意味着子弹要被射出去,所以构造器内创建一个shot对象;
2)在shot内部类内我们定义子弹的移动方向和路径,当direct为不同时 x y变化;
3)当我们的子弹碰到边界或者敌人时,该子弹对象应当被置为不用的空间,所以加上if判断是否消亡
4)子弹对象理应是多线程的对象,所以Shot类实现Runable接口,但其实Shot类可能有点多余了,因为一个Bullet好像也能实现该接口,也能定义乱七八糟的类型啥的,再看看,如果需要后面再进行更改
public class Bullet {
private int x;
private int y;
private int direct = 0;//子弹的方向
private double speed;
private boolean isLive = true;
Shot shot = null;
public int getX() {
return x;
}
public int getY() {