c课工场 python开发基础,由于做的时候疯狂踩坑就分享一下课本的作业。

1.《绝地求生》是现在非常热门的射击类游戏。根据面向对象的编程思想,模拟实现玩家战斗的场景:

   

   在这个场景中,有玩家、敌人、武器3个对象,3个对象之间的关系如下。

       

       (1)玩家和敌人均属于人类,他们的默认血量是100.

       (2)不同武器属于不同的武器类型,杀伤力不同。

       (3)不同的武器属于不同的武器类型,杀伤力不同

       (4)玩家使用武器击中敌人后,敌人会出现掉血的行为,每次掉血量与武器的杀伤力相同

分析:定义人类(Player)

方法:姓名(name)、血量(blood)、武器(weapon)

定义武器类(Weapon)

变量:武器类型(weapon_type)、杀伤力(lethal)

方法:攻击敌人

class Player():
    def __init__(self,name,blood,weapon):
        self.name = name
        self.blood = blood
        self.weapon = weapon

    def duixiang(self):
        print('创建名为%s的玩家对象' % self.name)
#继承父类
class Weapon2(Player):
    def __init__(self,name,blood,weapon,weapon_tybe,lethal):
        self.name = name
        self.blood = blood
        self.weapon = weapon
        self.weapon_tybe = weapon_tybe
        self.lethal = lethal
    def zhuangbei(self):
        #装备
        print('%s装备了杀伤力为%d点的%s' %(self.name,self.lethal,self.weapon))
    def gongji1(self,employ):
        #攻击敌人
        employ.blood -= self.lethal
        print(self.name+'使用'+self.weapon+'攻击'+employ.name+'造成'+str(self.lethal)+'点伤害')
        #当血量小于0时死亡
        if employ.blood <= 0:
            print('%s死亡' % employ.name)
        else:

            print('%s还剩下%d点血' % (employ.name,employ.blood))

p1 = Weapon2('孙悟空',100,'如意金箍棒','枪支',98)
p2 = Weapon2('白骨精',100,'白骨爪','管制刀具',45)


p1.duixiang()
p2.duixiang()
p1.zhuangbei()
p2.zhuangbei()
# 把值调过去
p2.gongji1(p1)
p1.gongji1(p2)
p1.gongji1(p2)

        下面是控制台效果。

创建名为孙悟空的玩家对象
创建名为白骨精的玩家对象
孙悟空装备了杀伤力为98点的如意金箍棒
白骨精装备了杀伤力为45点的白骨爪
白骨精使用白骨爪攻击孙悟空造成45点伤害
孙悟空还剩下55点血
孙悟空使用如意金箍棒攻击白骨精造成98点伤害
白骨精还剩下2点血
孙悟空使用如意金箍棒攻击白骨精造成98点伤害
白骨精死亡

特别注意:类又变成p2的对象

p2.gongji1(p1)
p1.gongji1(p2)
p1.gongji1(p2)

好了,我分享结束了,第一次分享,写的很一般多多包涵,如果有哪里我错误很愚蠢,很简陋的话,一定告诉我。希望我们共同进步。
谢谢观看!祝你们学业进步,身体健康,事业有成,家庭和睦。