java tank类_做坦克游戏,学Java编程(三)——实现GoodTank类

上一讲中完成了抽象父类Tank和一个子类BadTank,这一讲来实现Tank的另一个子类GoodTank。GoodTank代表我方坦克,除了具有Tank的属性和方法外,它还要有自己特有的一些属性和功能,比如使用图片表示坦克且能够在键盘方向键的控制下移动等。1功能设计(1)定义一个Image类型数组引入坦克图片。(2)定义4个布尔变量代表键盘4个方向键的按下情况。(3)实现父类drawTank方法。(4)让Goodtank类的坦克能够在键盘方向键的控制下8方向移动。2功能分析(1)因为坦克要能够朝八个方向移动,每个方向都需要对应一张坦克图片,所以需要8张坦克图片。为了调用方便,用一个数组来存储这些图片。(2)要做到用键盘的方向键来控制坦克的移动,首先要通过方向键按下与否来判断是哪个方向,从而让坦克朝该方向前进。但是4个方向键如何表示出8个方向呢?可以定义4个布尔值的变量,代表上下左右4个方向键,哪个方向键被按下了其布尔变量就为true,否则为false。然后根据这个布尔值变量的取值就可以组合出8个方向。(3)Tank类中的drawTank方法是抽象的,这里需要具体实现它。事先准备好8张图片,然后根据坦克的方向变量dir来决定显示那张图片即可。(4)写一个方法keyPress,其内容为键盘方向键按下就把4个布尔值变量置为true;再写一个keyReleased方法,键盘方向键抬起就置为false。再写一个getDir方法,在该方法中根据4个布尔值变量的取值来断定表示方向的枚举类型变量dir的取值,从而得到当前坦克的移动方向。在GoodTank类中,定义一个图片数组,存储8张坦克图片,定义4个布尔值,代表键盘的4个方向键是否被按下;然后在drawTank方法中根据dir值来绘制相应的坦克图片;最后写keyPress和keyReleased方法,在这两个方法中根据键盘4个方向键的按下与否来设置4个布尔变量的值,从而在getDir方法中根据这4个布尔变量的值来确定坦克最后的走向,在通过调用Tank的move方法来移动坦克,让坦克向该方向前进。3具体实现publicclassGoodTankextendsTank{//代表几盘的四个方向键按下与否privatebooleanbU=false,bD=false,bR=false,bL=false;privateImage[]imgs={//坦克图片数组newImageIcon("imgs/tankU.gif").getImage(),newImageIcon("imgs/tankD.gif").getImage(),newImageIcon("imgs/tankL.gif").getImage(),newImageIcon("imgs/tankR.gif").getImage(),newImageIcon("imgs/tankLU.gif").getImage(),newImageIcon("imgs/tankRU.gif").getImage(),newImageIcon("imgs/tankLD.gif").getImage(),newImageIcon("imgs/tankRD.gif").getImage(),};publicGoodTank(intx,inty){super(x,y);//调用父类的构造方法来构成自己//的构造方法}publicvoiddrawTank(Graphicsg){switch(dir){caseU:g.drawImage(imgs[0],x,y,null);break;ca

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值