Untitled
import pygame import random # Initialize Pygame pygame.init() # Set screen dimensions screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) # Title pygame.display.set_caption("Grinding Game") # Colors black = (0, 0, 0) white = (255, 255, 255) red = (255, 0, 0) green = (0, 255, 0) # Player class class Player(pygame.sprite.Sprite): def __init__(self, x, y): super().__init__() self.image = pygame.Surface((32, 32)) self.image.fill(white) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.speed = 5 self.hp = 100 self.attack = 10 self.level = 1 self.exp = 0 self.exp_to_level_up = 100 def update(self): keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: self.rect.x -= self.speed if keys[pygame.K_RIGHT]: self.rect.x += self.speed if keys[pygame.K_UP]: self.rect.y -= self.speed if keys[pygame.K_DOWN]: self.rect.y += self.speed # Keep player within screen bounds self.rect.clamp_ip(screen.get_rect()) def level_up(self): self.level += 1 self.hp += 10 self.attack += 5 self.exp_to_level_up *= 2 print(f"You leveled up to level {self.level}!") def gain_exp(self, amount): self.exp += amount if self.exp >= self.exp_to_level_up: self.level_up() self.exp = 0 # Enemy class class Enemy(pygame.sprite.Sprite): def __init__(self, x, y): super().__init__() self.image = pygame.Surface((32, 32)) self.image.fill(red) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.hp = 50 self.attack = 5 def update(self): # Simple enemy movement (random direction) direction = random.choice(["left", "right", "up", "down"]) if direction == "left": self.rect.x -= 2 elif direction == "right": self.rect.x += 2 elif direction == "up": self.rect.y -= 2 elif direction == "down": self.rect.y += 2 # Keep enemy within screen bounds self.rect.clamp_ip(screen.get_rect()) # Create sprite groups player_group = pygame.sprite.Group() enemy_group = pygame.sprite.Group() # Create player and enemies player = Player(screen_width // 2, screen_height // 2) player_group.add(player) for _ in range(5): enemy = Enemy(random.randint(0, screen_width - 32), random.randint(0, screen_height - 32)) enemy_group.add(enemy) # Game loop running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # Update sprites player_group.update() enemy_group.update() # Check for collisions for enemy in enemy_group: if player.rect.colliderect(enemy.rect): # Player attacks enemy.hp -= player.attack # Enemy attacks (if alive) if enemy.hp > 0: player.hp -= enemy.attack # Check if enemy is defeated if enemy.hp <= 0: enemy_group.remove(enemy) player.gain_exp(20) # Gain EXP for defeating an enemy # Draw everything screen.fill(black) player_group.draw(screen) enemy_group.draw(screen) # Display player info font = pygame.font.Font(None, 24) hp_text = font.render(f"HP: {player.hp}", True, green) level_text = font.render(f"Level: {player.level}", True, white) exp_text = font.render(f"EXP: {player.exp}/{player.exp_to_level_up}", True, white) screen.blit(hp_text, (10, 10)) screen.blit(level_text, (10, 30)) screen.blit(exp_text, (10, 50)) # Update the display pygame.display.flip() # Quit Pygame pygame.quit()
Leave a Comment