第19课 习题讲解

 

Python 作业 9

要求大家用面向对象的设计编写一个python程序,实现一个文字游戏系统。

动物园里面有10个房间,房间号从110。

每个房间里面可能是体重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())

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-07-01 13:36  风吹麦浪听涛声  阅读(329)  评论(0编辑  收藏  举报