面向对象练习

今日作业

1.什么是对象?什么是类?

对象:特征与技能的结合体

类: 一系列对象相似的特征与技能的集合体·

2.绑定方法的有什么特点

1.类名称空间中定义的数据类型和函数属性都是共享给所有对象用的

2.对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性

3.类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的

4.绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入

3.基于面向对象设计一个对战游戏

# 人狼大战!!
# coding=utf-8

class People:
    camp = 'Humanity'
    def __init__(self,name,aggr=25,life_value=150,money=500,armor = 10):
        self.name = name
        self.aggr = aggr
        self.life_value = life_value
        self.money = money
        self.armor = armor

    def attack(self,Wolf):
        damage_value = self.aggr - Wolf.armor
        Wolf.life_value -= damage_value

class Wolf:
    camp = 'Orc'
    def __init__(self,name,wolf_type,aggr = 60,life_value = 300,armor = 50):
        self.name = name
        self.wolf_type = wolf_type
        self.aggr = aggr
        self.life_value = life_value
        self.armor = armor

    def attack(self,People):
        damage_value = self.aggr -People.armor
        People.life_value -= damage_value


class AX:
    def __init__(self,price = 450,aggr = 50,life_value = 100):
        self.price = price
        self.aggr = aggr
        self.life_value = life_value
    def update(self,obj):
        obj.money -= self.price
        obj.aggr +=self.aggr
        obj.life_value += self.life_value

    def Cutting(selfself,obj):
        obj.life_value -= 75

p1 = People('小风')
w1 = Wolf('小白',"white")
a1 = AX()

if p1.money > a1.price:
    p1.a1 = a1
    a1.update(p1)
print(p1.aggr,p1.money,p1.life_value)

while  True:

    w1.attack(p1)
    print(f'{w1.name}咬{p1.name}一下,掉了{w1.aggr}血,还有{p1.life_value - w1.aggr}')

    p1.attack(w1)
    print(f'{p1.name}普攻{w1.name}一下,掉了{p1.aggr}血,还有{w1.life_value - p1.aggr}')

    if (p1.life_value - w1.aggr <= 0) and (w1.life_value - p1.a1.aggr >0):
        print(f'{p1.name}人类挂在了{w1.name}狼手上')
        break

    w1.attack(p1)
    print(f'{w1.name}咬{p1.name}一下,掉了{w1.aggr}血,还有{p1.life_value - w1.aggr}')

    p1.a1.Cutting(w1)
    print(f'{p1.name}用斧头砍了{w1.name}一下,掉了{p1.a1.aggr}血,还有{w1.life_value - p1.a1.aggr}')
    if (w1.life_value - p1.a1.aggr <= 0) and (p1.a1.life_value - w1.aggr > 0):
        print(f'{w1.name}狼倒在了{p1.name}人手上')
        break


原文地址:https://www.cnblogs.com/shaozheng/p/11643937.html