import pygame, sys, math, random from tkinter import * class Player(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((width,height)) self.rect = self.image.get_rect(center = (screen_width/2,screen_height/2)) pygame.init() clock = pygame.time.Clock() screen_width, screen_height = 1900,1060 screen = pygame.display.set_mode((screen_width, screen_height)) standing_surface = pygame.transform.scale(pygame.image.load("mario_stand_8bit.png"), (48, 64)) jumping_surface = pygame.transform.scale(pygame.image.load("mario_jump_8bit.png"), (48, 64)) background = pygame.image.load("menu_background_space.jpg") pygame.display.set_caption("Moving rectangle") pygame.mouse.set_visible(True) # pos, height, jumping, and gravity pos_x, pos_y = 920, 800 angle = 0 width = 40 height = 40 vel = 20 jumping = False y_gravity = 1 jump_height = 20 y_velocity = jump_height player_jumping = pygame.Surface((20,40)) #player groups player = Player() player_group = pygame.sprite.Group() player_group.add(player) jump_sfx = pygame.mixer.Sound("jump_sound.mp3") player_rect = standing_surface.get_rect(center = (pos_x, pos_y)) #main code while True: pygame.time.delay(10) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() #keybind keys_pressed = pygame.key.get_pressed() if keys_pressed[pygame.K_SPACE]: jumping = True jump_sfx.play() screen.blit(background, (0, 0)) #sprite jumping keybind if jumping: pos_y -= y_velocity y_velocity -= y_gravity if y_velocity < -jump_height: jumping = False y_velocity = jump_height player_rect = jumping_surface.get_rect(center=(pos_x, pos_y)) screen.blit(jumping_surface, player_rect) else: player_rect = standing_surface.get_rect(center=(pos_x, pos_y)) screen.blit(standing_surface, player_rect) if keys_pressed[pygame.K_a] and pos_x > 0: pos_x -= vel if keys_pressed[pygame.K_d] and pos_x < 1900 - width: pos_x += vel screen.blit(background, (0, 0)) pygame.draw.rect(screen, (0,255,0),(pos_x, pos_y, width, height)) pygame.display.update() pygame.display.flip() clock.tick(120)