当前位置: 首页 > wzjs >正文

网站建设做网站天津百度seo

网站建设做网站,天津百度seo,创意设计师,如何选择网站建设公司用python和Pygame库实现“跳过障碍”游戏 游戏开发 跳过障碍游戏流程说明: 启动游戏后显示开始界面(包含游戏说明) 按空格键进入游戏 游戏过程中躲避障碍物获取分数 碰撞后显示结束界面(包含最终得分) 按空格键…

用python和Pygame库实现“跳过障碍”游戏

游戏开发

跳过障碍游戏流程说明:

启动游戏后显示开始界面(包含游戏说明)

按空格键进入游戏

游戏过程中躲避障碍物获取分数

碰撞后显示结束界面(包含最终得分)

按空格键可立即开始新一局游戏

运行效果:

游戏体验优化建议(代码中修改):

可通过调节OBSTACLE_SPEED改变游戏难度(当前值5)

修改SPAWN_RATE调整障碍物生成频率(当前60帧/个)

调整JUMP_POWER和GRAVITY改变跳跃手感(当前15和0.5)

源码如下:

import pygame
import sys# 初始化 Pygame
pygame.init()# 游戏窗口设置
WIDTH, HEIGHT = 800, 600
win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("简易跳过障碍")# 颜色定义
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
RED = (255, 0, 0)
GROUND_COLOR = (0, 128, 0)
BLACK = (0, 0, 0)# 玩家设置
PLAYER_SIZE = 50
JUMP_POWER = 15
GRAVITY = 0.5# 地面设置
GROUND_HEIGHT = 50class Obstacle:"""障碍物类,包含碰撞体和计分标记"""def __init__(self, x, y, width, height):self.rect = pygame.Rect(x, y, width, height)self.passed = False  # 是否已经通过玩家并计分# 障碍物参数设置
OBSTACLE_WIDTH = 40
OBSTACLE_HEIGHT = 120  # 增加高度确保碰撞
OBSTACLE_SPEED = 5
SPAWN_RATE = 60  # 障碍物生成间隔帧数# 游戏状态常量
START_SCREEN = 0
PLAYING = 1
GAME_OVER = 2def init_game():"""初始化游戏数据"""global player_x, player_y, player_vel_y, obstacles, score, spawn_timerplayer_x = 50player_y = HEIGHT - PLAYER_SIZE  # 玩家初始位置在地面player_vel_y = 0obstacles = []score = 0spawn_timer = 0def draw_start_screen():"""绘制包含游戏说明的开始界面"""win.fill(WHITE)# 标题文字title_font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 64)title_text = title_font.render("跳过障碍", True, BLUE)title_rect = title_text.get_rect(center=(WIDTH//2, HEIGHT//3))# 游戏说明instr_font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 36)instructions = ["游戏规则:","按 空格键 跳跃躲避障碍","坚持越久得分越高","碰到红色障碍物游戏结束","按 空格键 开始游戏"]y_offset = HEIGHT//2for text in instructions:surf = instr_font.render(text, True, BLACK)rect = surf.get_rect(center=(WIDTH//2, y_offset))win.blit(surf, rect)y_offset += 50win.blit(title_text, title_rect)pygame.display.update()def draw_game_over_screen(final_score):"""绘制游戏结束界面"""win.fill(WHITE)over_font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 64)over_text = over_font.render("游戏结束", True, RED)over_rect = over_text.get_rect(center=(WIDTH//2, HEIGHT//3))score_font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 48)score_text = score_font.render(f"最终得分: {final_score}", True, BLACK)score_rect = score_text.get_rect(center=(WIDTH//2, HEIGHT//2))instr_font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 36)restart_text = instr_font.render("按 空格键 重新开始", True, BLACK)restart_rect = restart_text.get_rect(center=(WIDTH//2, HEIGHT*2//3))win.blit(over_text, over_rect)win.blit(score_text, score_rect)win.blit(restart_text, restart_rect)pygame.display.update()def game_loop():"""游戏主逻辑循环"""global player_y, player_vel_y, spawn_timer, scoreclock = pygame.time.Clock()game_state = START_SCREENinit_game()font = pygame.font.Font("C:\\Windows\\Fonts\\simsun.ttc", 36)while True:# 事件处理for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()if event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE:if game_state == START_SCREEN:game_state = PLAYINGelif game_state == GAME_OVER:init_game()game_state = PLAYINGelif game_state == PLAYING and player_y >= HEIGHT - PLAYER_SIZE:  # 确保在地面才能跳跃player_vel_y = -JUMP_POWERif game_state == PLAYING:# 物理模拟player_vel_y += GRAVITYplayer_y += player_vel_y# 地面碰撞检测if player_y > HEIGHT - PLAYER_SIZE:player_y = HEIGHT - PLAYER_SIZEplayer_vel_y = 0# 障碍物生成(每SPAWN_RATE帧生成一个)spawn_timer += 1if spawn_timer >= SPAWN_RATE:# 生成位置调整:底部与地面接触new_obstacle = Obstacle(WIDTH,  # 初始在屏幕右外侧HEIGHT - OBSTACLE_HEIGHT,  # 直接接触地面OBSTACLE_WIDTH,OBSTACLE_HEIGHT)obstacles.append(new_obstacle)spawn_timer = 0# 移动障碍物并检测通过player_rect = pygame.Rect(player_x, player_y, PLAYER_SIZE, PLAYER_SIZE)for obstacle in obstacles[:]:# 移动障碍物obstacle.rect.x -= OBSTACLE_SPEED# 计分检测:障碍物完全通过玩家且未被标记if obstacle.rect.right < player_rect.left and not obstacle.passed:score += 1obstacle.passed = True  # 标记为已计分# 移除移出屏幕的障碍物if obstacle.rect.right < 0:obstacles.remove(obstacle)# 碰撞检测(使用像素完美碰撞检测)if player_rect.colliderect(obstacle.rect):game_state = GAME_OVER# 绘制游戏画面win.fill(WHITE)# 绘制地面pygame.draw.rect(win, GROUND_COLOR, (0, HEIGHT - GROUND_HEIGHT, WIDTH, GROUND_HEIGHT))# 绘制玩家pygame.draw.rect(win, BLUE, player_rect)# 绘制障碍物for obstacle in obstacles:pygame.draw.rect(win, RED, obstacle.rect)# 显示得分score_text = font.render(f"得分: {score}", True, BLACK)win.blit(score_text, (10, 10))pygame.display.update()elif game_state == START_SCREEN:draw_start_screen()elif game_state == GAME_OVER:draw_game_over_screen(score)clock.tick(60)if __name__ == "__main__":game_loop()

