Move Sprite by Angle Example

https://api.arcade.academy/en/stable/example_code/sprite_move_angle.html
python -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()