- 代码
import pygame
import sys
import random# 初始化Pygame
pygame.init()# 设置屏幕尺寸
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("飞行射击游戏")# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)# 加载飞机图像(你需要自己准备一个飞机图像文件,比如plane.png)
player_image = pygame.image.load('plane.png').convert_alpha()
player_rect = player_image.get_rect()
player_rect.centerx = SCREEN_WIDTH // 2
player_rect.bottom = SCREEN_HEIGHT - 10
player_speed_x = 0# 定义敌人类
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface([50, 50])
self.image.fill(RED)
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, SCREEN_WIDTH - self.rect.width)
self.rect.y = random.randint(-100, -40)
self.speed_y = random.randint(1, 8)def update(self):
self.rect.y += self.speed_y
if self.rect.top > SCREEN_HEIGHT + 10:
self.rect.x = random.randint(0, SCREEN_WIDTH - self.rect.width)
self.rect.y = random.randint(-100, -40)
self.speed_y = random.randint(1, 8)# 创建敌人精灵组
all_enemies = pygame.sprite.Group()
for i in range(8):
enemy = Enemy()
all_enemies.add(enemy)# 设置时钟以控制帧率
clock = pygame.time.Clock()# 游戏主循环
running = True
score = 0
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False# 获取按键状态
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_rect.left > 0:
player_rect.x -= 5
if keys[pygame.K_RIGHT] and player_rect.right < SCREEN_WIDTH:
player_rect.x += 5
if keys[pygame.K_SPACE]:
# 发射子弹(这里省略子弹的具体实现)
pass# 更新敌人位置
all_enemies.update()# 检测碰撞(这里省略碰撞检测的具体实现)
# 如果检测到碰撞,可以增加分数并移除该敌人# 绘制背景(这里省略背景的具体绘制)
screen.fill(BLACK)# 绘制飞机
screen.blit(player_image, player_rect)# 绘制敌人
all_enemies.draw(screen)# 更新屏幕显示
pygame.display.flip()# 控制帧率
clock.tick(60)pygame.quit()
sys.exit()
知识点的总结:
1. Pygame库的使用
初始化Pygame:使用`pygame.init()`来初始化Pygame库,以便使用其提供的功能。
设置屏幕尺寸:使用`pygame.display.set_mode()`来设置游戏的屏幕尺寸和模式。
定义颜色:Pygame使用RGB颜色模式,可以通过元组来定义颜色,如`(255, 0, 0)`表示红色。
加载图像:使用`pygame.image.load()`来加载图像文件,并将其转换为Pygame可以处理的格式。
绘制图像:使用`screen.blit()`方法将图像绘制到屏幕上。
更新屏幕显示:使用`pygame.display.flip()`来更新整个屏幕的显示内容。
2. 精灵(Sprite)的使用
创建精灵类:通过继承`pygame.sprite.Sprite`类来创建自定义的精灵类,如上述代码中的`Enemy`类。
初始化精灵:在精灵类的`__init__`方法中,设置精灵的图像、矩形区域(用于碰撞检测)和其他属性。
更新精灵:在精灵类的`update`方法中,定义精灵的行为,如移动、改变状态等。
创建精灵组:使用`pygame.sprite.Group()`来创建精灵组,可以方便地对多个精灵进行管理和操作。
绘制精灵组:使用精灵组的`draw`方法将组内的所有精灵绘制到屏幕上。
3. 事件处理
获取事件:使用`pygame.event.get()`来获取游戏中的所有事件。
处理事件:根据事件的类型(如`pygame.QUIT`、`pygame.KEYDOWN`等)来执行相应的操作,如退出游戏、处理按键输入等。
4. 按键输入处理
获取按键状态:使用`pygame.key.get_pressed()`来获取当前所有按键的状态。
处理按键输入:根据按键的状态来执行相应的操作,如移动飞机、发射子弹等。
5. 碰撞检测
矩形碰撞检测:使用精灵的矩形区域(`rect`属性)来进行简单的碰撞检测。可以通过比较两个矩形的位置关系来判断是否发生碰撞。
处理碰撞:如果检测到碰撞,可以执行相应的操作,如增加分数、移除敌人等。
6. 控制帧率
设置时钟:使用`pygame.time.Clock()`来创建一个时钟对象。
控制帧率:通过时钟对象的`tick`方法来控制游戏的帧率,以确保游戏的运行速度稳定。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Python小游戏7——飞行射击
发表评论 取消回复