打包发布

PyInstaller 是一个流行的 Python 打包工具,可以将 Python 应用程序及其依赖项打包成单个可执行文件(如 Windows 上的.exe 文件)。PyInstaller 的核心功能是将 Python 脚本及其依赖的模块和资源文件打包成一个独立的可执行文件。

对于非技术用户来说,运行一个独立的可执行文件比安装 Python 环境和依赖库要简单得多。

对于开发者来说,可以将程序打包成一个文件或一个目录,方便分发和部署。

PyInstaller针对Windows、macOS和Linux进行了测试。但是,它不是交叉编译器;要制作Windows应用程序,您可以在Windows上运行PyInstaller,要制作Linux应用程序,您可以在Linux上运行它等。

官方文档 https://pyinstaller.org/en/stable/

关于pyinsatller安装使用可参见:

使用pyinsatller将python程序项目发布为可执行文件(修订版)

https://blog.csdn.net/cnds123/article/details/115254418

我这里将本游戏命名为: 跳过障碍.py ,将之复制到文件夹 “D:\跳过障碍游戏”中。

打开命令行(终端)窗口,并导航到. py文件所在的目录,然后使用以下命令构建您的应用程序:

cd /d D:\跳过障碍游戏

pyinstaller -F -w 跳过障碍.py

-F或--onefile:将 Python 脚本及其所有依赖项打包成一个单独的可执行文件(例如 .exe 文件)。

使用 -w 或 --windowed 选项,你可以确保打包后的程序在运行时不显示控制台窗口,从而提供更干净的用户体验。

OK!

http://www.dtcms.com/wzjs/8628.html

相关文章:

  • 深圳企业网站建设方案建站之星官网
  • 音乐网站后台管理模板最新seo课程
  • 办公室装饰百度首页优化排名
  • 做网站使用独享服务器的优点嘉峪关seo
  • 韩都衣舍的网站建设百度产品大全首页
  • 女同wordpressseo外贸推广
  • 武汉哪个网站建设最好合肥seo推广公司
  • 网站存在风险什么意思app推广拉新平台
  • 免费网络空间黄山网站seo
  • 网站建设制作包括哪些国内可访问的海外网站和应用
  • 上海网站建设 推荐站霸网络网站推广专家
  • 做哪类网站比较赚钱怎么建立网站?
  • 自己做网站要买什么武汉大学人民医院怎么样
  • 商城网站建设模板百度云网盘搜索引擎入口
  • 品牌建设实施纲要天津seo推广
  • 库尔勒网站商城建设优化神马网站关键词排名价格
  • 网站开发方案案例百度识图官网
  • wordpress 主题2周前网站seo是什么
  • 中企动力 网站报价网络营销推广渠道有哪些
  • 企业手机网站建设价位竞价推广公司
  • 信息聚合网站怎么做怎么优化推广自己的网站
  • 做网站运营有前景吗最近一周新闻大事摘抄2022年
  • 做网站的创业计划书网络推广服务协议
  • 手机网站的必要性营销网站定制
  • 自己做的网站找不到了win7优化设置
  • 网站做302跳转的意义做推广哪个平台效果好
  • ppt制作软件模板网站百度自然搜索排名优化
  • 做网站投入免费网站seo排名优化
  • 莆田市商城网站建设我想做电商怎么加入
  • 荣成网站建设搜索引擎网站排名优化方案