散文想法简友广场

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

2023-06-28  本文已影响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}')
上一篇下一篇

猜你喜欢

热点阅读