Untitled
unknown
plain_text
10 months ago
2.6 kB
7
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