📅  最后修改于: 2023-12-03 15:33:49.870000             🧑  作者: Mango
Pygame 是一个用于制作游戏的 python 库。在这个教程中,我们将创建一个简单的射击游戏。我们将演示如何使用 pygame 库来创建游戏,并向您介绍一些常用的 pygame 函数和方法。
在开始创建游戏之前,您需要安装 pygame 库。您可以通过以下命令在终端中安装 pygame:
pip install pygame
在 pygame 中,我们使用 Pygame 的 display 模块来创建窗口。以下是如何创建一个简单的 Pygame 窗口:
import pygame
pygame.init()
# 创建窗口
window = pygame.display.set_mode((500,500))
# 游戏循环
while True:
# 事件循环
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
# 刷新窗口
pygame.display.update()
在游戏中添加背景是很重要的。在 Pygame 中,我们可以使用 Pygame 的 surface 模块来创建一个背景,并将其放置在窗口中。以下是如何添加一个简单的背景:
# 创建背景
background = pygame.Surface(window.get_size())
background.fill((255, 255, 255))
# 将背景放置在窗口中
window.blit(background, (0, 0))
在我们的射击游戏中,我们需要一个玩家角色和一些敌人。在 Pygame 中,我们可以使用 Pygame 的 sprite 模块来创建角色。以下是如何创建一个玩家角色:
# 创建玩家角色
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface((50, 50))
self.image.fill((0, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = 225
self.rect.y = 450
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 5
elif keys[pygame.K_RIGHT]:
self.rect.x += 5
# 将玩家角色添加到精灵组中
player = Player()
all_sprites = pygame.sprite.Group()
all_sprites.add(player)
我们还需要一些敌人来让游戏变得更有挑战性。在 Pygame 中,我们可以创建敌人角色,并使用精灵组来管理它们。以下是如何创建一个简单的敌人:
# 创建敌人角色
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = 225
self.rect.y = 50
def update(self):
self.rect.y += 3
if self.rect.y > 500:
self.rect.y = -50
# 将敌人添加到精灵组中
enemies = pygame.sprite.Group()
for i in range(0, 5):
enemy = Enemy()
enemy.rect.x += i * 100
enemies.add(enemy)
all_sprites.add(enemies)
在我们的游戏中,我们需要检测玩家是否与敌人碰撞。在 Pygame 中,我们可以使用 Pygame 的 sprite 模块来检测碰撞。以下是如何检测玩家是否与敌人碰撞:
# 碰撞检测
if pygame.sprite.spritecollide(player, enemies, False):
print("Game Over")
pygame.quit()
quit()
最后,我们需要添加一些射击。在 Pygame 中,我们可以使用 Pygame 的 sprite 模块来创建子弹,并在游戏循环中更新它们。以下是如何添加一个简单的射击功能:
# 创建子弹角色
class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.Surface((10, 20))
self.image.fill((255, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
self.rect.y -= 5
# 射击
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
bullet = Bullet(player.rect.x + 20, player.rect.y - 20)
bullets.add(bullet)
all_sprites.add(bullet)
# 更新子弹
bullets.update()
import pygame
pygame.init()
# 创建窗口
window = pygame.display.set_mode((500,500))
# 创建背景
background = pygame.Surface(window.get_size())
background.fill((255, 255, 255))
# 创建玩家角色
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface((50, 50))
self.image.fill((0, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = 225
self.rect.y = 450
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 5
elif keys[pygame.K_RIGHT]:
self.rect.x += 5
# 创建敌人角色
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = 225
self.rect.y = 50
def update(self):
self.rect.y += 3
if self.rect.y > 500:
self.rect.y = -50
# 创建子弹角色
class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.Surface((10, 20))
self.image.fill((255, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
self.rect.y -= 5
# 将角色添加到精灵组中
player = Player()
enemies = pygame.sprite.Group()
bullets = pygame.sprite.Group()
all_sprites = pygame.sprite.Group()
all_sprites.add(player)
# 将敌人添加到精灵组中
for i in range(0, 5):
enemy = Enemy()
enemy.rect.x += i * 100
enemies.add(enemy)
all_sprites.add(enemies)
# 游戏循环
while True:
# 事件循环
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
# 射击
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
bullet = Bullet(player.rect.x + 20, player.rect.y - 20)
bullets.add(bullet)
all_sprites.add(bullet)
# 更新玩家角色
player.update()
# 更新敌人角色
enemies.update()
# 更新子弹
bullets.update()
# 碰撞检测
if pygame.sprite.spritecollide(player, enemies, False):
print("Game Over")
pygame.quit()
quit()
# 渲染画面
window.blit(background, (0, 0))
all_sprites.draw(window)
# 刷新窗口
pygame.display.update()
在本教程中,我们介绍了如何使用 Pygame 创建一个简单的射击游戏,并学习了 Pygame 中许多常用的函数和方法。虽然这只是一个简单的示例程序,但它可以作为您开始使用 Pygame 的起点。我们希望您能够继续探索 Pygame 并创造出更出色的游戏!