根据我在 Arcade 的经验,你画圆圈的地方是def on_draw(self):
. 你把它放在你的MyGame
班级里,然后在里面画你想要的东西arcade.start_render()
(所以这就是你要去的地方self.ball.draw()
)。由于您想让对象Ball
出现在屏幕上,您可以创建一个触发变量来使其出现。
以下是基于您的代码的示例:
import arcade
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600
class Ball:
def __init__(self, x, y, radius, color):
self.x = x
self.y = y
self.radius = radius
self.color = color
def draw(self):
arcade.draw_circle_filled(self.x, self.y, self.radius, self.color)
class MyGame(arcade.Window):
def __init__(self, width, height, title):
super().__init__(width, height, title)
arcade.set_background_color(arcade.color.ASH_GREY)
self.ball = Ball(300, 300, 50, arcade.color.AUBURN)
self.show_ball = False
arcade.start_render()
def on_draw(self):
arcade.start_render()
# will draw the ball if self.show_ball is True
if self.show_ball:
self.ball.draw()
def on_key_press(self, key, modifiers):
if key == arcade.key.SPACE:
self.show_ball = True
def main():
window = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT, "Press spacebar")
arcade.run()
if __name__ == "__main__":
main()
在我看来,a 的使用dataclass
可能很有趣,因为球基本上只是数据,我认为它会更容易阅读(我不认为这是一个标准,这只是我在学校学习的方式)。根据我的建议,它会给你:
import arcade
from dataclasses import dataclass
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600
@dataclass
class Ball:
x: int
y: int
radius: int
color: (int, int, int)
def draw(self):
arcade.draw_circle_filled(self.x, self.y, self.radius, self.color)
class MyGame(arcade.Window):
def __init__(self, width, height, title):
super().__init__(width, height, title)
arcade.set_background_color(arcade.color.ASH_GREY)
self.ball = Ball(300, 300, 50, arcade.color.AUBURN)
self.show_ball = False
arcade.start_render()
def on_draw(self):
arcade.start_render()
# will draw the ball if self.show_ball is True
if self.show_ball:
self.ball.draw()
def on_key_press(self, key, modifiers):
if key == arcade.key.SPACE:
self.show_ball = True
def main():
window = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT, "Press spacebar")
arcade.run()
if __name__ == "__main__":
main()
如果您对街机库有任何其他问题,请随时询问不和谐服务器 ( https://discord.gg/s4ctsYbC ),他们将很乐意为您提供帮助。