首页 > 解决方案 > 如何在 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)

标签: pythonarcade

解决方案


您可以使用timelib 来测量比赛持续时间。这是一个小例子(绿圈是“汽车”,黄线是“终点线”):

代码:

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()

输出:

在此处输入图像描述


推荐阅读