Python 面向对象 老虎和羊问题详解

一个动物园有十个房间,里面有两种动物,老虎、羊。老虎的体重是200斤,羊体重100斤。游戏开始之前,在10个房间里面,随机

放入老虎和羊。游戏这的目标是要把羊和老虎喂的越重越好。

游戏开始后,系统随机给出房间号。游戏者开始必须弄清楚,每个房间是老虎还是羊,方法是敲房间门,里面的动物都会叫,老虎叫声‘wow!!!’,

羊叫声是‘mie’。动物每叫一次体重减5斤。喂老虎应该输入单词meet,喂羊应该输入单词grass。喂对了体重加10斤。喂错了。体重减少10斤

游戏者需要强记每个房间的动物是什么,以便不需要敲门就可以得知里面的动物是什么,从而该喂什么。这样不断循环。游戏2分钟结束后。看看你喂的动物总体重多少

class Tiger:#定义一个老虎类
    #静态方法 这个类的所有实例化都是一样的
    classname = '东北虎'
    def __init__(self):#初始化方法,有个参数有初始固定值
        self.weight = 200
    def eat(self,food): #定义一个方法
        if food == 'meat':
            self.weight += 10
        elif food == 'grass':
            self.weight -= 10
        else:
            pass
    def jiao(self): #定义一个属性
            print("Wow~~~")
            self.weight -= 5

class Sheep:
    classname = '喜羊羊'
    def __init__(self):
        self.weight = 100
    def eat(self,food):
        if food == 'meat':
            self.weight += 10
        elif food == 'grass':
            self.weight -= 10
        else:
            pass
    def jiao(self):
            print("mie~~~")
            self.weight -= 5

class Room: #定义一个房间类,它有房号和动物两种参数
    def __init__(self,num,animal):
        self.num = num
        self.animal = animal



from random import randint
room_list = [] #建一个列表用来存取每次循环获取到的房间号和动物组合
for i in range(1,11):
    if randint(1,2) == 1: #随机判断
        animal = Tiger() #实例化一个老虎
    else :
        animal = Sheep()#实例化一个羊
    rm = Room(i,animal) #实例化一个房间,传入房间类需要的参数
    room_list.append(rm) #把循环每次得到的房间号和动物组合存到列表,因为rm的值每次循环后会清掉

import time
startTime = time.time()#获取当前时间并存入startTime
while time.time() - startTime < 15:#15秒为测试时间,验证程序是否编写正确

    room_num = randint(0在这里插入代码片,9)#随机生成是个房间
    fangjian = room_list[room_num]#随机使用一个房间

    a = input(f'当前访问的是{room_num + 1}号房间,请问是否需要敲门(y/n)')
    if a == 'y':
        fangjian.animal.jiao() #面向对象 房间类的实例化调用动物的属性
    # print(f'{room_num + 1}号房间的动物是{fangjian.animal.classname},当前体重{fangjian.animal.weight}')
    else:
        pass
    b = input(f'请问需要喂食吗?(y/n)')
    if b == 'y':
        c = input(f'请选择需要喂的食物种类:(meat/grass)')
        if c == 'meat' or c == 'grass':
            fangjian.animal.eat(c)
        else:
            print("您输入的食物不对!")
    else:
        pass
else:
    for i in range(10):
        print(f'{i + 1}号房间的动物是{room_list[i].animal.classname},当前体重{room_list[i].animal.weight}')
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值