python开发--乌龟对对碰实现(一)

前言

"乌龟对对碰"是一种近期在网络直播平台上非常流行的盲盒玩法,消费者购买盲袋或盲盒,每个包含一个不同颜色的树脂乌龟玩具。玩家在购买时会许愿一个特定颜色的乌龟,卖家在直播间现场拆包,如果拆出许愿色或相同颜色的乌龟,会根据规则额外加拆盲袋,直到没有符合对对碰条件的盲袋为止。所有拆出的乌龟最终都归买家所有。这种玩法因其互动性和不确定性,给消费者带来了刺激感和乐趣,因而迅速走红网络 。

这种盲盒玩法不仅吸引了大量网友参与,甚至奥运冠军全红婵也参与其中,进一步推动了其火爆程度 。然而,这种玩法也引发了一些争议和讨论,特别是关于消费理性和潜在的非理性消费问题。专家提示,消费者在参与时应保持警惕,避免冲动消费,特别是未成年人,更应注意避免超出自身承受能力的消费 。

今天咱们要干的事就是,尝试用python做一个乌龟对对碰出来玩,哈哈哈哈。
在这里插入图片描述

规则解析

这里以最普通的9拆为基础入手,因为咱也不是很会,哈哈哈。
"乌龟对对碰"的玩法规则主要包括以下几点:

  1. 购买盲袋或盲盒:消费者需购买一定数量的盲袋或盲盒,每个盲袋或盲盒内含有一个颜色不同的树脂乌龟玩具。

  2. 选择许愿颜色:在购买时,消费者需选择一个自己希望获得的乌龟颜色,即许愿色。

  3. 直播间拆盒:卖家在直播间现场拆开消费者购买的盲袋或盲盒。

  4. 对对碰规则

    • 如果拆出乌龟的颜色与消费者许愿的颜色一致,或拆出两只相同颜色的乌龟,即发生“对对碰”。
    • 每当发生对对碰时,卖家会额外加拆一个盲袋,并继续与之前未发生对对碰的已拆盲袋组合,进行下一轮的拆盒。
  5. 结束条件:当九宫格内没有同色乌龟或者数量不足9个时,游戏自动停止。

  6. 所有拆出乌龟归买家所有:无论是通过正常购买还是通过加拆获得的乌龟,最终都归消费者所有。

代码实现

这里经过了几次迭代,仍然是还没搞定的,测试还是存在逻辑漏洞,先把初版放出来哈。

import random

# 假设有10种颜色的乌龟
TURTLE_COLORS = ['红色', '蓝色', '绿色', '黄色', '紫色', '青色', '粉色', '玫红', '橙色', '咖色']

def buy_blind_bag():
    """购买盲袋,随机获得一个乌龟"""
    return random.choice(TURTLE_COLORS)

def wish_for_color():
    """玩家选择许愿颜色"""
    return input("选择你希望获得的乌龟颜色(输入颜色名称):")

def play_game(packages):
    """开始游戏,packages是要拆的盲袋数量"""
    wish_color = wish_for_color()
    results = []
    extra_packs = 0  # 用于跟踪额外拆包的机会

    for _ in range(packages):
        opened_color = buy_blind_bag()
        # 无论是否额外拆包,都将结果添加到列表中
        results.append(opened_color)
        
        # 检查是否与许愿颜色相同或是否对对碰
        if opened_color == wish_color or opened_color in results[:-1]:
            extra_packs += 1
        print(f"拆包结果 - 颜色: {opened_color}, 许愿颜色: {wish_color}")

    # 处理额外拆包
    while extra_packs > 0:
        extra_color = buy_blind_bag()
        results.append(extra_color)
        extra_packs -= 1
        # 如果拆出的颜色已经在列表中,增加额外拆包机会
        if extra_color in results[:-1]:
            extra_packs += 1
        print(f"额外拆包 - 颜色: {extra_color}")

    return results

# 模拟购买盲袋
packages = int(input("你购买了几个盲袋?"))
game_results = play_game(packages)

print("\n你拆出的乌龟颜色为:")
for result in game_results:
    print(result)

代码解析

  1. 导入随机库:

    import random
    

    这行代码导入了Python的random库,用于生成随机选择乌龟颜色的功能。

  2. 定义乌龟颜色列表:

    TURTLE_COLORS = ['红色', '蓝色', '绿色', '黄色', '紫色', '青色', '粉色', '玫红', '橙色', '咖色']
    

    这里定义了一个包含10种颜色的列表,代表乌龟可能的颜色。

  3. 购买盲袋函数:

    def buy_blind_bag():
        return random.choice(TURTLE_COLORS)
    

    buy_blind_bag函数用于模拟购买一个盲袋,并随机返回一个乌龟颜色。

  4. 许愿颜色函数:

    def wish_for_color():
        return input("选择你希望获得的乌龟颜色(输入颜色名称):")
    

    wish_for_color函数提示用户输入他们希望获得的乌龟颜色。

  5. 游戏逻辑函数:

    def play_game(packages):
        wish_color = wish_for_color()
        results = []
        extra_packs = 0
    
        for _ in range(packages):
            opened_color = buy_blind_bag()
            results.append(opened_color)
            if opened_color == wish_color or opened_color in results[:-1]:
                extra_packs += 1
            print(f"拆包结果 - 颜色: {opened_color}, 许愿颜色: {wish_color}")
    

    play_game函数是游戏的主要逻辑。它首先获取用户的许愿颜色,然后开始一个循环,用户购买的盲袋数量为循环次数。在每次循环中,用户获得一个随机颜色的乌龟,并将这个颜色添加到结果列表中。如果获得的乌龟颜色与许愿颜色相同,或者这个颜色已经在结果列表中出现过(表示发生了对对碰),则增加额外拆包的机会。

  6. 额外拆包处理:

    while extra_packs > 0:
        extra_color = buy_blind_bag()
        results.append(extra_color)
        extra_packs -= 1
        if extra_color in results[:-1]:
            extra_packs += 1
        print(f"额外拆包 - 颜色: {extra_color}")
    

    这部分代码处理额外拆包的逻辑。只要extra_packs大于0,就会继续拆包。每次拆包后,extra_packs减1。如果拆出的颜色已经在结果列表中,表示再次发生了对对碰,extra_packs增加,允许玩家继续拆包。

  7. 开始游戏:

    packages = int(input("你购买了几个盲袋?"))
    game_results = play_game(packages)
    
    print("\n你拆出的乌龟颜色为:")
    for result in game_results:
        print(result)
    

    这里首先提示用户输入购买的盲袋数量,然后调用play_game函数开始游戏。游戏结束后,打印出所有拆出的乌龟颜色。

这个程序模拟了“乌龟对对碰”游戏的基本流程,包括购买盲袋、许愿颜色、拆包、对对碰规则和额外拆包机会。

问题总结与思考

会觉得有点无用功了,应该花多点时间在游戏逻辑这一块,因为一些地方没思考到导致在不停的调试找bug,比如这里会存在一个问题,当额外的次数拆包结束之后,额外拆出来的颜色可能会和前面的又混淆或缺少配对,应该要增加一个列表来处理才好一点。应该搞个流程图把所有流程都覆盖到才好的。

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值