代码启动后立刻关闭

-1 投票
0 回答
33 浏览
提问于 2025-04-12 01:43

我是一名初学者,正在学习软件开发。我想做一个项目,但我运行这个项目后,它立刻就关闭了,我不知道该怎么解决这个问题。

import pygame
import random
import os

# Ekran boyutları
WIDTH = 800
HEIGHT = 600

# Renkler
WHITE = (255, 255, 255)
RED = (255, 0, 0)

# Oyuncu sınıfı
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((50, 50))
        self.image.fill(RED)
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH // 2, HEIGHT // 2)
        self.health = 3

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            self.rect.x -= 5
        if keys[pygame.K_RIGHT]:
            self.rect.x += 5
        if keys[pygame.K_UP]:
            self.rect.y -= 5
        if keys[pygame.K_DOWN]:
            self.rect.y += 5

        # Ekran dışına çıkmasını engelle
        self.rect.x = max(0, min(self.rect.x, WIDTH - self.rect.width))
        self.rect.y = max(0, min(self.rect.y, HEIGHT - self.rect.height))

# Düşman sınıfı
class Enemy(pygame.sprite.Sprite):
    def __init__(self, game_folder):
        super().__init__()
        self.image = pygame.image.load(os.path.join(game_folder, "Enemy.png")).convert()  # enemy.png resmini yükle
        self.image.set_colorkey(WHITE)
        self.rect = self.image.get_rect()
        self.rect.x = random.randrange(WIDTH - self.rect.width)
        self.rect.y = random.randrange(HEIGHT - self.rect.height)

# Oyun dosyasının bulunduğu klasör
game_folder = os.path.abspath(os.path.dirname(__file__))

# Kalp resmini yükleyen fonksiyon
def load_image(name, width, height):
    fullname = os.path.join(game_folder, name)  # Oyun klasöründe doğrudan arama
    image = pygame.image.load(fullname).convert()
    image.set_colorkey(WHITE)
    return image

# Oyunu başlatma
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Space War")
clock = pygame.time.Clock()

all_sprites = pygame.sprite.Group()
enemies = pygame.sprite.Group()

player = Player()
all_sprites.add(player)

for _ in range(8):
    enemy = Enemy(game_folder)
    all_sprites.add(enemy)
    enemies.add(enemy)

# Kalp resmini yükleme
heart_image = load_image('Heart.png', 25, 25)

# Oyun döngüsü
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    all_sprites.update()

    # Düşmanlarla çarpışma kontrolü
    hits = pygame.sprite.spritecollide(player, enemies, True)
    for hit in hits:
        player.health -= 1
        if player.health <= 0:
            running = False
        enemy = Enemy(game_folder)
        all_sprites.add(enemy)
        enemies.add(enemy)

    screen.fill((0, 0, 0))  # Siyah renkle arka planı doldur

    all_sprites.draw(screen)
    
    # Kalpleri çiz
    heart_spacing = 40  # Kalpler arasındaki boşluğu belirle
    max_hearts_per_row = (WIDTH - 20) // heart_spacing  # Bir satırda maksimum kaç kalp sığabileceğini hesapla
    for i in range(player.health):
        row = i // max_hearts_per_row  # Kaçıncı satırda olduğumuzu belirle
        col = i % max_hearts_per_row  # Kaçıncı sütunda olduğumuzu belirle
        screen.blit(heart_image, (10 + col * heart_spacing, 10 + row * heart_spacing))
    
    pygame.display.flip()

    clock.tick(60)

pygame.quit()

我尝试做一个游戏,但我想用 .png 格式来绘制敌人,而不是直接画出来。更新代码后,它就不再打开了。请帮我解决这个问题。

0 个回答

暂无回答

撰写回答