python3使用面向对象设计游戏
1、首先,寻找要设计的对象
老虎、羊、房间
2、接下来,确定对象的定义
对象的定义:定义对象在这个系统里面的的属性和行为
比如老虎这类对象,在这个系统里面的共有属性,行为属性
3、实例 是类的具体化存在
a、老虎这个类,描述了:
1、在这个系统里面共有的属性:体重、名称
2、行为有叫、吃食物
b、每个具体的老虎,是老虎这个类的 实例
c、类的实例的关系:实例是类的具体化
import random, time, threading, os
# 导入随机数,倒计时,多线程,系统退出方法
# 对象的组合
class Tiger():
# 静态属性:静态属性一般就直接定义在类里面
classname = '老虎'
# 初始化方法init是类的时候就会自动执行,实例属性一般定义在初始化方法中,init方法本身就是实例方法
def __init__(self, w=200): # self 指的就是实例化对象本身
# 定义了老虎的实例属性(体重)
self.weight = w
# 老虎的叫声
def roar(self):
print("wow wow wow !!!")
# 老虎叫了,体重就要减(实例方法中操作实例属性)
self.weight -= 5
# 喂食
def feed(self, food):
# 喂了肉加10斤,草 减10斤
if food == 'meet':
self.weight += 10
print("喂对了")
else:
self.weight -= 10
class Sheep:
classname = '羊'
# 实例属性定义在初始化方法init里面
def __init__(self, w=100):
self.weight = w
# 叫声
def roar(self):
print("mie mie mie !!!")
# 动物叫了体重会减
self.weight -= 5
# 喂食
def feed(self, food):
# 判断实物的类型。喂多了会加10,喂错了减10
if food == 'grass':
self.weight += 10
print("喂对了")
else:
self.weight -= 10
# 定义房间
class Room:
# 定义静态属性
RoomName = '房间'
# 房间有房间号和动物,实例属性要定义在初始化方法init里面
def __init__(self, num1, animal):
# 房间号
self.num = num1
# 定义房间中动物
self.animal = animal
# 保存房间对象
room_list = []
# 实例化10次
for one in range(1, 11):
# 随机产生动物
rint = random.randint(1, 2)
if rint == 1:
animal = Tiger()
else:
animal = Sheep()
# 实例化出来房间对象
rm = Room(one, animal)
room_list.append(rm)
# 使用多线程,一个线程控制时间,一个线程控制游戏执行
def time_out():
start_time = time.time() # 获取游戏开始时间
while True:
# 每次循环都获取一次时间,和游戏开始时间相减,做判断
end_time = time.time()
if end_time - start_time >= 10:
# 游戏终止的时候,需要查看房间放的什么动物,动物的体重是多少
for roomobj in room_list:
# 循环遍历房间对象,输入房间号 动物 体重
print(f"{roomobj.num}号房间中动物为:{roomobj.animal.classname},体重:{roomobj.animal.weight}")
break
# 下面的代码是循环执行结束才会执行
os._exit(1)
# 生成线程
t1 = threading.Thread(target=time_out)
# 启动线程
t1.start()
# 进行2分钟倒计时,两分钟内是一个死循环,如果时间到了就终止循环
while True:
# 如果游戏时间没有到,就弹出房间,让人选择喂食还是敲门
roomid = random.randint(0, 9) # 随机生成数字,作为下标取房间对象列表中内容
# 列表下标取值
roomobj = room_list[roomid]
# 输入房间号
print(f"当前房间为:{roomobj.num}")
# 选择是否需要敲门
ch = input("请输入要操作的值:敲门y/n")
if ch == 'y':
# 敲门的时候动物会叫,并且体重会减
roomobj.animal.roar()
# 输入要喂食的事物
food = input("请输入食物:meet grass:")
# 进行喂食
roomobj.animal.feed(food)
本文通过面向对象的方法,使用Python实现了一个简单的游戏系统。游戏包括老虎和羊两种动物,它们有不同的属性和行为。通过创建房间来容纳这些动物,并利用多线程控制游戏流程,实现了动物的叫声及喂食等功能。
1975

被折叠的 条评论
为什么被折叠?



