import pygame import random # --- Settings --- WIDTH, HEIGHT = 800, 600 WHITE, BLACK = (255, 255, 255), (15, 15, 15) GOLD_COLOR = (255, 215, 0) BRAINROT_COLOR = (139, 69, 19) # Controls: P1(WASD+Space), P2(Arrows+R-Ctrl), P3(IJKL+P), P4(TFGH+Q) CONTROLS = [ {'up': pygame.K_w, 'down': pygame.K_s, 'left': pygame.K_a, 'right': pygame.K_d, 'atk': pygame.K_SPACE}, {'up': pygame.K_UP, 'down': pygame.K_DOWN, 'left': pygame.K_LEFT, 'right': pygame.K_RIGHT, 'atk': pygame.K_RCTRL}, {'up': pygame.K_i, 'down': pygame.K_k, 'left': pygame.K_j, 'right': pygame.K_l, 'atk': pygame.K_p}, {'up': pygame.K_t, 'down': pygame.K_g, 'left': pygame.K_f, 'right': pygame.K_h, 'atk': pygame.K_q} ] class Player: def __init__(self, i): self.i = i self.rect = pygame.Rect(100 + (i*150), 300, 40, 40) self.color = [(0,255,0), (0,0,255), (255,0,0), (255,255,0)][i] self.gold = 0 self.range = 60 def move(self, keys): c = CONTROLS[self.i] if keys[c['left']]: self.rect.x -= 5 if keys[c['right']]: self.rect.x += 5 if keys[c['up']]: self.rect.y -= 5 if keys[c['down']]: self.rect.y += 5 def main(): pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() font = pygame.font.SysFont('Arial', 24) # Player Selection num_players, selecting = 1, True while selecting: screen.fill(BLACK) msg = font.render(f"Press 1-4 for Players. Current: {num_players}. Press ENTER to start.", True, WHITE) screen.blit(msg, (100, 250)) for e in pygame.event.get(): if e.type == pygame.KEYDOWN: if e.key in [pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4]: num_players = int(e.unicode) if e.key == pygame.K_RETURN: selecting = False pygame.display.flip() players = [Player(i) for i in range(num_players)] enemies = [pygame.Rect(random.randint(50,750), random.randint(50,550), 30, 30) for _ in range(6)] shop_open = False while True: screen.fill(BLACK) keys = pygame.key.get_pressed() for e in pygame.event.get(): if e.type == pygame.QUIT: return if e.type == pygame.KEYDOWN: if e.key == pygame.K_TAB: shop_open = not shop_open if not shop_open: for p in players: if e.key == CONTROLS[p.i]['atk']: hitbox = p.rect.inflate(p.range, p.range) for en in enemies[:]: if hitbox.colliderect(en): enemies.remove(en) p.gold += 20 enemies.append(pygame.Rect(random.randint(50,750), random.randint(50,550), 30, 30)) else: # Shop Buying p = players[0] # P1 buys for now if e.key == pygame.K_s and p.gold >= 50: p.gold -= 50; p.range += 30 if e.key == pygame.K_k and p.gold >= 100: p.gold -= 100; p.color = BRAINROT_COLOR if shop_open: s_msg = font.render("SHOP: [S] Sword Range (50g) | [K] Brainrot Skin (100g) | [TAB] Exit", True, GOLD_COLOR) screen.blit(s_msg, (100, 100)) else: for p in players: p.move(keys) pygame.draw.rect(screen, p.color, p.rect) g_msg = font.render(f"P{p.i+1}: {p.gold}g", True, p.color) screen.blit(g_msg, (10, 10 + (p.i*30))) for en in enemies: pygame.draw.rect(screen, BRAINROT_COLOR, en) pygame.display.flip() clock.tick(60) if __name__ == "__main__": main()