代码解释:
-
IronRing
类:position
: 铁圈的位置。speed
: 铁圈的速度。roll
方法:模拟铁圈的滚动,包括速度的随机波动和位置的更新。
-
IronHook
类:action
: 铁钩的操作描述。push_ring
方法:模拟铁钩推动铁圈的操作,随机提高铁圈的速度。
-
game_simulation
函数:- 创建一个
IronRing
对象和一个IronHook
对象。 - 在20秒的游戏时间内,不断更新铁圈的位置和速度,并模拟铁钩的推动操作。
- 每秒钟输出铁圈的当前状态(位置和速度)。
- 创建一个
import random
import time
class IronRing:
def __init__(self):
self.position = 0 # 初始位置
self.speed = 0 # 初始速度
def roll(self):
# 模拟铁圈滚动,位置增加,速度有随机变化
self.speed += random.uniform(-0.5, 0.5) # 速度的随机波动
self.position += self.speed
# 保证速度不会负值
if self.speed < 0:
self.speed = 0
class IronHook:
def __init__(self):
self.action = "推动" # 铁钩的操作
def push_ring(self, iron_ring):
# 模拟铁钩推动铁圈的操作
if random.random() < 0.8: # 80%的成功概率
iron_ring.speed += random.uniform(0.5, 1.5) # 增加速度
print(f"铁钩正在{self.action}铁圈")
def game_simulation():
print("滚铁环游戏开始!")
iron_ring = IronRing()
iron_hook = IronHook()
game_time = 20 # 游戏时间(秒)
start_time = time.time()
while time.time() - start_time < game_time:
iron_ring.roll()
iron_hook.push_ring(iron_ring)
print(f"当前铁圈的位置: {iron_ring.position:.2f}, 速度: {iron_ring.speed:.2f}")
time.sleep(1) # 每秒钟更新一次状态
print(f"游戏结束!铁圈最终的位置: {iron_ring.position:.2f}, 速度: {iron_ring.speed:.2f}")
if __name__ == "__main__":
game_simulation()