资讯专栏INFORMATION COLUMN

Python+Pygame,见缝插针游戏的实现途径

89542767 / 674人阅读


  小编写这篇文章的主要目的,是给大家介绍下,关于Python+Pygame,这一见缝插针游戏实习的途径,下面是具体的代码实例,希望可以给各位读者带来帮助。


  前言:


  奶奶说:


  这个夏天真的是有点热啊。


  热的简直让人无法忍受。。。


  身体一动就会出汗。。。。。


  想玩点小游戏都没地方玩了。。。


  《见缝插针》这个游戏好玩吗?《见缝插针》它到底怎么玩呢?


  只要是你能想到的,这些游戏代码,我统统都会敲!「良心好游戏推荐」——栗子同学强势来袭!


  每天都会推荐好玩的小游戏。小编今天推荐这款游戏叫《见缝插针》,这是一个考验玩家首脑协调、反应力的小游戏,这种游戏很常见,居然还没有推荐过!今天赶紧来补上这个类型叭。


  (在那种超市或者彩妆店铺门口经常看见,话说我从来没有闯关过呢!!)

0.png

  PS:小编有话说


  据说见缝插针游戏全世界只有六个人能玩到20关,其实不然,小编10分钟之内就能玩到19关,


  哈哈哈,不吹牛了,具体是什么情况就让小编来给大家先用代码制作一款见缝插针的Python小游戏叭!看看你能玩儿到第几关吖?


  《见缝插针》游戏简介——


  关键词:休闲、反应力、协调性、闯关、操作、技巧。


  游戏平台:Python版本—栗子同学哦


  氪金指数:0氪金。


  推荐星数:3.5星(满星5星)


  难度星数:4星(满星5星)


  小编简评:《见缝插针》是一款考验玩家协调反应力的闯关小游戏。

1.png

  一、运行环境


  1)环境安装


  Python3、Pycharm、Pygame、pgzero、numpy。部分自带模块就不展示啦。


  第三方库的安装:pip install pygame或者带镜像源


  pip install-i https://pypi.douban.com/simple/+模块名


  2)素材(图片、音乐等)


  可自行选择喜欢的图片,背景音乐等等。图片需要放在images文件夹中,音频放在music文件夹中。images和music文件夹需要和新建的py文件放在同一级。


  二、代码展示


</>复制代码

  1.   import pgzrun
  2.   import random
  3.   TITLE="Python见缝插针"#窗口标题
  4.   background=Actor('background')#导入背景图片
  5.   needles=[]#存放发射针的列表
  6.   startNeedle=Actor('needle',anchor=(170+50,1.5))#导入针的图片,并设置锚点(旋转轴心)
  7.   startNeedle.x=220
  8.   startNeedle.y=300
  9.   difficulty_Needles=[]#存放干扰的针
  10.   rotateSpeed=1#针旋转的速度,默认设置为1
  11.   score=8#针的数量,默认设置为8
  12.   radius=80#圆盘的半径
  13.   record_score=8#记录针的数量,方便切换关卡
  14.   level=1#关卡
  15.   record_speed=1#记录速度
  16.   flag=0#设置标志位,来画干扰的针
  17.   r,g,b=random.randint(0,255),random.randint(0,255),random.randint(0,255)#随机圆盘的颜色
  18.   def draw():#绘制模块,每帧重复执行
  19.   global flag#全局变量
  20.   if not flag:#将干扰的针添加进列表
  21.   for i in range(int(rotateSpeed)+3):
  22.   difficulty_Needle2=Actor('needle',anchor=(170+50,1.5))
  23.   difficulty_Needle2.angle=(360/(int(rotateSpeed)+2))*i
  24.   difficulty_Needle2.x=400
  25.   difficulty_Needle2.y=300
  26.   needles.append(difficulty_Needle2)
  27.   if rotateSpeed!=0:
  28.   flag=1
  29.   screen.fill('white')#白色背景
  30.   screen.draw.filled_circle((400,300),radius,(r,g,b))#画圆盘
  31.   screen.draw.text("第{}关".format(level),(320,10),fontsize=60,fontname="simhei",color='black')#显示关卡
  32.   if score&lt;10:#显示分数,这里用判断语句来区分一位数和两位数,位置稍有不同
  33.   screen.draw.text(str(score),(385,275),fontsize=80,color='white')
  34.   else:
  35.   screen.draw.text(str(score),(370,275),fontsize=80,color='white')
  36.   screen.draw.text("Speed:{}".format(rotateSpeed),(20,270),fontsize=35,color='red')#显示速度
  37.   startNeedle.draw()#画初始的针
  38.   for difficulty_Needle in difficulty_Needles:#循环遍历画出干扰的针
  39.   difficulty_Needle.draw()
  40.   for needle in needles:#循环遍历画出发射出去的针
  41.   needle.draw()
  42.   else:#失败后的场景
  43.   screen.clear()#清屏
  44.   background.draw()#画背景
  45.   screen.draw.text('Game Over!',(200,200),fontsize=100,color='red')#画文本
  46.   screen.draw.text('再试一次',(230,400),fontsize=25,fontname="simhei",color='green')
  47.   screen.draw.text('退出游戏',(450,400),fontsize=25,fontname="simhei",color='green')
  48.   def update():#更新模块,每帧重复执行
  49.   #让针旋转
  50.   for needle in needles:
  51.   needle.angle+=rotateSpeed
  52.   for difficulty_Needle in difficulty_Needles:
  53.   difficulty_Needle.angle+=rotateSpeed
  54.   def on_key_down():#按键检测
  55.   global rotateSpeed,score,level,record_score,record_speed,flag#全局变量
  56.   newNeedle=Actor('needle',anchor=(170+50,1.5))#新建一根针
  57.   newNeedle.x=400#新建针的x坐标
  58.   newNeedle.y=300#新建针的y坐标
  59.   for needle in needles:#判断发射针是否碰到其他针,如果碰到就停止转动
  60.   if newNeedle.colliderect(needle):
  61.   rotateSpeed=0
  62.   music.play_once("失败")#失败音效
  63.   needles.append(newNeedle)#将新创建的针加入列表
  64.   if rotateSpeed&gt;0:
  65.   score-=1#每发射一根针的数量就减1
  66.   if score==0:#当针的数量减到零时,要切换关卡,增加难度
  67.   needles.clear()#清除发射针列表
  68.   record_score+=2#针的数量变多
  69.   score=record_score
  70.   level+=1#关卡变更
  71.   rotateSpeed+=0.5#速度加快
  72.   record_speed=rotateSpeed
  73.   flag=0#将标志位置零,重新绘制干扰针
  74.   music.play_once('发射')#发射音效
  75.   def on_mouse_down(pos,button):#鼠标检测
  76.   global rotateSpeed,record_speed,score,flag#全局变量
  77.   if button==mouse.LEFT and pos[0]&gt;445 and pos[0]&lt;555 and pos[1]&gt;395 and pos[1]&lt;435:#如果鼠标左键按下退出游戏
  78.   exit()#退出游戏
  79.   if button==mouse.LEFT and pos[0]&gt;225 and pos[0]&lt;335 and pos[1]&gt;395 and pos[1]&lt;435:#如果鼠标左键按下再试一次
  80.   rotateSpeed=record_speed#重置速度
  81.   needles.clear()#清空发射针的列表
  82.   score=record_score#重置针的数量
  83.   flag=0#将标志位置零,用于重新绘制干扰针
  84.   pgzrun.go()#开始执行游戏

  

      三、效果展示

