Update main_game.txt
This commit is contained in:
101
main_game.txt
101
main_game.txt
@@ -0,0 +1,101 @@
|
||||
import pygame
|
||||
import sys
|
||||
|
||||
# Constants
|
||||
SCREEN_WIDTH, SCREEN_HEIGHT = 2400, 1200
|
||||
SPRITE_WIDTH = 165
|
||||
SPRITE_HEIGHT = 300 # Updated character height
|
||||
SPRITESHEET_WIDTH = 1024
|
||||
SPRITESHEET_HEIGHT = 1024
|
||||
FPS = 60
|
||||
|
||||
# Load sprite frames from the sheet
|
||||
def load_frames(sheet, row, num_frames):
|
||||
frames = []
|
||||
for i in range(num_frames):
|
||||
frame = sheet.subsurface((i * SPRITE_WIDTH, row * SPRITE_HEIGHT, SPRITE_WIDTH, SPRITE_HEIGHT))
|
||||
frames.append(frame)
|
||||
return frames
|
||||
|
||||
def main():
|
||||
pygame.init()
|
||||
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
|
||||
pygame.display.set_caption("Side Scroller Example")
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
# Load sprite sheet
|
||||
sheet = pygame.image.load("spritesheet.png").convert_alpha()
|
||||
|
||||
# Assume first row (row 0) is walking right, 5 frames
|
||||
walk_right_frames = load_frames(sheet, 0, 5)
|
||||
# Flip frames for walking left
|
||||
walk_left_frames = [pygame.transform.flip(frame, True, False) for frame in walk_right_frames]
|
||||
|
||||
# Player state
|
||||
player_x = 100
|
||||
player_y = SCREEN_HEIGHT - SPRITE_HEIGHT
|
||||
frame_idx = 0
|
||||
frame_timer = 0
|
||||
frame_delay = 100 # ms per frame
|
||||
velocity_y = 0
|
||||
is_jumping = False
|
||||
gravity = 1
|
||||
move_left = False
|
||||
move_right = False
|
||||
facing_right = True
|
||||
|
||||
running = True
|
||||
while running:
|
||||
dt = clock.tick(FPS)
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
elif event.type == pygame.KEYDOWN:
|
||||
if event.key == pygame.K_SPACE and not is_jumping:
|
||||
velocity_y = -18
|
||||
is_jumping = True
|
||||
|
||||
# Move player
|
||||
keys = pygame.key.get_pressed()
|
||||
move_left = keys[pygame.K_LEFT]
|
||||
move_right = keys[pygame.K_RIGHT]
|
||||
|
||||
if move_right:
|
||||
player_x += 5
|
||||
facing_right = True
|
||||
frame_timer += dt
|
||||
if frame_timer > frame_delay:
|
||||
frame_idx = (frame_idx + 1) % len(walk_right_frames)
|
||||
frame_timer = 0
|
||||
elif move_left:
|
||||
player_x -= 5
|
||||
facing_right = False
|
||||
frame_timer += dt
|
||||
if frame_timer > frame_delay:
|
||||
frame_idx = (frame_idx + 1) % len(walk_left_frames)
|
||||
frame_timer = 0
|
||||
else:
|
||||
frame_idx = 0 # Idle frame
|
||||
|
||||
# Jumping and gravity
|
||||
if is_jumping:
|
||||
player_y += velocity_y
|
||||
velocity_y += gravity
|
||||
if player_y >= SCREEN_HEIGHT - SPRITE_HEIGHT:
|
||||
player_y = SCREEN_HEIGHT - SPRITE_HEIGHT
|
||||
is_jumping = False
|
||||
velocity_y = 0
|
||||
|
||||
# Draw
|
||||
screen.fill((50, 50, 50))
|
||||
if facing_right:
|
||||
screen.blit(walk_right_frames[frame_idx], (player_x, player_y))
|
||||
else:
|
||||
screen.blit(walk_left_frames[frame_idx], (player_x, player_y))
|
||||
pygame.display.flip()
|
||||
|
||||
pygame.quit()
|
||||
sys.exit()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user