Python+Pygame实现之见缝插针游戏的实现

 更新时间:2022年07月13日 08:16:22   作者:嗨!栗子同学  
这篇文章主要为大家介绍了如何利用Python中的Pygame模块实现见缝插针游戏,文中的示例代码讲解详细,对我们学习Python游戏开发有一定帮助,需要的可以参考一下

前言

姥姥说:

炎炎夏日热浪来袭。

有点让人无法忍受。。。

一动就是一身汗。。。。。

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

《见缝插针》游戏小程序好玩吗?《见缝插针》小游戏怎么玩?

只有你想不到,没有我不会敲代码的好游戏!「良心好游戏推荐」——栗子同学强势来袭!

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

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

PS:小编有话说

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

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

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

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

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

氪金指数:0氪金。

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

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

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

​一、运行环境

1)环境安装

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

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

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

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

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

二、代码展示

import pgzrun
import random
 
TITLE = "Python见缝插针" # 窗口标题
 
background = Actor('background') # 导入背景图片
 
needles = [] # 存放发射针的列表
startNeedle = Actor('needle',anchor=(170 + 50,1.5)) # 导入针的图片,并设置锚点(旋转轴心)
startNeedle.x = 220
startNeedle.y = 300
 
difficulty_Needles = [] # 存放干扰的针
 
rotateSpeed= 1 # 针旋转的速度,默认设置为1
score = 8 # 针的数量,默认设置为8
radius = 80 # 圆盘的半径
record_score = 8 # 记录针的数量,方便切换关卡
level = 1 # 关卡
record_speed = 1 # 记录速度
flag = 0 # 设置标志位,来画干扰的针
 
r,g,b = random.randint(0,255),random.randint(0,255),random.randint(0,255) # 随机圆盘的颜色
 
def draw(): # 绘制模块,每帧重复执行
    global flag #全局变量
    if not flag: #将干扰的针添加进列表
        for i in range(int(rotateSpeed)+3):
            difficulty_Needle2 = Actor('needle', anchor=(170 + 50, 1.5))
            difficulty_Needle2.angle = (360 / (int(rotateSpeed) + 2)) * i
            difficulty_Needle2.x = 400
            difficulty_Needle2.y = 300
            needles.append(difficulty_Needle2)
    if rotateSpeed != 0:
        flag = 1
        screen.fill('white') # 白色背景
        screen.draw.filled_circle((400,300),radius,(r,g,b)) # 画圆盘
        screen.draw.text("第{}关".format(level),(320,10),fontsize=60,fontname="simhei",color='black') # 显示关卡
        if score < 10: # 显示分数,这里用判断语句来区分一位数和两位数,位置稍有不同
            screen.draw.text(str(score), (385, 275), fontsize=80, color='white')
        else:
            screen.draw.text(str(score), (370, 275), fontsize=80, color='white')
        screen.draw.text("Speed : {}".format(rotateSpeed), (20, 270), fontsize=35, color='red') # 显示速度
        startNeedle.draw() # 画初始的针
        for difficulty_Needle in difficulty_Needles: # 循环遍历画出干扰的针
            difficulty_Needle.draw()
        for needle in needles: # 循环遍历画出发射出去的针
            needle.draw()
    else: # 失败后的场景
        screen.clear()  # 清屏
        background.draw() # 画背景
        screen.draw.text('Game Over!', (200, 200), fontsize=100, color='red')  # 画文本
        screen.draw.text('再试一次', (230, 400), fontsize=25, fontname="simhei", color='green')
        screen.draw.text('退出游戏', (450, 400), fontsize=25, fontname="simhei", color='green')
 
def update(): # 更新模块,每帧重复执行
    # 让针旋转
    for needle in needles:
        needle.angle += rotateSpeed
    for difficulty_Needle in difficulty_Needles:
        difficulty_Needle.angle += rotateSpeed
 
