美文网首页散文想法简友广场
Python刷题010: 文字游戏系统(面向对象)

Python刷题010: 文字游戏系统(面向对象)

作者: 小小一颗卤蛋 | 来源:发表于2023-06-28 17:06 被阅读0次

    题目:求大家用面向对象的设计编写一个python程序,实现一个文字游戏系统。
    动物园里面有10个房间,房间号从1 到 10。每个房间里面可能是体重200斤的老虎或者体重100斤的羊。
    游戏开始后,系统随机在10个房间中放入老虎或者羊。然后随机给出房间号,要求游戏者选择敲门还是喂食。
    如果选择喂食:喂老虎应该输入单词 meat,喂羊应该输入单词 grass,喂对了,体重加10斤。 喂错了,体重减少10斤
    如果选择敲门:
    敲房间的门,里面的动物会叫,老虎叫会显示 ‘Wow !!’,羊叫会显示 ‘mie~~’。 动物每叫一次体重减5斤。
    游戏者强记每个房间的动物是什么,以便不需要敲门就可以喂正确的食物。 游戏3分钟结束后,显示每个房间的动物和它们的体重。

    解题思路
    1.建立一个老虎的类,老虎的体重是200,有叫的方法,有吃的方法
    2.建立一个羊的类,羊的体重是100,有叫的方法,有吃的方法
    3.建立一个房间的类
    4.将老虎或羊的实例放入房间的实例
    5.写游戏相关的代码
    ①调用叫的方法,如果是老虎就调用老虎的叫的方法,如果是羊就调用羊的叫的方法
    ②调用吃的方法,如果是老虎就调用老虎的吃的方法,如果是羊就调用羊的吃的方法
    ③游戏时间的控制
    ④游戏结束时显示每个房间的动物以及体重

     class Tiger:
         def __init__(self):
             self.name='老虎'
             self.weight=200
         def eat(self,food):
             if food=='meat':
                 print('喂食正确')
                 self.weight+=10
             elif food=='grass':
                 print('喂食错误')
                 self.weight-=10
         def roar(self):
             print('Wow!!')
             self.weight-=5
     
     class Sheep:
         def __init__(self):
             self.name='羊'
             self.weight=100
         def eat(self,food):
             if food=='grass':
                 print('喂食正确')
                 self.weight+=10
             elif food=='meat':
                 print('喂食错误')
                 self.weight-=10
         def roar(self):
             print('mie~~')
             self.weight-=5
     
     class Room:
         def __init__(self,animal):
             self.animal=animal
     
     roomlist=[]  #定义一个列表,用来存放房间的实例
     
     from random import randint
     for i in range(10):
         if randint(1,2)==1:  #在1和2之间随机取一个整数
             animal=Tiger()  #实例化一个老虎
         else:
             animal=Sheep()  #实例化一个羊
         room=Room(animal)  #实例化一个房间
         roomlist.append(room)  #把房间的实例放入列表
     
     import time
     start_time=time.time()  #记录游戏开始的时间
     while time.time()-start_time<180:  #如果游戏时间未超过3分钟,则循环运行游戏
         room_number=randint(0,9)  #随机选择一个房间
         random_room=roomlist[room_number]  #选取该房间
         load1=input(f'当前访问的是{room_number+1}房间,请问是敲门还是喂食?1表示敲门,2表示喂食')
         if load1=='1':
             random_room.animal.roar()  #调用房间中的动物的叫的方法
         elif load1=='2':
             food=input('请问喂哪种食物 meat/grass')
             if food in ('meat','grass'):
                 random_room.animal.eat(food)  #调用房间中的动物的吃的方法
             else:
                 print('您输入的食物不正确')
         else:
             print('您的操作不正确,请输入1或2')
     else:
         print('游戏时间到')
         for i in range(len(roomlist)):
             print(f'{i+1}号房间的动物是{roomlist[i].animal.name},体重是{roomlist[i].animal.weight}')

    相关文章

      网友评论

        本文标题:Python刷题010: 文字游戏系统(面向对象)

        本文链接:https://www.haomeiwen.com/subject/rfynydtx.html