您的位置: 网站首页> python面向对象> 当前文章
对象之间的交互组合实战
老董-我爱我家房产SEO2020-05-14167围观,104赞
面向对象开篇就说要用1个战斗来学习面向对象,但是这几节课一直都是在学习概念,最多也就定义了个人类,这战争怎么打?这节课就定义人类和变异的狼类开战。
要实现较为复杂战斗就得学会1个概念:类的组合。
1个类某个属性的值是另外1个类的对象,这种情况就是类的组合,有了这种组合关系,对象之间才能交互起来,保卫战才可以打响。
不过战争刚开始比较简单,人类只能会自带技能踢,和狼展开较量。类和类的关系也比较简单,如下:
# -*- coding:utf-8 -*- import random #人类 class Person: def __init__(self,my_name,my_blood): self.name = my_name # 实例变量 self.blood = my_blood # 人的技能:踢,wolf是1个狼类对象 def kick(self,wolf): wolf.blood -= 20 # 被踢后血值-10 print(f'{self.name}踢了{wolf.name},{wolf.name}血值降为{wolf.blood}') if wolf.blood < 1: print(f'{wolf.name}被杀') # 狼类 class Wolf: def __init__(self,name,blood): self.name = name self.blood = blood def bite(self,person): person.blood -= 30 print(f'{self.name}咬了{person.name},{person.name}血值降为{person.blood}') if person.blood < 1: print(f'{person.name}牺牲') if __name__ =="__main__": p1 = Person('laodong1',100) w1 = Wolf('lang1',100) while True: if p1.blood <0 or w1.blood < 0: print('game over') break num = random.randint(1,10) if num > 5: p1.kick(w1) continue w1.bite(p1)
laodong1踢了lang1,lang1血值降为80 laodong1踢了lang1,lang1血值降为60 lang1咬了laodong1,laodong1血值降为70 lang1咬了laodong1,laodong1血值降为40 laodong1踢了lang1,lang1血值降为40 lang1咬了laodong1,laodong1血值降为10 lang1咬了laodong1,laodong1血值降为-20 laodong1牺牲 game over
在战争中学习战争,人类在斗争中学习了各种武学和兵器,如无影脚、六脉神剑、火焰刀、一阳指等,每个人在斗争中可能使用以上各种手段,这样应该如何设计游戏呢?我们需要1个武功类、1个人类、1个狼类。给人类1个技能属性,属性值是武功类的对象,这样类和类就之间交互组合了。
# -*- coding:utf-8 -*- import random # 武功类 class GongFu: def __init__(self): pass def say(self,wolf,skill): print(f'{wolf.name}被{skill}所伤,{wolf.name}血值降为{wolf.blood}') # 无影脚 def wuying_jiao(self,wolf): wolf.blood -= 20 self.say(wolf,'无影脚') # 火焰刀 def huoyan_dao(self,wolf): wolf.blood -= 25 self.say(wolf,'火焰刀') #人类 class Person: def __init__(self,my_name): self.name = my_name # 实例变量 self.blood = 100 # 默认都是100 self.skill = GongFu() # 武功类的对象 # 狼类 class Wolf: def __init__(self,name): self.name = name self.blood = 120 def bite(self, person): person.blood -= 30 print(f'{self.name}咬了{person.name},{person.name}血值降为{person.blood}') if __name__ =="__main__": p1 = Person('laodong1') wof1 = Wolf('lang1') while True: if p1.blood <0 or wof1.blood < 0: print('game over....') break num = random.randint(1,10) if num > 7: p1.skill.huoyan_dao(wof1) continue elif num > 4: p1.skill.wuying_jiao(wof1) continue wof1.bite(p1)
lang1咬了laodong1,laodong1血值降为70 lang1咬了laodong1,laodong1血值降为40 lang1被无影脚所伤,lang1血值降为100 lang1被无影脚所伤,lang1血值降为80 lang1咬了laodong1,laodong1血值降为10 lang1咬了laodong1,laodong1血值降为-20 game over....
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
对象之间的交互组合实战文章写得不错,值得赞赏