https://api.arcade.academy/en/stable/example_code/sprite_move_angle.htmlpython -m arcade.examples.sprite_move_angle

Disegna la navicella e la muove seguendo i comandi impartiti con le 4 frecce
import arcade
import math
WIDTH = 800
HEIGHT = 600
TITLE = "Move Sprite by Angle Example"
WIDTH_2 = WIDTH/2
HEIGHT_2 = HEIGHT/2
SPRITE_SCALING = 1
MOVEMENT_SPEED = 5
ANGLE_SPEED = 5
class Player(arcade.Sprite):
def __init__(self, image, scale):
super().__init__(image, scale=scale)
self.speed = 0
def update(self, delta_time = 1/60):
self.angle += self.change_angle
angle_rad = math.radians(self.angle)
self.center_x += self.speed*math.sin(angle_rad)
self.center_y += self.speed*math.cos(angle_rad)
class GameView(arcade.View):
def __init__(self):
super().__init__()
self.player_list = None
self.player_sprite = None
self.background_color = arcade.color.BLACK
def setup(self):
self.player_list = arcade.SpriteList()
self.player_sprite = Player(":resources:images/space_shooter/playerShip1_orange.png",
SPRITE_SCALING)
self.player_sprite.center_x = WIDTH_2
self.player_sprite.center_y = HEIGHT_2
self.player_list.append(self.player_sprite)
def on_draw(self):
self.clear()
self.player_list.draw()
def on_update(self, delta_time):
self.player_list.update(delta_time)
def on_key_press(self, key, modifiers):
if (key == arcade.key.UP ): self.player_sprite.speed = MOVEMENT_SPEED
elif(key == arcade.key.DOWN ): self.player_sprite.speed = -MOVEMENT_SPEED
elif(key == arcade.key.LEFT ): self.player_sprite.change_angle = -ANGLE_SPEED
elif(key == arcade.key.RIGHT): self.player_sprite.change_angle = ANGLE_SPEED
def on_key_release(self, key, modifiers):
if (key == arcade.key.UP ) or (key == arcade.key.DOWN ): self.player_sprite.speed = 0
elif(key == arcade.key.LEFT) or (key == arcade.key.RIGHT): self.player_sprite.change_angle = 0
def main():
window = arcade.Window(WIDTH, HEIGHT, TITLE)
game = GameView()
game.setup()
window.show_view(game)
arcade.run()
if __name__ == "__main__":
main()