一个动物园有十个房间,里面有两种动物,老虎、羊。老虎的体重是200斤,羊体重100斤。游戏开始之前,在10个房间里面,随机
放入老虎和羊。游戏这的目标是要把羊和老虎喂的越重越好。
游戏开始后,系统随机给出房间号。游戏者开始必须弄清楚,每个房间是老虎还是羊,方法是敲房间门,里面的动物都会叫,老虎叫声‘wow!!!’,
羊叫声是‘mie’。动物每叫一次体重减5斤。喂老虎应该输入单词meet,喂羊应该输入单词grass。喂对了体重加10斤。喂错了。体重减少10斤
游戏者需要强记每个房间的动物是什么,以便不需要敲门就可以得知里面的动物是什么,从而该喂什么。这样不断循环。游戏2分钟结束后。看看你喂的动物总体重多少
1、面向对象版:
#定义 类 使用 class 关键字
class Tiger():
#静态属性
classname = '老虎'
#实例属性
def __init__(self,weight= 200):
#self代表实例对象本身
self.weight = weight
#老虎叫声,实例方法
def jiao(self):
print("wow!!!")
self.weight -= 5
#喂食
def eat(self,tt):
if tt == 'meet':
self.weight += 10
elif tt == 'grass':
self.weight -= 10
class Sheep():
#静态属性
classname = '喜羊羊'
#实例属性
def __init__(self,weight= 100):
#self代表实例对象本身
self.weight = weight
#老虎叫声,实例方法
def jiao(self):
print("mie!!!")
self.weight -= 5
#喂食
def eat(self,tt):
if tt == 'meet':
self.weight -= 10
elif tt == 'grass':
self.weight += 10
class Room():
def __init__(self,room_num,animal):
self.room_num = room_num
self.animal = animal
from random import randint
rooms = []
#实例化10个房间对象
for one in range(0,10):
if randint(0,1) == 1:
ani = Tiger()
else:
ani = Sheep()
#对象的组合
aaa = Room(one,ani)
#实例化的10个房间,添加到列表中
rooms.append(aaa)
import time
ss = time.time()
while True:
sss = time.time()
if sss - ss > 20:
print("游戏结束")
for idx,room in enumerate(rooms):
print("房间:%s" %(idx+1),room.animal.classname,room.animal.weight)
#print(f"{idx+ 1}的动物为{room.animal.classname}体重是{room.animal.wieht}")
break
#随机出现1到10作为列表下标
room_no = randint(1, 10)
room = rooms[room_no-1]
mm = input("我们来到了房间:%s,要敲门吗?[y/n]" %room_no)
if mm == 'y':
room.animal.jiao()
yy = input("请喂食:")
room.animal.eat(yy)
2、多线程版 os模块:
from random import randint
from threading import Thread
import time
import os
#羊、老虎、房间
class Tiger():
#静态属性
classname = '老虎'
#实例属性是定义在init方法里面的
def __init__(self,w=200):
self.w = w
#动物叫了体重会减少,如果方法不操作实例属性一般定义为静态方法
def ror(self):
print("********wow wow!!!!********")
self.w -= 5
#动物喂食,喂对了体重会加,
def feed(self,t):
if t == 'meet':
print("恭喜你,喂对了")
self.w += 10
else:
print("很遗憾、喂错了")
self.w -= 10
class Sheep():
#静态属性
classname = '羊'
#实例属性是定义在init方法里面的
def __init__(self,w=100):
self.w = w
#动物叫了体重会减少,如果方法不操作实例属性一般定义为静态方法
def ror(self):
print("********mie mie!!!!********")
self.w -= 5
#动物喂食,喂对了体重会加,
def feed(self,t):
if t == 'grass':
print("恭喜你,喂对了")
self.w += 10
else:
print("很遗憾、喂错了")
self.w -= 10
class Room():
#对象组合,房间里有房间号和动物
def __init__(self,id,animal):
self.id = id
self.animal = animal
#创建一个列表来存放10个房间对象
room_obj_list = []
for one in range(1,11):
#取出来one用来做房间号
#随机产生羊或者老虎
if randint(0,1) == 1:
an = Tiger()
else:
an = Sheep()
#对象组合
room = Room(one,an)
room_obj_list.append(room)
#用子线程来控制时间,主线程进行游戏循环
#定义一个函数,用来作为子线程入口函数
def count_third():
#获取游戏开始时间
starttime = time.time()
while True:
#获取当前时间
cur_time = time.time()
if cur_time - starttime > 20:
for one in room_obj_list:
print(f'{one.id}号房间动物为{one.animal.classname},体重为{one.animal.w}')
break
os._exit(0)
#创建并启动线程
t1 = Thread(target=count_third)
t1.start()
while True:
#随机出现房间,从定义的房间列表取值
room_obj = room_obj_list[randint(0,9)]
#输出当前是哪个房间,然后进行选择操作
a = input(f'当前所在{room_obj.id}号房间,请进行选择是否需要敲门y:')
if a == 'y':
#动物吼叫体重减少
room_obj.animal.ror()
b = input("请喂食:")
room_obj.animal.feed(b)
3、多线程版 手动添加停止
from random import randint
from threading import Thread
import time
import os
#羊、老虎、房间
class Tiger():
#静态属性
classname = '老虎'
#实例属性是定义在init方法里面的
def __init__(self,w=200):
self.w = w
#动物叫了体重会减少,如果方法不操作实例属性一般定义为静态方法
def ror(self):
print("********wow wow!!!!********")
self.w -= 5
#动物喂食,喂对了体重会加,
def feed(self,t):
if t == 'meet':
print("恭喜你,喂对了")
self.w += 10
else:
print("很遗憾、喂错了")
self.w -= 10
class Sheep():
#静态属性
classname = '羊'
#实例属性是定义在init方法里面的
def __init__(self,w=100):
self.w = w
#动物叫了体重会减少,如果方法不操作实例属性一般定义为静态方法
def ror(self):
print("********mie mie!!!!********")
self.w -= 5
#动物喂食,喂对了体重会加,
def feed(self,t):
if t == 'grass':
print("恭喜你,喂对了")
self.w += 10
else:
print("很遗憾、喂错了")
self.w -= 10
class Room():
#对象组合,房间里有房间号和动物
def __init__(self,id,animal):
self.id = id
self.animal = animal
#创建一个列表来存放10个房间对象
room_obj_list = []
for one in range(1,11):
#取出来one用来做房间号
#随机产生羊或者老虎
if randint(0,1) == 1:
an = Tiger()
else:
an = Sheep()
#对象组合
room = Room(one,an)
room_obj_list.append(room)
hello = 0
#用子线程来控制时间,主线程进行游戏循环
#定义一个函数,用来作为子线程入口函数
def count_third():
#获取游戏开始时间
starttime = time.time()
while True:
#获取当前时间
cur_time = time.time()
if cur_time - starttime > 20:
for one in room_obj_list:
print(f'{one.id}号房间动物为{one.animal.classname},体重为{one.animal.w}')
break
global hello
hello = 1
#创建并启动线程
t1 = Thread(target=count_third)
t1.start()
while True:
if hello == 1:
break
#随机出现房间,从定义的房间列表取值
room_obj = room_obj_list[randint(0,9)]
#输出当前是哪个房间,然后进行选择操作
a = input(f'当前所在{room_obj.id}号房间,请进行选择是否需要敲门y:')
if a == 'y':
#动物吼叫体重减少
room_obj.animal.ror()
b = input("请喂食:")
room_obj.animal.feed(b)