python之面向对象(老虎与羊)
1 #定义类 2 class Tiger: 3 nickName = '老虎' #静态属性,这个属性是属于整个类的,所有的这类的实例都是一样的 4 __name = 'xx' #私有的 -- 继承中使用,子类不能使用 5 #实例属性,属于实例的,有个初始化方法,:__init__ 6 def __init__(self,inweight): #只要调用构造方法,就会自动调用 __init__ ;self:谁调用就是谁的,自动调用 7 # print("我执行了",self,inweight) 8 self.weight = inweight #对象.属性 self等于任何一个实例 9 # 实例方法-和实例有关,看这个方法有没有涉及到实例属性:例如老虎叫 ,减5斤,不可能一只老虎叫,所有老虎减5斤 10 def roar(self): 11 print('我是老虎,wow,体重减少5斤') 12 self.weight -=5 13 # 静态方法:大家都一样 14 def feed(self,food): 15 if food == '肉': 16 print('喂食正确,体重加10斤') 17 self.weight += 10 18 else: 19 print('喂食错误,体重减10斤') 20 self.weight -= 10 21 22 class Sheep: 23 nickName = '羊' # 静态属性,这个属性是属于整个类的,所有的这类的实例都是一样的 24 __name = 'xx' # 私有的 -- 继承中使用,子类不能使用 25 26 # 实例属性,属于实例的,有个初始化方法,:__init__ 27 def __init__(self, inweight): # 只要调用构造方法,就会自动调用 __init__ ;self:谁调用就是谁的,自动调用 28 # print("我执行了",self,inweight) 29 self.weight = inweight # 对象.属性 self等于任何一个实例 30 # 实例方法-和实例有关,看这个方法有没有涉及到实例属性:例如老虎叫 ,减5斤,不可能一只老虎叫,所有老虎减5斤 31 #叫方法 32 def roar(self): 33 print('我是羊,mie,体重减少5斤') 34 self.weight -= 5 35 # 静态方法:大家都一样 36 #喂食方法 37 def feed(self, food): 38 if food == '草': 39 print('喂食正确,体重加10斤') 40 self.weight += 10 41 else: 42 print('喂食错误,体重减10斤') 43 self.weight -= 10 44 45 #对象的组合 :对象里面有对象 :房间 里面有老虎或者羊 46 class Room: 47 #属性:编号 48 def __init__(self,inNum,inAnimal): 49 self.Num = inNum 50 self.animal = inAnimal 51 52 53 from random import randint 54 # print(randint(0,2)) #0,1,2 左含右也含 55 #老虎和羊取得概率都是 50% ,所以设置0,1就行 56 57 #————————房间初始化—————————————————— 58 #定义个变量存房间 59 roomList = [] 60 for one in range(1,11): 61 if randint(0, 1) == 1: 62 ani = Tiger(200) 63 else: 64 ani = Sheep(100) 65 room = Room(one,ani) 66 roomList.append(room) 67 #——————————————————————————————————— 68 import time 69 #开始时间: = time.time() #单位是s 70 #当前时间:=time.time() 71 #开始游戏 72 startTime = time.time() 73 while True: 74 curTime = time.time() 75 76 if curTime-startTime > 60: 77 #结果输出 78 for one in roomList: # one是房间实例 79 print(f'房间编号是{one.Num},动物是{one.animal.nickName},体重是{one.animal.weight}斤') 80 break 81 #随机给出一个房间号 1-10 82 roomNum = randint(1,10) #int 数字 83 #以随机的房间号取对应的房间实例 有10个,按下标算是 0-9 ,所以要-1 84 roomObject = roomList[roomNum-1] 85 #去到房间实例,需要和用户交互 1.敲门 86 answer = input(f'当前编号是{roomNum}号房间,是否需要敲门(y/n)?:') 87 #如果敲门 88 if answer == 'y': 89 #这个房间.动物.叫 90 roomObject.animal.roar() 91 #喂食 92 food = input(f'请投喂食物肉或者草:') 93 roomObject.animal.feed(food)