用Python写一个只关于pygame的小游戏
时间: 2023-10-07 16:09:47 浏览: 48
好的,我可以给您提供一个简单的游戏示例,这个游戏是一个小球跳跃的游戏,您可以通过控制小球跳跃来躲避障碍物。
首先,您需要安装pygame库,可以使用以下命令进行安装:
```
pip install pygame
```
接下来,您可以使用以下代码实现游戏的逻辑:
```python
import pygame
import random
# 初始化pygame
pygame.init()
# 颜色定义
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (50, 153, 213)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 窗口尺寸
size = (700, 500)
# 创建一个窗口
screen = pygame.display.set_mode(size)
# 窗口标题
pygame.display.set_caption("Jumping Ball")
# 障碍物类
class Obstacle(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()
def update(self):
self.rect.x -= 5
if self.rect.right < 0:
self.kill()
# 小球类
class Ball(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface([20, 20])
self.image.fill(RED)
self.rect = self.image.get_rect()
self.rect.x = 50
self.rect.y = size[1] - 50
self.vel_y = 0
def update(self):
# 重力加速度
gravity = 0.5
# 速度上限
if self.vel_y < -10:
self.vel_y = -10
# 更新速度和位置
self.vel_y += gravity
self.rect.y += self.vel_y
# 边界检测
if self.rect.bottom > size[1]:
self.rect.bottom = size[1]
self.vel_y = 0
# 障碍物生成函数
def generate_obstacle():
obstacle_height = random.randint(50, 200)
obstacle = Obstacle(GREEN, 30, obstacle_height)
obstacle.rect.x = size[0]
obstacle.rect.y = size[1] - obstacle_height
return obstacle
# 分数显示函数
def display_score(score):
font = pygame.font.Font(None, 36)
text = font.render("Score: " + str(score), True, WHITE)
screen.blit(text, [10, 10])
# 主函数
def main():
# 创建一个小球
ball = Ball()
# 创建一个精灵组
obstacles = pygame.sprite.Group()
# 障碍物生成计时器
obstacle_timer = 0
# 分数计数器
score = 0
# 游戏循环
done = False
while not done:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
ball.vel_y = -10
# 生成障碍物
obstacle_timer += 1
if obstacle_timer == 60:
obstacle_timer = 0
obstacles.add(generate_obstacle())
# 更新小球和障碍物
ball.update()
obstacles.update()
# 碰撞检测
if pygame.sprite.spritecollide(ball, obstacles, False):
done = True
# 绘制屏幕
screen.fill(BLUE)
screen.blit(ball.image, ball.rect)
obstacles.draw(screen)
display_score(score)
pygame.display.flip()
# 分数计数
score += 1
# 退出游戏
pygame.quit()
# 启动游戏
if __name__ == "__main__":
main()
```
希望这个示例对您有所帮助!