继续这段代码,写飞机与敌机碰撞的代码
时间: 2023-07-10 09:04:06 浏览: 81
游戏,经典打飞机单机版,C#实现完整源代码,界面简洁明了,W、A、S、D控制走位,J发射子弹,会计算敌机的伤害值等
好的,我们可以在游戏循环中添加碰撞检测的代码。假设飞机和敌机都是矩形,我们可以通过判断两个矩形是否重叠来判断是否发生了碰撞。
首先,我们需要计算出飞机和敌机的矩形位置和大小。假设飞机的位置为 `plane_x` 和 `plane_y`,大小为 `plane_width` 和 `plane_height`,敌机的位置为 `enemy_x` 和 `enemy_y`,大小为 `enemy_width` 和 `enemy_height`,那么可以这样计算两个矩形的位置和大小:
```python
plane_rect = pygame.Rect(plane_x, plane_y, plane_width, plane_height)
enemy_rect = pygame.Rect(enemy_x, enemy_y, enemy_width, enemy_height)
```
接下来,我们可以使用 `colliderect()` 函数来判断两个矩形是否重叠。如果重叠了,就认为发生了碰撞。完整的代码如下:
```python
import pygame
pygame.init()
# 创建窗口
screen = pygame.display.set_mode((400, 600))
# 加载图片
bg_img = pygame.image.load("bg.jpg")
plane_img = pygame.image.load("plane.png")
enemy_img = pygame.image.load("enemy.png")
# 设置初始位置
plane_x = 150
plane_y = 500
enemy_x = 100
enemy_y = 100
# 设置大小
plane_width = plane_img.get_width()
plane_height = plane_img.get_height()
enemy_width = enemy_img.get_width()
enemy_height = enemy_img.get_height()
# 设置速度
plane_speed = 5
enemy_speed = 3
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 绘制背景
screen.blit(bg_img, (0, 0))
# 移动飞机
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
plane_x -= plane_speed
if keys[pygame.K_RIGHT]:
plane_x += plane_speed
if keys[pygame.K_UP]:
plane_y -= plane_speed
if keys[pygame.K_DOWN]:
plane_y += plane_speed
# 绘制飞机
screen.blit(plane_img, (plane_x, plane_y))
# 移动敌机
enemy_y += enemy_speed
# 绘制敌机
screen.blit(enemy_img, (enemy_x, enemy_y))
# 碰撞检测
plane_rect = pygame.Rect(plane_x, plane_y, plane_width, plane_height)
enemy_rect = pygame.Rect(enemy_x, enemy_y, enemy_width, enemy_height)
if plane_rect.colliderect(enemy_rect):
print("Game over!")
pygame.quit()
exit()
# 更新窗口
pygame.display.update()
```
这样,当飞机和敌机重叠时,程序会打印出 "Game over!" 并退出游戏。
阅读全文