给我一个用图的python飞机大战代码
时间: 2024-02-03 16:04:00 浏览: 74
好的,以下是一个使用图像的Python飞机大战游戏代码示例:
```python
import pygame
import random
# 初始化Pygame
pygame.init()
# 设置屏幕大小和标题
size = (700, 500)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("飞机大战")
# 加载背景图像
background = pygame.image.load("background.jpg").convert()
# 定义玩家飞机类
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("player.png").convert()
self.image.set_colorkey((255, 255, 255))
self.rect = self.image.get_rect()
self.rect.x = 300
self.rect.y = 400
self.speed = 5
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
if self.rect.left < 0:
self.rect.left = 0
elif self.rect.right > 700:
self.rect.right = 700
elif self.rect.top < 0:
self.rect.top = 0
elif self.rect.bottom > 500:
self.rect.bottom = 500
# 定义敌机类
class Enemy(pygame.sprite.Sprite):
def __init__(self, width, height):
super().__init__()
self.image = pygame.image.load("enemy.png").convert()
self.image.set_colorkey((255, 255, 255))
self.rect = self.image.get_rect()
self.rect.x = random.randrange(width - self.rect.width)
self.rect.y = -self.rect.height
self.speed = random.randint(1, 5)
def update(self):
self.rect.y += self.speed
if self.rect.top > height:
self.kill()
# 创建玩家飞机和敌机精灵组
all_sprites = pygame.sprite.Group()
enemies = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
for i in range(10):
enemy = Enemy(size[0], size[1])
all_sprites.add(enemy)
enemies.add(enemy)
# 设置游戏循环
done = False
clock = pygame.time.Clock()
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# 绘制背景
screen.blit(background, (0, 0))
# 更新精灵组
all_sprites.update()
# 检测玩家飞机和敌机的碰撞
hits = pygame.sprite.spritecollide(player, enemies, False)
if hits:
done = True
# 绘制精灵组
all_sprites.draw(screen)
# 更新屏幕
pygame.display.flip()
# 控制游戏帧率
clock.tick(60)
# 退出Pygame
pygame.quit()
```
在上面的代码中,我们先加载了背景、玩家飞机和敌机的图像,并且在玩家飞机和敌机类的初始化函数中,使用set_colorkey()函数去除了图像的白色背景。在游戏循环中,我们先绘制背景,然后更新精灵组中的所有对象,并且检测玩家飞机和敌机之间的碰撞。最后,我们绘制精灵组,更新屏幕,并且控制游戏帧率。
需要注意的是,代码中的图片路径需要根据实际情况进行修改。同时,我们还需要使用pygame.quit()函数退出Pygame。
阅读全文