Untitled
unknown
plain_text
14 days ago
2.6 kB
4
Indexable
import pygame import math pygame.init() # Screen dimensions SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 # Player settings PLAYER_WIDTH = 50 PLAYER_HEIGHT = 60 WALK_SPEED = 4 RUN_SPEED = 8 CROUCH_SPEED = 2 SPRINT_SPEED = 12 JUMP_HEIGHT = 15 GRAVITY = 1 GROUND_CHECK_DISTANCE = 10 # Colors WHITE = (255, 255, 255) BLACK = (0, 0, 0) # Initialize screen screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Player Movement") # Player class class Player: def __init__(self): self.rect = pygame.Rect((SCREEN_WIDTH//2, SCREEN_HEIGHT//2), (PLAYER_WIDTH, PLAYER_HEIGHT)) self.vel_y = 0 self.on_ground = False self.crouching = False def move(self, keys): speed = WALK_SPEED if keys[pygame.K_LSHIFT]: speed = SPRINT_SPEED elif keys[pygame.K_LCTRL]: speed = CROUCH_SPEED elif keys[pygame.K_LALT]: speed = RUN_SPEED move_direction = pygame.Vector2(0, 0) if keys[pygame.K_LEFT]: move_direction.x = -1 elif keys[pygame.K_RIGHT]: move_direction.x = 1 if keys[pygame.K_UP]: move_direction.y = -1 elif keys[pygame.K_DOWN]: move_direction.y = 1 if keys[pygame.K_SPACE] and self.on_ground: self.vel_y = -JUMP_HEIGHT self.rect.x += move_direction.x * speed self.rect.y += move_direction.y * speed # Apply gravity self.vel_y += GRAVITY self.rect.y += self.vel_y # Ground check if self.rect.y >= SCREEN_HEIGHT - PLAYER_HEIGHT: self.rect.y = SCREEN_HEIGHT - PLAYER_HEIGHT self.on_ground = True self.vel_y = 0 else: self.on_ground = False # Crouch if keys[pygame.K_c]: if self.crouching: self.rect.height = PLAYER_HEIGHT self.crouching = False else: self.rect.height = PLAYER_HEIGHT // 2 self.crouching = True def draw(self, surface): pygame.draw.rect(surface, BLACK, self.rect) def main(): clock = pygame.time.Clock() player = Player() running = True while running: screen.fill(WHITE) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False keys = pygame.key.get_pressed() player.move(keys) player.draw(screen) pygame.display.flip() clock.tick(60) pygame.quit() if __name__ == "__main__": main()
Editor is loading...
Leave a Comment