def run(self): menu_input = Input() last_update_time = SDL_GetTicks() # units.MS while self.running: start_time = SDL_GetTicks() # units.MS menu_input.begin_new_frame() menu_events = sdl2.ext.get_events() for event in menu_events: if event.type == SDL_KEYDOWN: menu_input.key_down_event(event) elif event.type == SDL_KEYUP: menu_input.key_up_event(event) elif event.type == SDL_QUIT: self.running = False break # Exit if menu_input.was_key_pressed(SDLK_ESCAPE): self.running = False # Move the cursor elif menu_input.was_key_pressed(SDLK_UP): if self.cursor_position[1] != 0: self.cursor_position[1] -= 1 elif menu_input.was_key_pressed(SDLK_DOWN): if self.cursor_position[1] != 2: self.cursor_position[1] += 1 # Select option elif menu_input.was_key_pressed(SDLK_RETURN): self.running = False if self.cursor_position[1] == 0: self.launch_debug() current_time = SDL_GetTicks() # units.MS elapsed_time = current_time - last_update_time # units.MS self.update(min(elapsed_time, MAX_FRAME_TIME)) last_update_time = current_time self.draw() self.window.refresh() # This loop lasts 1/60th of a second, or 1000/60th ms ms_per_frame = 1000 // FPS # units.MS elapsed_time = SDL_GetTicks() - start_time # units.MS if elapsed_time < ms_per_frame: SDL_Delay(ms_per_frame - elapsed_time)
def run(self): game_input = Input() speed_x, speed_y = 2, 1 player_pos = [-100, -100] # motion_type = self.player_motion_type # facing = self.player_facing self.running = True last_update_time = SDL_GetTicks() # units.MS while self.running: start_time = SDL_GetTicks() # units.MS game_input.begin_new_frame() game_events = get_events() for event in game_events: if event.type == SDL_KEYDOWN: game_input.key_down_event(event) elif event.type == SDL_KEYUP: game_input.key_up_event(event) elif event.type == SDL_QUIT: self.running = False break if not self.running: self.clear() break # Exit if game_input.was_key_pressed(SDLK_ESCAPE): self.clear() self.running = False break # Player movement if game_input.is_key_held(SDLK_RIGHT) and game_input.is_key_held( SDLK_UP): player_pos[0] -= speed_x player_pos[1] += speed_y self.player.velocity.vx = speed_x self.player.velocity.vy = -speed_y self.player.facing.set("right_up") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_RIGHT) and game_input.is_key_held( SDLK_DOWN): player_pos[0] -= speed_x player_pos[1] -= speed_y self.player.velocity.vx = speed_x self.player.velocity.vy = speed_y self.player.facing.set("right_down") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_LEFT) and game_input.is_key_held( SDLK_UP): player_pos[0] += speed_x player_pos[1] += speed_y self.player.velocity.vx = -speed_x self.player.velocity.vy = -speed_y self.player.facing.set("left_up") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_LEFT) and game_input.is_key_held( SDLK_DOWN): player_pos[0] += speed_x player_pos[1] -= speed_y self.player.velocity.vx = -speed_x self.player.velocity.vy = speed_y self.player.facing.set("left_down") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_LEFT): player_pos[0] += speed_x self.player.velocity.vx = -speed_x self.player.facing.set("left") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_RIGHT): player_pos[0] -= speed_x self.player.velocity.vx = speed_x self.player.facing.set("right") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_UP): player_pos[1] += speed_y self.player.velocity.vy = -speed_y self.player.facing.set("up") self.player.motiontype.set("walking") elif game_input.is_key_held(SDLK_DOWN): player_pos[1] -= speed_y self.player.velocity.vy = speed_y self.player.facing.set("down") self.player.motiontype.set("walking") # elif game_input.was_key_pressed(SDLK_i): # self.player.toggle_inventory() # Player Attack elif game_input.is_key_held(SDLK_SPACE): pass # motion_type = MotionType.CASTING # Nothing else: self.player.velocity.vx = 0 self.player.velocity.vy = 0 self.player.motiontype.set("standing") current_time = SDL_GetTicks() # units.MS elapsed_time = current_time - last_update_time # units.MS last_update_time = current_time self.world.process() # This loop lasts 1/60th of a second, or 1000/60th ms ms_per_frame = 1000 // FPS # units.MS elapsed_time = SDL_GetTicks() - start_time # units.MS if elapsed_time < ms_per_frame: SDL_Delay(ms_per_frame - elapsed_time)
def run(self): game_input = Input() speed_x, speed_y = 2, 1 player_pos = [0, 0] motion_type = self.player.motion_type facing = self.player.facing running = True last_update_time = SDL_GetTicks() # units.MS while running: start_time = SDL_GetTicks() # units.MS game_input.begin_new_frame() game_events = get_events() for event in game_events: if event.type == SDL_KEYDOWN: game_input.key_down_event(event) elif event.type == SDL_KEYUP: game_input.key_up_event(event) elif event.type == SDL_QUIT: running = False break # Exit if game_input.was_key_pressed(SDLK_ESCAPE): running = False # Player movement if game_input.is_key_held(SDLK_RIGHT) and game_input.is_key_held( SDLK_UP): player_pos[0] -= speed_x player_pos[1] += speed_y motion_type = MotionType.WALKING facing = Facing.RIGHT_UP elif game_input.is_key_held(SDLK_RIGHT) and game_input.is_key_held( SDLK_DOWN): player_pos[0] -= speed_x player_pos[1] -= speed_y motion_type = MotionType.WALKING facing = Facing.RIGHT_DOWN elif game_input.is_key_held(SDLK_LEFT) and game_input.is_key_held( SDLK_UP): player_pos[0] += speed_x player_pos[1] += speed_y motion_type = MotionType.WALKING facing = Facing.LEFT_UP elif game_input.is_key_held(SDLK_LEFT) and game_input.is_key_held( SDLK_DOWN): player_pos[0] += speed_x player_pos[1] -= speed_y motion_type = MotionType.WALKING facing = Facing.LEFT_DOWN elif game_input.is_key_held(SDLK_LEFT): player_pos[0] += speed_x motion_type = MotionType.WALKING facing = Facing.LEFT elif game_input.is_key_held(SDLK_RIGHT): player_pos[0] -= speed_x motion_type = MotionType.WALKING facing = Facing.RIGHT elif game_input.is_key_held(SDLK_UP): player_pos[1] += speed_y motion_type = MotionType.WALKING facing = Facing.UP elif game_input.is_key_held(SDLK_DOWN): player_pos[1] -= speed_y motion_type = MotionType.WALKING facing = Facing.DOWN elif game_input.was_key_pressed(SDLK_i): self.player.toggle_inventory() # Player Attack elif game_input.is_key_held(SDLK_SPACE): motion_type = MotionType.CASTING # Nothing else: motion_type = MotionType.STANDING current_time = SDL_GetTicks() # units.MS elapsed_time = current_time - last_update_time # units.MS self.update(player_pos, motion_type, facing, min(elapsed_time, MAX_FRAME_TIME)) last_update_time = current_time self.get_sprites() self.renderer.process(self.world, self.sprites) self.sprites.clear() # This loop lasts 1/60th of a second, or 1000/60th ms ms_per_frame = 1000 // FPS # units.MS elapsed_time = SDL_GetTicks() - start_time # units.MS if elapsed_time < ms_per_frame: SDL_Delay(ms_per_frame - elapsed_time)