java tank类,做坦克游戏,学Java编程(二)——创建坦克类并实现BadTank

上一讲中只是用一个圆形来代表的坦克,用这样的坦克去实现一些复杂的功能将会很困难,按照面向对象的编程思想,应该把坦克设计成一个类,和坦克相关的描述及操作都由这个类来负责。一个类应该包括变量定义和方法定义两大部分:变量描述的是该类所具有的属性,方法描述的是该类所具有的功能。对于坦克类来说,它的属性可以有颜色、大小、位置、移动速度等,方法应该有绘制坦克、移动坦克、发射炮弹等。根据游戏的实际需要,坦克应该有敌我之分。尽管都是坦克,大部分属性和功能都一样,但细化起来敌我坦克还是有所区别的:首先说外观肯定要不同,其次一些功能也会有不一致的地方,比如,敌方坦克应该是自动移动,而我方坦克应该在键盘控制下移动。也就是说,坦克类生成的对象有敌我两种坦克,这两种坦克大部分属性和功能一致,但也有一部分不一致。如何来区分这两种坦克呢?根据面向对象的思想,这样来处理:先写一个抽象类Tank,然后写两个类BadTank和Good-Tank,让它们继承Tank类。Tank中定义敌我坦克共有的属性和方法,BadTank和GoodTank中写自己特有的属性和方法。本讲先讨论抽象类Tank和敌方坦克BadTank,我方坦克GoodTank的建立在下一讲介绍。为了叙述清晰,把Tank和BadTank的建立分开讲解,先把Tank类讲清楚,再讲Bad-Tank类的建立。1Tank类的建立1.1功能设计(1)给Tank类定义坦克位置、坦克大小,移动速度等属性。(2)坦克要能朝8个方向(上、下、左、右以及左上、左下、右上、右下8个方向)移动,因此需要定义一个枚举类型Direction及其变量dir来代表8个方向。(3)添加绘制坦克方法drawTank,该方法为抽象方法。(4)添加一个move方法,在该方法中根据dir提供的方向改为x,y位置。1.2功能分析(1)关于坦克的属性、坦克的大小、移动速度是较为固定的,用常量来表示比较合适;位置用x、y坐标来表示。(2)定义一个枚举类型,该类型应该包括9个分量,用来表示坦克的8个方向以及坦克停止时的状态。(3)关于绘制坦克,由于敌我坦克的外观是不同的,所以绘制坦克的方法在这里没办法具体实现,因此把该方法定义成一个抽象方法,其具体实现由它的子类GoodTank和BadTank分别去完成。(4)移动坦克方法可以是敌我坦克共有的,这里可以把移动坦克方法完成:只要在move方法中根据坦克方向改变x,y的坐标值即可。这样,当游戏画面重画的时候就会产生坦克移动的效果。经过上述分析,可以这样来做:在Tank类中,首先定义好坦克速度、坦克高度、宽度等常量以及坦克的位置坐标变量x,y,枚举类型及其变量等;然后写一个抽象方法drawTank;最后写一个move方法,让坦克的位置x,y根据枚举变量dir的值发生改变。1.3具体实现publicabstractclassTank{//抽象类,只实现坦克共//有的属性和方法publicstaticfinalintTANKXSPEED=5;//坦克的横向移动速度publicstaticfinalintTANKYSPEED=5;//坦克的纵向移动速度publicstaticfinalintTANKWIDTH=60;//坦克的宽度publicstaticfinalintTANKHIGHT=60;//坦克的高度protectedintx,y;//坦克的坐标位置//定义Diretion为一个枚举类型,该类型有八个方向值protectedenumDirection{U,D,R,L,RU,RD,LU,LD,STOP};protectedDir

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值