编辑代码

import pygame  
import sys  

# 初始化pygame  
pygame.init()  

# 游戏窗口设置  
WIDTH, HEIGHT = 800, 600  
screen = pygame.display.set_mode((WIDTH, HEIGHT))  
pygame.display.set_caption("塔防游戏")  

# 定义颜色  
WHITE = (255, 255, 255)  
BLACK = (0, 0, 0)  
GREEN = (0, 255, 0)  
RED = (255, 0, 0)  

# 敌人类  
class Enemy:  
    def __init__(self, x, y):  
        self.x = x  
        self.y = y  
        self.width = 40  
        self.height = 40  
        self.speed = 2  

    def draw(self):  
        pygame.draw.rect(screen, RED, (self.x, self.y, self.width, self.height))  

    def move(self):  
        self.x -= self.speed  

# 塔类  
class Tower:  
    def __init__(self, x, y):  
        self.x = x  
        self.y = y  
        self.damage = 10  
        
    def draw(self):  
        pygame.draw.rect(screen, GREEN, (self.x, self.y, 30, 30))  

    def shoot(self, enemy):  
        return enemy.x <= self.x + 30  

# 游戏主循环  
def main():  
    clock = pygame.time.Clock()  
    enemies = [Enemy(800, 200)]  # 初始化一个敌人  
    towers = []  
    score = 0  

    while True:  
        screen.fill(WHITE)  
        
        # 事件处理  
        for event in pygame.event.get():  
            if event.type == pygame.QUIT:  
                pygame.quit()  
                sys.exit()  

            if event.type == pygame.MOUSEBUTTONDOWN:  
                if event.button == 1:  # 左键放置塔  
                    x, y = event.pos  
                    towers.append(Tower(x, y))  

        # 更新敌人  
        for enemy in enemies:  
            enemy.move()  
            enemy.draw()  

            # 检查敌人是否到达屏幕左边  
            if enemy.x < 0:  
                enemies.remove(enemy)  

        # 绘制塔  
        for tower in towers:  
            tower.draw()  
            for enemy in enemies:  
                if tower.shoot(enemy):  
                    score += tower.damage  
                    enemies.remove(enemy)  
                    break  # 每个塔每回合只能击中一个敌人  

        # 显示分数  
        font = pygame.font.SysFont(None, 36)  
        score_text = font.render(f'Score: {score}', True, BLACK)  
        screen.blit(score_text, (10, 10))  

        # 刷新屏幕  
        pygame.display.flip()  
        clock.tick(60)  

        # 添加新的敌人  
        if len(enemies) < 5:  # 控制敌人数量  
            enemies.append(Enemy(800, random.randint(50, 550)))  

if __name__ == "__main__":  
    main()