4.gif

  总结


  玩家需要在合适的时机,在关卡内插完针,大多数关卡都很简单,9、10、11关、、、等级越高会比越难一点,稍微操作不慎就凉凉了!


  到此这篇关于Python+Pygame实现之见缝插针游戏的实现的文章就介绍到这了,希望可以给各位读者带来更多的帮助。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127774.html

相关文章

  • ❤️ 如何在 Pygame 中移动你游戏角色 ❤️

    作者:海拥 主页:https://haiyong.blog.csdn.net/   Pygame是一组跨平台的 Python 模块,专为编写视频游戏而设计。它包括旨在与 Python 编程语言一起使用的计算机图形和声音库。您可以使用 pygame 创建不同类型的游戏,包括街机游戏、平台游戏等等。 使用的图像:  你可以控制玩家的移动。为此,首先使用 pygame 的 display.set...

    lookSomeone 评论0 收藏0
  • 教你使用Pythonpygame模块实现拼图游戏

      pygame模块是一个可以跨平台的模块,主要就是作为游戏开发来进行使用的,那么,怎么才能够实现其游戏开发的技能了?比如说,怎么实现使用pygame去实现拼图的游戏呢?下面就给大家详细解答下。  pygame介绍  Python Pygame是一款专门为开发和设计2D电子游戏而生的软件包,它支Windows、Linux、Mac OS等操作系统,具有良好的跨平台性。Pygame由Pete Shin...

    89542767 评论0 收藏0
  • Python pygame如何实现拼图游戏?下文给大家解答

      Python pygame作为一门常见的技能,其实,它的应用范围还是比较的广泛的,那么,它是怎么实现其拼图游戏呢?下面就以案例的形式,去给大家做个解答,下面就给大家详细解答下。  pygame介绍  Python Pygame是一款专门为开发和设计2D电子游戏而生的软件包,它支Windows、Linux、Mac OS等操作系统,具有良好的跨平台性。Pygame由Pete Shinners于20...

    89542767 评论0 收藏0
  • Python学习之路11-武装飞船

    摘要:和标志,用于表示飞船是否正在移动,用于实现飞船在不松开按键下连续移动。重写了函数,用于绘制飞船模块该模块主要是集中处理游戏中发生的各种事件。函数用于监听游戏的事件,比如,它表示游戏推出事件和分别表示键盘按下与松开事件。 《Python编程:从入门到实践》笔记。本章主要学习如何使用pygame编写一个简单的小飞机打外星人的游戏,由于本人对用python写游戏并不是特别感兴趣,所以主要是看...

    李昌杰 评论0 收藏0
  • python学习教程,python版大富翁游戏开发源代码分享

    摘要:物网王璞劼理工大富翁基于的一个大富翁游戏游戏地图为自己使用各种网络素材制作各种按钮和选项,小图标等也是使用制作。玩家在大富翁的主要操作是投掷骰子,由随机函数进行判定然后进行移动,进行位置判断,然后开始进行相关的判定。 本文实例为大家分享了python版大富翁游戏的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- 在学习过程中有什么不懂得可以加我...

    davidac 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<