# pygame **Repository Path**: eziotauditore/pygame ## Basic Information - **Project Name**: pygame - **Description**: 使用pygame间的设计了一款小游戏。 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2020-12-28 - **Last Updated**: 2023-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 拍苍蝇--pygame项目 ## 项目介绍 ​ 拍蚊子游戏是Acer小组使用pygame开发的一款小游戏。 ​ 项目立项于2020.12.26,预计结束日期2020.12.29日。 ### 团队介绍 组长:李漪龙 组员:余世杰,李崇恺,陶征 ### 成员分工 程序:李漪龙,陶征 美工:李崇恺 音乐:余世杰 测试:陶征 ## 游戏介绍 ## 游戏玩法 ​ 在`开始界面`点击`开始游戏`后进入游戏主界面,左侧是我们游戏区域,会在屏幕上不断出现烦人的`蚊子`,拿起你的`蚊子拍`去消灭它们吧,右边是我们的得分情况,游戏难度等级,和剩余的机会,在不断的战斗中随着得分的增加它们也会越来越**机灵**,蚊子就会越来越快的出现和消失,当你漏掉10只蚊子时,游戏就会结束。 ## 游戏设计 ### 游戏架构图 ![拍苍蝇_架构图](./拍苍蝇_架构图.png) ### 游戏界面设计 ![拍苍蝇_架构图](./界面设计参考模型.png) ### 游戏功能设计 #### 目标出现与互动 ​ 游戏中会随机在一定范围内生成苍蝇,鼠标拍打苍蝇,如果拍到苍蝇就消失 ```python (target_x,target_y) = (random.randint(0,550),random.randint(0,550)) # 获取随机坐标 gameScreen.blit(image_target,(target_x,target_y)) # 在随机坐标范围内生成目标 area_target = pygame.Rect(target_x,target_y,50,50) # 创建目标按钮 pygame.display.update() # 刷新屏幕显示内容 pygame.time.delay(speed) # 延迟下次生成,间隔就是时间 for event in pygame.event.get(): # 监听案件 if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN and area_target.collidepoint(event.pos): music_hit.play(0) # 打击音效 # 击中目标,刷新背景板 gameScreen.blit(image_gameScreen_GameImage,[0,0]) pygame.display.flip() # 记录击杀数 global target_kill target_kill += 1 pygame.time.delay(20) ``` #### 暂停功能 ​ 暂停游戏,点击暂停游戏,再次点击即可继续运行游戏 ```shell global running # 使用running来控制暂停状态 running = True # 当激活暂停按钮时,开启暂停状态 while running: # 使用循环激活暂停状态 clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN and area_gameScreen_QuitGame.collidepoint(event.pos): cick() end() elif event.type == pygame.MOUSEBUTTONDOWN and area_gameScreen_PauseGame.collidepoint(event.pos): # 如果再次点击暂停按钮,就关闭暂停状态 cick() running = False # 关闭循环,暂停结束,游戏继续运行 pygame.time.delay(1000) ``` 在游戏过程中你可以暂停游戏,让画面停止,你也可以继续游戏使画面继续动起来 #### 游戏分数系统 ​ 在游戏中,成功打掉一只苍蝇,会获得一个短暂的事件buff,并且会得到10分,分数越多,级别越高,苍蝇出现的速度越快。如果有10个苍蝇从你手上跑掉的话,游戏就会失败哦。 | 分数 | 级别 | 速度(秒) | | -------- | ---- | ---------- | | 0-100 | 1 | 1 | | 100-200 | 2 | 0.9 | | 200-300 | 3 | 0.8 | | 300-400 | 4 | 0.7 | | 400-500 | 5 | 0.6 | | 500-600 | 6 | 0.5 | | 600-700 | 7 | 0.4 | | 700-800 | 8 | 0.3 | | 800-900 | 9 | 0.2 | | 900-1000 | 10 | 0.1 | ```shell global score,Lv,speed,target_live # 公开计分板变量 score = target_kill*10 # 计算分数 Lv = target_kill//10 # 计算等级 speed = 1000 - target_kill*10 # 计算速度 target_live = i - target_kill # 计算剩余机会 # 游戏结束判断 if target_live >10: end() # 如果十次没打中,游戏结束 # 格式化分数字符对象 font_Lv = myfont.render((str)(Lv),True,color_black) font_score = myfont.render((str)(score),True,color_black) font_target_live = myfont.render((str)(10-target_live),True,color_black) # 输出部分:分数,等级,剩余次数 gameScreen.blit(font_score,[620,20]) gameScreen.blit(font_Lv,[620,75]) gameScreen.blit(font_target_live,[620,130]) pygame.display.update() ``` ## 开发进度 ### 2020.12.27 ​ 项目立项,人员分工开始进行素材收集,功能设计。 程序:简单程序框架已形成,可以满足基本的出现苍蝇,随机出现苍蝇,多个界面的切换。 美术:无 音乐:收集素材 ### 2020.12.28 ​ 项目框架完成,功能成功实现,素材使用完毕。 程序:程序功能实现完毕,素材也成功衔接。 美术:素材提供完毕,已接入仓库 音乐:素材整理完毕,已接入素材