python 飞机大战
时间: 2023-06-17 17:04:28 浏览: 103
好的,接下来我会为你介绍一下如何使用 Python 编写一个简单的飞机大战游戏。
首先,你需要安装 Pygame 模块,它是一个 Python 的游戏开发库。你可以使用以下命令来安装 Pygame:
```
pip install pygame
```
接着,你需要创建一个空白的 Pygame 窗口,代码如下:
```python
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 600))
pygame.display.set_caption("飞机大战")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
pygame.display.update()
```
这段代码创建了一个大小为 400x600 的 Pygame 窗口,并将窗口标题设置为“飞机大战”。然后,它进入了一个无限循环,直到用户关闭窗口。在每次循环中,它会检查是否有事件发生,并使用 Pygame 的 `pygame.display.update()` 函数来更新窗口。
现在,我们需要添加一架飞机到游戏中。你可以使用以下代码来加载并显示一张飞机图片:
```python
plane_img = pygame.image.load("plane.png")
plane_rect = plane_img.get_rect()
plane_rect.centerx = screen.get_rect().centerx
plane_rect.bottom = screen.get_rect().bottom
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.blit(plane_img, plane_rect)
pygame.display.update()
```
这段代码使用 Pygame 的 `pygame.image.load()` 函数来加载一张名为“plane.png”的飞机图片,并将其显示在屏幕中央底部。注意,我们还需要使用 `get_rect()` 函数获取飞机图片的矩形对象,并将其设置为屏幕中央底部。
现在,让我们添加一些动画效果。我们可以使用 Pygame 的 `pygame.time.Clock()` 函数来控制游戏的帧率,并使用 `pygame.time.get_ticks()` 函数来获取当前时间戳。接下来,我们可以在每一帧中移动飞机,并在一定时间间隔内发射子弹。以下是完整的代码:
```python
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 600))
pygame.display.set_caption("飞机大战")
plane_img = pygame.image.load("plane.png")
plane_rect = plane_img.get_rect()
plane_rect.centerx = screen.get_rect().centerx
plane_rect.bottom = screen.get_rect().bottom
bullet_img = pygame.image.load("bullet.png")
bullet_rect = bullet_img.get_rect()
bullets = []
clock = pygame.time.Clock()
last_shot = pygame.time.get_ticks()
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
plane_rect.move_ip(-5, 0)
if keys[pygame.K_RIGHT]:
plane_rect.move_ip(5, 0)
if keys[pygame.K_SPACE] and pygame.time.get_ticks() - last_shot > 500:
last_shot = pygame.time.get_ticks()
bullet = bullet_rect.copy()
bullet.centerx = plane_rect.centerx
bullet.bottom = plane_rect.top
bullets.append(bullet)
for bullet in bullets:
bullet.move_ip(0, -5)
if bullet.top < 0:
bullets.remove(bullet)
screen.fill((255, 255, 255))
screen.blit(plane_img, plane_rect)
for bullet in bullets:
screen.blit(bullet_img, bullet)
pygame.display.update()
```
这段代码添加了以下功能:
- 使用 Pygame 的 `pygame.key.get_pressed()` 函数检测用户是否按下了方向键和空格键。
- 在用户按下空格键并且距离上一次发射子弹超过 500 毫秒时,创建一个新的子弹并将其添加到 `bullets` 列表中。
- 在每一帧中,移动飞机和子弹,并检查是否有子弹超出了屏幕顶部。如果是,则将其从 `bullets` 列表中移除。
- 在每一帧中,清空屏幕并重新绘制飞机和所有子弹。
现在,你可以运行这段代码并开始玩飞机大战游戏了!
阅读全文