• 第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())

     

  • 相关阅读:
    Maintaining Online Redo Log Files
    redo
    SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
    undo
    HDU_1207_汉诺塔2
    POJ_1611_The Suspect
    POJ_1847_Tram
    POJ_2255_Tree Recovery
    Queries for Number of Palindromes(求任意子列的回文数)
    POJ_1163_The triangle
  • 原文地址:https://www.cnblogs.com/nick1998/p/11938916.html
Copyright © 2020-2023  润新知