|
发表于 2025-9-21 15:42:29
|
显示全部楼层
好的!这里有一个使用Python的Pygame库实现的简单飞机大战游戏代码:
- import pygame
- import random
- import sys
- # 初始化pygame
- pygame.init()
- # 屏幕尺寸
- WIDTH, HEIGHT = 480, 600
- screen = pygame.display.set_mode((WIDTH, HEIGHT))
- pygame.display.set_caption("飞机大战")
- # 颜色定义
- BLUE = (0, 0, 255)
- RED = (255, 0, 0)
- GREEN = (0, 255, 0)
- BLACK = (0, 0, 0)
- WHITE = (255, 255, 255)
- # 玩家飞机类
- class Player(pygame.sprite.Sprite):
- def __init__(self):
- super().__init__()
- self.image = pygame.Surface((50, 50))
- self.image.fill(BLUE)
- self.rect = self.image.get_rect()
- self.rect.centerx = WIDTH // 2
- self.rect.bottom = HEIGHT - 10
- self.speed = 8
-
- def update(self):
- keys = pygame.key.get_pressed()
- if keys[pygame.K_LEFT] and self.rect.left > 0:
- self.rect.x -= self.speed
- if keys[pygame.K_RIGHT] and self.rect.right < WIDTH:
- self.rect.x += self.speed
-
- def shoot(self):
- bullet = Bullet(self.rect.centerx, self.rect.top)
- all_sprites.add(bullet)
- bullets.add(bullet)
- # 敌机类
- class Enemy(pygame.sprite.Sprite):
- def __init__(self):
- super().__init__()
- self.image = pygame.Surface((30, 30))
- self.image.fill(RED)
- self.rect = self.image.get_rect()
- self.rect.x = random.randrange(WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100, -40)
- self.speedy = random.randrange(1, 5)
-
- def update(self):
- self.rect.y += self.speedy
- if self.rect.top > HEIGHT:
- self.rect.x = random.randrange(WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100, -40)
- self.speedy = random.randrange(1, 5)
- # 子弹类
- class Bullet(pygame.sprite.Sprite):
- def __init__(self, x, y):
- super().__init__()
- self.image = pygame.Surface((10, 20))
- self.image.fill(GREEN)
- self.rect = self.image.get_rect()
- self.rect.centerx = x
- self.rect.bottom = y
- self.speedy = -10
-
- def update(self):
- self.rect.y += self.speedy
- if self.rect.bottom < 0:
- self.kill()
- # 创建精灵组
- all_sprites = pygame.sprite.Group()
- enemies = pygame.sprite.Group()
- bullets = pygame.sprite.Group()
- # 创建玩家
- player = Player()
- all_sprites.add(player)
- # 创建敌机
- for i in range(8):
- enemy = Enemy()
- all_sprites.add(enemy)
- enemies.add(enemy)
- # 游戏循环
- clock = pygame.time.Clock()
- score = 0
- running = True
- while running:
- # 保持游戏运行的速度
- clock.tick(60)
-
- # 处理事件
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- elif event.type == pygame.KEYDOWN:
- if event.key == pygame.K_SPACE:
- player.shoot()
-
- # 更新
- all_sprites.update()
-
- # 检测子弹和敌机的碰撞
- hits = pygame.sprite.groupcollide(enemies, bullets, True, True)
- for hit in hits:
- score += 10
- enemy = Enemy()
- all_sprites.add(enemy)
- enemies.add(enemy)
-
- # 检测玩家和敌机的碰撞
- hits = pygame.sprite.spritecollide(player, enemies, False)
- if hits:
- running = False
-
- # 渲染
- screen.fill(BLACK)
- all_sprites.draw(screen)
-
- # 显示分数
- font = pygame.font.Font(None, 36)
- text = font.render(f"分数: {score}", True, WHITE)
- screen.blit(text, (10, 10))
-
- # 刷新屏幕
- pygame.display.flip()
- pygame.quit()
- sys.exit()
复制代码
使用说明:
1. 需要先安装Pygame库:pip install pygame
2. 使用左右方向键移动飞机
3. 按空格键发射子弹
4. 击中敌机得分,被敌机撞到游戏结束
你可以在此基础上添加更多功能,比如更好的图形、音效、生命值系统等!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|