import pygame, sys, math, random class Player(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((40,40)) self.rect = self.image.get_rect(center = (screen_width/2,screen_height/2)) def create_bullet(self): return Bullet(pygame.mouse.get_pos()[0],pygame.mouse.get_pos()[1]) class Bullet(pygame.sprite.Sprite): def __init__(self,pos_x,pos_y): super().__init__() self.image = pygame.Surface((50,10)) self.image.fill((255,0,0)) self.rect = self.image.get_rect(center = (pos_x,pos_y)) def update(self): self.rect.x += 30 if self.rect.x >= screen + 200: self.kill() 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(False) pos_x, pos_y = 920, 800 width = 40 height = 40 vel = 15 jumping = False y_gravity = 1 jump_height = 20 y_velocity = jump_height player = Player() player_group = pygame.sprite.Group() player_group.add(player) bullet_group = pygame.sprite.Group() player_rect = standing_surface.get_rect(center = (pos_x, pos_y)) while True: pygame.time.delay(10) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: bullet_group.add(player.create_bullet()) keys_pressed = pygame.key.get_pressed() if keys_pressed[pygame.K_SPACE]: jumping = True screen.blit(background, (0, 0)) 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)) bullet_group.draw(screen) pygame.draw.rect(screen, (0,255,0),(pos_x, pos_y, width, height)) bullet_group.update() pygame.display.update() pygame.display.flip() clock.tick(120)