再写一个pygame简单小游戏代码
时间: 2023-08-13 09:40:24 浏览: 168
使用Python写一个小游戏
好的,这里是另一个 Pygame 简单小游戏示例:
``` python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 创建屏幕
screen = pygame.display.set_mode((500, 500))
# 设置标题
pygame.display.set_caption("简单小游戏2")
# 创建时钟
clock = pygame.time.Clock()
# 创建玩家
class Player(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.x = 250
self.rect.y = 450
self.change_x = 0
self.change_y = 0
def changespeed(self, x, y):
self.change_x += x
self.change_y += y
def update(self):
self.rect.x += self.change_x
self.rect.y += self.change_y
if self.rect.x < 0:
self.rect.x = 0
if self.rect.x > 500 - self.rect.width:
self.rect.x = 500 - self.rect.width
# 创建敌人
class Enemy(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(500 - width)
self.rect.y = random.randrange(-100, -height)
self.change_y = random.randrange(1, 5)
def update(self):
self.rect.y += self.change_y
if self.rect.y > 500:
self.rect.y = random.randrange(-100, -self.rect.height)
self.rect.x = random.randrange(500 - self.rect.width)
# 创建所有精灵组
all_sprites_list = pygame.sprite.Group()
# 创建敌人精灵组
enemy_list = pygame.sprite.Group()
# 创建玩家
player = Player(pygame.BLUE, 20, 20)
all_sprites_list.add(player)
# 创建敌人
for i in range(10):
enemy = Enemy(pygame.RED, 20, 20)
all_sprites_list.add(enemy)
enemy_list.add(enemy)
# 游戏循环
done = False
score = 0
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.changespeed(-3, 0)
if event.key == pygame.K_RIGHT:
player.changespeed(3, 0)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
player.changespeed(3, 0)
if event.key == pygame.K_RIGHT:
player.changespeed(-3, 0)
# 更新所有精灵
all_sprites_list.update()
# 碰撞检测
enemy_hit_list = pygame.sprite.spritecollide(player, enemy_list, False)
if len(enemy_hit_list) > 0:
done = True
# 更新得分
score += 1
if score % 100 == 0:
enemy = Enemy(pygame.RED, 20, 20)
all_sprites_list.add(enemy)
enemy_list.add(enemy)
# 绘制屏幕
screen.fill(pygame.WHITE)
all_sprites_list.draw(screen)
pygame.display.flip()
# 限制帧率
clock.tick(60)
# 展示最终得分
font = pygame.font.Font(None, 36)
text = font.render("最终得分:" + str(score), True, pygame.BLACK)
text_rect = text.get_rect(center=(250, 250))
screen.blit(text, text_rect)
pygame.display.flip()
# 等待 3 秒后退出 Pygame
pygame.time.wait(3000)
pygame.quit()
```
在这个游戏中,玩家可以使用左右箭头键控制移动,躲避从上方落下的敌人方块并获得得分。每获得 100 分,就会生成一个新的敌人。当玩家与敌人碰撞时,游戏结束,展示最终得分。您可以在此基础上进行扩展和改进。
阅读全文