def on_key_down(): # 按键检测
    global rotateSpeed,score,level,record_score,record_speed,flag # 全局变量
    newNeedle = Actor('needle', anchor=(170 + 50, 1.5)) # 新建一根针
    newNeedle.x = 400 # 新建针的x坐标
    newNeedle.y = 300 # 新建针的y坐标
    for needle in needles: # 判断发射针是否碰到其他针,如果碰到就停止转动
        if newNeedle.colliderect(needle):
            rotateSpeed = 0
            music.play_once("失败") # 失败音效
    needles.append(newNeedle) # 将新创建的针加入列表
    if rotateSpeed > 0:
        score -= 1 # 每发射一根针的数量就减1
        if score == 0: # 当针的数量减到零时,要切换关卡,增加难度
            needles.clear() # 清除发射针列表
            record_score += 2 # 针的数量变多
            score = record_score
            level += 1 # 关卡变更
            rotateSpeed += 0.5 # 速度加快
            record_speed = rotateSpeed
            flag = 0 # 将标志位置零,重新绘制干扰针
        music.play_once('发射') # 发射音效
 
 
def on_mouse_down(pos, button): # 鼠标检测
    global rotateSpeed,record_speed,score,flag # 全局变量
    if button == mouse.LEFT and pos[0] > 445 and pos[0] < 555 and pos[1] > 395 and pos[1] < 435: # 如果鼠标左键按下退出游戏
        exit() # 退出游戏
    if button == mouse.LEFT and pos[0] > 225 and pos[0] < 335 and pos[1] > 395 and pos[1] < 435: # 如果鼠标左键按下再试一次
        rotateSpeed = record_speed # 重置速度
        needles.clear() # 清空发射针的列表
        score = record_score # 重置针的数量
        flag = 0 # 将标志位置零,用于重新绘制干扰针
 
pgzrun.go() # 开始执行游戏

三、效果展示

​总结

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

到此这篇关于Python+Pygame实现之见缝插针游戏的实现的文章就介绍到这了,更多相关Python Pygame见缝插针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬虫进阶之协程详解

    python爬虫进阶之协程详解

    这篇文章主要介绍了python爬虫进阶之协程详解,coroutine中文翻译叫协程,在 Python 中昌指代为协程对象类型,可以将协程对象注册到时间循环中被调用,需要的朋友可以参考下
    2023-08-08
  • 用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码

    用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码

    这篇文章主要介绍了用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码,主要分为两部分,获取网页上数据和图片保存到本地等,感兴趣的可以了解一下
    2020-07-07
  • 基于Django统计博客文章阅读量

    基于Django统计博客文章阅读量

    这篇文章主要介绍了基于Django统计博客文章阅读量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 让你相见恨晚的十个Python骚操作

    让你相见恨晚的十个Python骚操作

    这篇文章主要给大家介绍了十个让你相见恨晚的Python骚操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 升级anaconda中python到3.10版本的简单步骤

    升级anaconda中python到3.10版本的简单步骤

    anaconda是一个非常好用的python发行版本,其中包含了大部分常用的库,下面这篇文章主要给大家介绍了关于升级anaconda中python到3.10版本的简单步骤,需要的朋友可以参考下
    2024-03-03
  • Python 最强编辑器详细使用指南(PyCharm )

    Python 最强编辑器详细使用指南(PyCharm )

    这篇文章主要介绍了Python 最强编辑器详细使用指南(PyCharm),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • python实现局域网内实时通信代码

    python实现局域网内实时通信代码

    今天小编就为大家分享一篇python实现局域网内实时通信代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python Django模型详解

    Python Django模型详解

    这篇文章主要介绍了Django 模型类(models.py)的定义详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • 自动化测试时基于Python常用的几个加密算法总结

    自动化测试时基于Python常用的几个加密算法总结

    这几天做自动化测试,遇到一个问题,那就是接口的请求的密码是加密的,产品的要求是不能使用使用其他特殊手段,他给提供加密算法,需要在接口请求的时候,使用加密算法处理后的数据传参,本文主要是整理了几个加密算法,以便后续测试使用,需要的朋友可以参考下
    2023-12-12
  • python中的条件赋值判断语句语法

    python中的条件赋值判断语句语法

    这篇文章主要介绍了python条件赋值判断语句语法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论