题目:求大家用面向对象的设计编写一个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}')
网友评论