import
arcade
class
MainGame(arcade.Window):
def
__init__(
self
):
super
().__init__(
600
,
600
,
title
=
"Player Movement"
)
self
.vel_x
=
0
self
.bullet
=
None
self
.player
=
None
self
.physics_engine
=
None
def
on_draw(
self
):
arcade.start_render()
self
.scene.draw()
def
setup(
self
):
self
.scene
=
arcade.Scene()
self
.scene.add_sprite_list(
"Player"
)
self
.scene.add_sprite_list(
"Platforms"
,
use_spatial_hash
=
True
)
self
.player_sprite
=
arcade.Sprite(
"Player.png"
,
1
)
self
.player_sprite.center_x
=
64
self
.player_sprite.center_y
=
90
self
.scene.add_sprite(
"Player"
,
self
.player_sprite)
platform
=
arcade.Sprite(f
"Platform.png"
,
1
)
platform.center_x
=
300
platform.center_y
=
32
self
.scene.add_sprite(
"Platforms"
, platform)
self
.physics_engine
=
arcade.PhysicsEnginePlatformer(
self
.player_sprite,
self
.scene.get_sprite_list(
"Platforms"
),
0.5
)
def
on_update(
self
, delta_time):
self
.player_sprite.center_x
+
=
self
.vel_x
*
delta_time
self
.physics_engine.update()
if
self
.bullet !
=
None
:
for
bullet
in
self
.scene.get_sprite_list(
"Bullet"
):
bullet.center_y
+
=
5
def
on_key_press(
self
, symbol, modifier):
if
symbol
=
=
arcade.key.LEFT:
self
.vel_x
=
-
300
elif
symbol
=
=
arcade.key.RIGHT:
self
.vel_x
=
300
elif
symbol
=
=
arcade.key.UP:
if
self
.physics_engine.can_jump():
self
.player_sprite.change_y
=
15
elif
symbol
=
=
arcade.key.DOWN:
self
.bullet
=
arcade.Sprite(
"Bullet.png"
,
1
)
self
.bullet.center_x
=
self
.player_sprite.center_x
self
.bullet.bottom
=
self
.player_sprite.top
self
.scene.add_sprite(
"Bullet"
,
self
.bullet)
def
on_key_release(
self
, symbol, modifier):
if
symbol
=
=
arcade.key.LEFT:
self
.vel_x
=
0
elif
symbol
=
=
arcade.key.RIGHT:
self
.vel_x
=
0
game
=
MainGame()
game.setup()
arcade.run()