import
arcade
class
MainGame(arcade.Window):
def
__init__(
self
):
super
().__init__(
600
,
600
,
title
=
"Player Movement"
)
self
.vel_x
=
0
self
.camera
=
None
self
.level
=
1
self
.scene
=
None
self
.player
=
None
self
.physics_engine
=
None
def
on_draw(
self
):
arcade.start_render()
self
.camera.use()
self
.scene.draw()
def
setup(
self
):
self
.scene
=
arcade.Scene()
self
.camera
=
arcade.Camera(
600
,
600
)
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
=
600
self
.scene.add_sprite(
"Player"
,
self
.player_sprite)
platform
=
arcade.Sprite(f
"Platform{self.level}.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()
self
.camera_move()
if
self
.player_sprite.center_x >
690
:
self
.level
+
=
1
self
.setup()
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
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
def
camera_move(
self
):
screen_x
=
self
.player_sprite.center_x
-
\
(
self
.camera.viewport_width
/
2
)
screen_y
=
self
.player_sprite.center_y
-
\
(
self
.camera.viewport_height
/
2
)
self
.camera.move_to([screen_x, screen_y])
game
=
MainGame()
game.setup()
arcade.run()