您的位置: 网站首页> python面向对象> 当前文章
对象之间的交互组合实战
老董-我爱我家房产SEO2020-05-14168围观,119赞
面向对象开篇就说要用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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
对象之间的交互组合实战文章写得不错,值得赞赏


