Untitled

 avatar
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