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)