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

做羊水亲子鉴定网站/佛山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.cadmedia.cn/news/452.html

相关文章:

  • 惠州网络问政平台/seo西安
  • 荆门哪里有专门做企业网站的/网络营销有哪些例子
  • json做网站的数据库/搜索关键词排名优化服务
  • 佛山家居网站全网营销/优化大师有必要安装吗
  • 室内设计接单网站/seo排名谁教的好
  • 河南省建设厅网站职称网/淄博网络推广公司哪家好
  • 成都h5网站建设/整站优化seo平台
  • 深圳系统开发高端网站建设/优化建议
  • 通辽做网站哪家好/seo建站要求
  • 有哪几个平台做网站/上海推广系统
  • 福建建设管理中心网站/个人如何在百度上做广告
  • 中国十大房地产公司排名/信息流广告优化
  • 塘沽做网站公司/百度浏览器网页版入口
  • 营销型网站建设培训/株洲专业seo优化
  • qq业务网站平台/重庆森林经典台词罐头
  • 上饶网站建设/建网站的软件有哪些
  • 中文网站模板免费下载/怎么在百度上注册店铺
  • 做旅游攻略网站好/策划方案怎么做
  • 深圳商城网站建设报价/西安seo
  • 怎么查网站在哪备案/长沙百度
  • 百度做的网站后台怎么建设/百度竞价推广开户联系方式
  • 保障性住房建设投资中心网站/电脑培训学校在哪里
  • 温州专业网站建设/seo关键词优化软件怎么样
  • 林州风景网站建设的目的/客服外包平台
  • html网站引导页模板/源云推广
  • 网站的风格包含的因素/北京百度公司地址在哪里
  • axcure做网站ui/网络推广公司简介
  • 全球做的比较好的网站/成都网站建设创新互联
  • 辽宁省建设工程招投标协会网站/千万不要做手游推广员
  • wordpress 按点击调用热门文章/灯塔网站seo