Python 作业 9
要求大家用面向对象的设计编写一个python程序,实现一个文字游戏系统。
动物园里面有10个房间,房间号从1 到 10。
每个房间里面可能是体重200斤的老虎或者体重100斤的羊。
游戏开始后,系统随机在10个房间中放入老虎或者羊。
然后随机给出房间号,要求游戏者选择敲门还是喂食。
如果选择喂食:
喂老虎应该输入单词 meat,喂羊应该输入单词 grass
喂对了,体重加10斤。 喂错了,体重减少10斤
如果选择敲门:
敲房间的门,里面的动物会叫,老虎叫会显示 ‘Wow !!’,羊叫会显示 ‘mie~~’。 动物每叫一次体重减5斤。
游戏者强记每个房间的动物是什么,以便不需要敲门就可以喂正确的食物。
游戏3分钟结束后,显示每个房间的动物和它们的体重。
实现过程中,有什么问题,请通过课堂上讲解的调试方法,尽量自己发现错误原因。
分析
1、定义一个类
1--class 类名(首字母要大写--规范)
2--class Tiger
2、实例化
1- t1 = Tiger() 就是老虎类的实例化
3、类里面的变量---属性(比如,人的身高,体重)
4、类里面的函数---方法(吃饭,睡觉,学习)
5、静态属性==类属性
1-这个属性属于整个类--所有实例化都是一样的
6、实例化属性
1-这个属性--属于某个实例的---每个实例都会不一样
2-def __init__(self):初始化方法==构造方法
3-在创建实例的时候,就创建了该实例的一些实例属性 def __init__(self, weight)
1-self --- t1, t2 --实例对象本身
4- self -- 它只是代言词---不是关键字 可以用其它字符代替,比如,随便一个词,OK之类的,但是这是规范,不要去替代。
7、方法:1-函数 2-行为
1-实例方法:每个具体实例相关的方法
1-初始化方法就是一个实例方法
2-静态方法:共有的方法,与每个具体实例无关---类方法
1-@staticmethod 修饰---只能修饰紧跟的一个
8、对象的组合
9、继承
1-class SouTiger(Tiger): 华南虎---继承父类Tiger
2-可以多继承,但是一般用不到。可能出现未知的Bug
10、方法的重写
1-super(SouTiger, s1).roar ---调用父类的方法
super(子类名,子类实例名).方法() --- 调用父类的方法
1 class Tiger: #老虎类
2 def __init__(self, weight = 200):
3 self.weight = weight
4
5 # 实例方法
6 def roar(self):
7 print('wow!!')
8 self.weight -= 5
9 def feed(self, food):
10 if food == '肉':
11 self.weight += 10
12 print('喂食正确!')
13 else:
14 self.weight -= 10
15 print('喂食错误!')
16
17
18 class Sheep:
19 def __init(self, weight = 100):
20 self.weight = weight
21
22 #实例方法
23 def roar(self):
24 print(mie!')
25 self.weight -= 5
26
27 def feed(self, food):
28 if food == '草'
29 self.weight += 10
30 print('喂食正确!')
31 else:
32 self.weight -= 10
33 print('喂食错误!')
34
35 class Room:
36 def __init__(self, num, animal):
37 self.num = num
38 self.animai = animal
39
40 # 创建10个房间的实例
41 form random import randint
42 import time
43
44 rooms = []
45 for one in range(1,11):
46 if randint(0, 1) == 1:
47 ani = Tiger()
48 else:
49 ani = Sheep()
50
51 room = Room(one, ani) #创建房间的实例
52 rooms.append(room)
53
54 startTime = time.time() # 开始计时
55 weightTotal = 0
56
57 while True:
58 currectTime = time.time() #当前时间
59 if (currectTine - startTime ) > 60:
60 print('游戏时间到!')
61 for roomX in rooms:
62 print('当前房间的编号:{}, 该房间动物的体重:{}'.format(roomX.num, roomX.animal.weight))
63 weightTotal += roomX.animal.weight
64 print('总体重:', weightTotal)
65 break # 游戏结束
66
67 roomNum = randint(1,10) #取随机房间
68 roomObject = rooms[roomnum -1]
69 print('当前房间号: %d' % roomNum)
70 if input('是否需要敲门:n/y') == 'y':
71 roomObject.animal.roar()
72
73 food = input('请喂食:(肉/草)'?)
74 roomObject.animal.feed(food.strip())