找回密码
 会员注册
查看: 33|回复: 0

Python模拟乌龟对对碰游戏,盲盒购买分析

[复制链接]

6

主题

0

回帖

19

积分

新手上路

积分
19
发表于 2024-9-8 15:43:44 | 显示全部楼层 |阅读模式
Python模拟乌龟对对碰游戏,盲盒购买分析最近乌龟对对碰盲盒游戏备受热捧,我使用Python编写了这款游戏的简单模拟。让我们一起来了解乌龟对对碰游戏规则和盲盒购买分析吧!一、乌龟对对碰游戏规则介绍乌龟对对碰游戏乌龟颜色:红色、黄色、紫色、橙色、绿色、青色、粉色、玫红。咔色、蓝色十种颜色。游戏规则:游戏开始,用户从上面十个颜色中选择一个幸运色然后开始游戏,随机初始化化9个颜色的乌龟,每个乌龟都有一个颜色,到一个3x3的方格中。如果存在和幸运色一样,用户背包随机增加一个颜色的乌龟如果9个乌龟颜色都不一样,用户背包随机增加5个乌龟,并清空棋格如果存在横着三个,竖着三个,斜着三个一样的颜色,用户背包随机增加5个乌龟,清出掉对应的乌龟如果方格中存在两个相同颜色的乌龟,用户背包随机增加一个颜色的乌龟,并把对应乌龟清除掉当背包没有乌龟时,且没有可以碰对的乌龟,则游戏结束,统计用户总共获取的乌龟总数,对应颜色的乌龟数量二、Python模拟实现导入依赖importrandomfromcollectionsimportCounter12定义游戏类#定义颜色列表colors=["Red","Yellow","Purple","Orange","Green","Cyan","Pink","Magenta","Brown","Blue"]BOARD_SIZE=3classTortoiseGame:def__init__(self,lucky_color,buy_toroise_count=9):ifbuy_toroise_count0:add_color=random.choice(colors)#幸运色,增加一个ifadd_color==self.lucky_color:self.buy_toroise_count+=1self.board[i][j]=add_colorself.buy_toroise_count-=1deffirst_check_lucky_color(self):#1.如果有和幸运色一样的乌龟forrowinself.board:add_count=row.count(self.lucky_color)self.buy_toroise_count+=add_countdefcheck_three_in_a_row(self):flag=Falsedefis_three_in_a_row(cells):returnlen(set(cells))==1andcells[0]!=""foriinrange(BOARD_SIZE):#横向ifis_three_in_a_row(self.board[i]):flag=Trueself.buy_toroise_count+=5self.bag.update(self.board[i])self.board[i]=[""]*BOARD_SIZE#纵向column=[self.board[j][i]forjinrange(BOARD_SIZE)]ifis_three_in_a_row(column):flag=Trueself.buy_toroise_count+=5self.bag.update(column)forjinrange(BOARD_SIZE):self.board[j][i]=""#斜向\diagonal1=[self.board[i][i]foriinrange(BOARD_SIZE)]ifis_three_in_a_row(diagonal1):flag=Trueself.buy_toroise_count+=5self.bag.update(diagonal1)foriinrange(BOARD_SIZE):self.board[i][i]=""#斜向/diagonal2=[self.board[i][BOARD_SIZE-1-i]foriinrange(BOARD_SIZE)]ifis_three_in_a_row(diagonal2):flag=Trueself.buy_toroise_count+=5self.bag.update(diagonal2)foriinrange(BOARD_SIZE):self.board[i][BOARD_SIZE-1-i]=""returnflagdefcheck_two_in_a_row(self):flag=Falseforiinrange(BOARD_SIZE):forjinrange(BOARD_SIZE):ifself.board[i][j]!=""andsum(row.count(self.board[i][j])forrowinself.board)>=2:flag=Trueself.buy_toroise_count+=1self.check_eliminate(self.board[i][j])#判断是否全清了,全清+5ifall(all(cell==""forcellinrow)forrowinself.board):flag=Trueself.buy_toroise_count+=5returnflagdefcheck_eliminate(self,remove_color):#对对碰消除remove_count=0foriinrange(BOARD_SIZE):forjinrange(BOARD_SIZE):ifself.board[i][j]==remove_color:ifremove_count==2:return#已经消除两个,不需要再消除else:remove_count+=1self.bag.update([self.board[i][j]])self.board[i][j]=""defcheck_family_portrait(self):#全家福,9个乌龟颜色都不一样,增加5个乌龟iflen(set(cellforrowinself.boardforcellinrow))==BOARD_SIZE**2:self.buy_toroise_count+=5self.bag.update([cellforrowinself.boardforcellinrow])self.board=[[""]*BOARD_SIZEfor_inrange(BOARD_SIZE)]returnTrueelse:returnFalsedefcheck_chain(self):returnany([self.check_three_in_a_row(),self.check_two_in_a_row(),self.check_family_portrait()])defplay(self):#开始游戏self.print_board(self.board)#初次检查self.first_check_lucky_color()self.check_chain()whileself.buy_toroise_count>0:self.update_board()flag=self.check_chain()#判断是否结束,如过没有乌龟了,且没有对对碰,则结束ifnotflag:self.bag.update(cellforrowinself.boardforcellinrowifcell!="")break#统计结果print("总共获取的乌龟总数:",sum(self.bag.values()))forcolorincolors:print(color,":",self.bag[color])returnsum(self.bag.values())123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150运行if__name__=="__main__":lucky_color=input(f"请输入幸运色({','.join(colors)}):")whilelucky_colornotincolors:lucky_color=input(f"请输入幸运色({','.join(colors)}):")buy_toroise_count=int(input("请输入购买乌龟数量(9,17,35):"))whilebuy_toroise_countnotin[9,17,35]:buy_toroise_count=int(input("请输入购买乌龟数量(9,17,35):"))game=TortoiseGame(lucky_color,buy_toroise_count)game.play()1234567891011输出结果➜Tortoisepythontortoise_game.py请输入幸运色(Red,Yellow,Purple,Orange,Green,Cyan,Pink,Magenta,Brown,Blue):Blue请输入购买乌龟数量(9,17,35):9--------------------------------------------------------------------------------Blue|Magenta|Pink-----------------Orange|Green|Blue-----------------Cyan|Cyan|Orange-----------------总共获取的乌龟总数:17Red:1Yellow:2Purple:0Orange:3Green:1Cyan:3Pink:2Magenta:1Brown:1Blue:3123456789101112131415161718192021三、购买规格成本对比分析直播间玩这个游戏,一般是19.9购买9个,39.9购买17个,99.9购买45个,下面对这三种情况分别运行一万次进行统计19.9购买9个规格,最大获取57,最小是11平均是17点多39.9购买17个规格,最大获取数是88,最小获取是27,平均38.6个99.9购买45个,最大获取数是180,最小获取是86,平均获取数114.8备注:每次运行最大值可能不太一样,但是运行次数越多平均值越稳定。四、小结打开淘宝,小号乌龟大概是六七块钱10个,大多是6.8,那就是一个乌龟平均0.68元,直播间平均19.9规格一个乌龟平均1.17元,39.9规格的合1.03元,99.9规格一个乌龟平均0.87,整体是买的越多会越便宜,但是还是不如购物网站买,但是直播间也算提供了情绪价值,这个和直接购买还是不一样的,你会怎么选择呢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-11 02:48 , Processed in 1.173007 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表