大数跨境
0
0

跑酷游戏python版(可复制源代码)

跑酷游戏python版(可复制源代码) 趣聊科技圈
2024-10-03
0

效果演示

大家好,我是程序员黎明 , 一个专注于分享编程技巧和项目实现的技术博主。今天我要带大家做一个跑酷游戏,这个游戏有一定的难度,但对于零基础和大佬都适合,希望通过这个游戏能让大家有所收获!


游戏介绍

这个跑酷游戏的核心就是让角色不断奔跑,同时躲避各种障碍物,随着时间的推移,游戏的速度会逐渐加快,挑战性也随之增加。


项目步骤如下:

  1. 初始化项目:安装并导入 pygame,设置窗口尺寸和基本参数(颜色、字体等)。
  2. 创建主角类Player:绘制圆角矩形并实现跳跃和重力逻辑。
  3. 创建障碍物类Obstacle:绘制多边形障碍物并让其从屏幕右侧向左移动。
  4. 创建背景类Background:实现背景的滚动效果。
  5. 启动屏幕:创建 show_start_screen() 函数,显示点击开始提示。
  6. 游戏结束提示:实现 show_game_over() 函数,显示“Game Over”。
  7. 主游戏循环:在 game() 中处理事件、更新对象状态、检测碰撞和计算分数。
  8. 运行游戏:通过主程序入口显示启动屏幕,点击后进入游戏。

代码实现

import pygame
import random
# 初始化
pygame.init()
# 屏幕设置
SCREEN_WIDTH, SCREEN_HEIGHT = 800400
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("高级跑酷游戏")
# 颜色定义
WHITE = (255255255)
BLACK = (000)
GREEN = (02550)
RED = (25500)
# 时钟
clock = pygame.time.Clock()
# 字体
font = pygame.font.Font(None36)
large_font = pygame.font.Font(None72)
# 游戏中的主角
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        # 主角加阴影和圆角矩形
        self.image = pygame.Surface((5050), pygame.SRCALPHA)
        # 阴影
        pygame.draw.rect(self.image, (000100), (555050), border_radius=10)
        # 圆角矩形
        pygame.draw.rect(self.image, GREEN, (005050), border_radius=10)
        self.rect = self.image.get_rect()
        self.rect.center = (100, SCREEN_HEIGHT - 75)
        self.gravity = 0
        self.jump_speed = -15
        self.speed = 5
    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_SPACE] and self.rect.bottom >= SCREEN_HEIGHT - 50:
            self.gravity = self.jump_speed
        self.gravity += 1
        self.rect.y += self.gravity
        if self.rect.bottom >= SCREEN_HEIGHT - 50:
            self.rect.bottom = SCREEN_HEIGHT - 50
# 障碍物
class Obstacle(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        # 绘制复杂的多边形障碍物
        self.image = pygame.Surface((random.randint(4060), random.randint(80150)), pygame.SRCALPHA)
        # 多边形障碍物形状
        pygame.draw.polygon(self.image, RED, [(00), (self.image.get_width(), 0), (self.image.get_width()//2, self.image.get_height())])
        self.rect = self.image.get_rect()
        self.rect.x = SCREEN_WIDTH
        self.rect.y = SCREEN_HEIGHT - self.rect.height
    def update(self):
        self.rect.x -= 10
        if self.rect.right < 0:
            self.kill()
# 游戏背景
class Background:
    def __init__(self):
        self.bg_image = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT))
        self.bg_image.fill(WHITE)
        self.x = 0
    def update(self):
        self.x -= 5
        if self.x <= -SCREEN_WIDTH:
            self.x = 0
    def render(self, screen):
        screen.blit(self.bg_image, (self.x, 0))
        screen.blit(self.bg_image, (self.x + SCREEN_WIDTH, 0))
# 显示“游戏结束”文本
def show_game_over(screen):
    game_over_text = large_font.render("Game Over"True, RED)
    screen.blit(game_over_text, (SCREEN_WIDTH // 2 - game_over_text.get_width() // 2, SCREEN_HEIGHT // 2 - game_over_text.get_height() // 2))
    pygame.display.flip()
    pygame.time.wait(2000)  # 停留2秒
# 显示“点击开始”界面
def show_start_screen(screen):
    screen.fill(WHITE)
    start_text = large_font.render("Click to Start"True, BLACK)
    screen.blit(start_text, (SCREEN_WIDTH // 2 - start_text.get_width() // 2, SCREEN_HEIGHT // 2 - start_text.get_height() // 2))
    pygame.display.flip()
    # 等待玩家点击鼠标或按键
    waiting = True
    while waiting:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN:
                waiting = False
# 主游戏循环
def game():
    running = True
    player = Player()
    background = Background()
    all_sprites = pygame.sprite.Group()
    obstacles = pygame.sprite.Group()
    all_sprites.add(player)
    score = 0
    spawn_obstacle = pygame.USEREVENT + 1
    pygame.time.set_timer(spawn_obstacle, 1500)
    while running:
        screen.fill(WHITE)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            if event.type == spawn_obstacle:
                obstacle = Obstacle()
                all_sprites.add(obstacle)
                obstacles.add(obstacle)
        # 更新元素
        background.update()
        all_sprites.update()
        # 碰撞检测
        if pygame.sprite.spritecollide(player, obstacles, False):
            show_game_over(screen)
            running = False
        # 绘制背景
        background.render(screen)
        # 绘制精灵
        all_sprites.draw(screen)
        # 计算分数
        score += 1
        score_text = font.render(f"Score: {score}"True, BLACK)
        screen.blit(score_text, (1010))
        pygame.display.flip()
        clock.tick(60)
    pygame.quit()
# 启动游戏
if __name__ == "__main__":
    show_start_screen(screen)  # 显示点击开始的界面
    game()  # 启动游戏

代码整体解释

这个游戏用到了pygame库,首先,我们得初始化屏幕、设置颜色和字体,然后画了个小方块当主角,按空格键就能让它跳起来,还加了个重力效果,让它会掉下来。然后,我们还生成了一些红色的障碍物,它们会从右边移动过来,碰到就算输。背景还可以滚动,看起来像真的在跑一样。最后呢,游戏还能计分,结束时会显示分数。


结尾

这个项目是一个非常不错的入门跑酷游戏,它不仅展示了Python中如何使用Pygame库,还可以根据自己的想法进行扩展,比如增加音效、难度调节、不同的角色形象等。希望通过这次学习,大家对游戏开发有了更深入的理解。我们下期再见!


【声明】内容源于网络
0
0
趣聊科技圈
🧐探索科技,发现乐趣。🤩带你玩遍科技好物!
内容 511
粉丝 0
趣聊科技圈 🧐探索科技,发现乐趣。🤩带你玩遍科技好物!
总阅读63
粉丝0
内容511