python - 如何在 Python 中使用 Arcade 制作的现有窗口上制作更新计时器?
问题描述
我一直在街机中创建一个项目,屏幕上有一辆赛车,它可以避开障碍物并尝试尽快到达终点线。我已经看到在使用计时器创建新窗口时已回答的其他问题,但我似乎无法弄清楚如何在我现有的赛车屏幕上添加一个计时器,该计时器会在赛车到达终点线时更新然后停止。任何帮助将非常感激!
这是具有当前代码的主类:
""" 在屏幕上显示一个计时器。
""" from game.point import 点导入街机导入日期时间
class Timer():
"""
Main application class.
"""
def __init__(self):
self.output = str
def timer_draw(self, total_time):
""" Use this function to draw everything to the screen. """
# Calculate minutes
minutes = int(total_time) // 60
# Calculate seconds
seconds = int(total_time) % 60
# Figure out our output
self.output = f"Time: {minutes:02d}:{seconds:02d}"
分班:
def on_update(self, delta_time):
self._cue_action("update")
self.total_time += delta_time
self.timer.timer_draw(self.total_time)
分班:
def timer(self, output):
arcade.draw_text(f'Timer:', 550, 550, arcade.color.BLACK, 30)
解决方案
您可以使用time
lib 来测量比赛持续时间。这是一个小例子(绿圈是“汽车”,黄线是“终点线”):
代码:
import time
import arcade
class Game(arcade.Window):
def __init__(self):
super().__init__(400, 300)
self.time_start = time.time()
self.time_elapsed = 0
self.x = 0
def on_draw(self):
arcade.start_render()
arcade.draw_text(str(self.time_elapsed), 170, 260, arcade.color.RED, 28)
arcade.draw_line(300, 0, 300, 300, arcade.color.GOLD, 5)
arcade.draw_circle_filled(self.x, 140, 20, arcade.color.GREEN)
def update(self, delta_time):
if self.x < 320:
self.x += 2
self.time_elapsed = round(time.time()-self.time_start, 1)
Game()
arcade.run()
输出:
推荐阅读
- xlwings - 如何在不更改 %PATH% 环境变量的情况下在 xlwings Excel 中设置 python 路径?
- java - Maven:根据每个依赖项设置具有不同前缀的清单类路径
- c - “TCPL”中的多源文件链接之谜
- react-native - react android中没有显示抬头通知
- windows - 堆栈构建在 Windows 上的 GHC-8.6.4/Cabal-2.4.1.0 上挂起
- assembly - Tasm 宏默认值
- maven - 如何为plc创建复杂的nifi处理器?
- java - 如何多次检查特定事件?
- python - 使用 python3 和烧瓶从另一台服务器获取 URL
- csvhelper - CSVHelper 编写固定长度字段