#番薯开箱
终于下班了,拿到了新的桌游——3~6人的『还不练腿』,看介绍是非常适合炒热气氛的毛线游戏。互相对赌有没有练腿,因为练腿没有分甚至是倒扣分,但是练腿最少的人直接出局。总之看起来很欢乐,栢龙作为代理总是能找到各种有趣但又奇奇怪怪的桌游,之前上官网才发现他们代理的桌游真的好多好多,眼光真的很独特。如果还能有周五桌游夜就好了
下班一个小时了,因为下班比较晚,不知道干啥好,感觉干啥都提不怎么起劲,就坐在那里发呆。
刚好最近入了『桌游模拟器TTS』,就想到了自己要不也尝试着在里面做一个桌游,比如拿『去月球』的桌游练练手,这个游戏规则简单应该很好上手。所以就在脑海里构思怎么写这个脚本,没想到单纯出牌这一步就卡住了。
『去月球』桌游规则就是拿手牌(情感牌)尽可能买更多高分的分数牌(记忆卡)。手牌有四种tag(A、B、C、D),两种副tag(其中跟买分数牌相关的副tag只有一个:ᴾ)。购买分数牌要求:手牌的tag在分数牌上有标出,有相应tag的数量要够,而且购买时只能使用同一种tag。如果数量不够也没事,每两张有副tag(ᴾ)的牌可以当一张任意tag的卡牌。
出牌例子:
分数牌(AB,cost数=3)
可购买的方式:
① A A A
② B B B
③ A A Cᴾ Dᴾ
等等
不可行方式:
① A A(数量不够)
② A A B(混搭)
③ C C C(错误tag)
④ A A Cᴾ(数量不够)
等等
规则很简单,线下玩很容易操作,但是做成程序要考虑的太多了(需要考虑玩家骚操作)
我现在的思路:
① 出牌数=cost数?
② -是→
牌中最多的max.牌.tag⊂cost.tag?
→ max.牌.tag.count=cost.count?
→ 都是的话购买成功
③ -否→
// 找到不属于cost.tag的牌
cache_1=[牌.tag⊄cost.tag的部分];
// 在符合cost.tag的牌里可能会有多个max值,所以需要提前给tag排优先度,这里找到优先度最高的tag
pay_1=[max([牌-cache_1].tag,1)];
// 找到除了pay_1之外牌里包含副tag(ᴾ)的牌
cache_2=find([牌-pay_1]=ᴾ);
// pay值
pay=pay_1.count+cache_2.count/2;
→然后看pay是否足够cost需求
→是的话完成购买,并将多余的牌还给玩家
粗看好像没问题,但是细想还是不对。
例子:
tag优先度按照ABCD排列
分数牌(AB,cost数=3)
出牌①:A Aᴾ B Cᴾ Cᴾ Cᴾ
这样虽然也可以判定为出B Aᴾ Cᴾ Cᴾ Cᴾ,但是因为tag优先度问题实际出牌为A Aᴾ Cᴾ Cᴾ,玩家能正常买到牌,没问题,有问题的是下面这种情况:
出牌②:A Aᴾ B B Cᴾ
因为tag优先度的问题,虽然A和B数量一样,上述程序默认是出A,所以出牌会变成A Aᴾ Cᴾ购买失败,但是实际上这组牌里的B B Aᴾ Cᴾ是可以完成购买的。所以说到底,还是得在符合条件的max.tag里遍历,不能单纯只判断第一个……感觉好麻烦啊
说到底,也就是副tag的存在导致了很多地方判断困难,懒一点来说,其实也可以设计两个出牌区域:tag区和副tag区,让玩家主动给出的牌分类,然后程序再完成判定,但是感觉这么设计也好丑啊……
今天就暂时玩到主线2完成这里,保存游戏,有点累,一直在翻阅条目(游戏就是通过组合各种数字来找相对应条目完成互动推进故事)。
我终于知道为啥『天方夜谭:一千零一夜』之前看到那么多人吐槽不好玩,一直在翻书。这方面感觉上应该是很相似的,但『一千零一夜』作为pvp竞技类的桌游,需要不停翻书读故事会导致每个玩家的downtime非常长,游戏节奏比较差游戏体验相应变差(←个人猜想)。而『魔女奇缘』是单人游戏,而且重在看故事,虽然也还是翻书翻得很累,但至少还是很期待翻开新的一页会看到什么展开。
今晚主要是把整个广场都逛了个边所以没怎么在做主线,倒是接了很多支线。另外还听一个特别喜欢龙的npc皮帕讲了几个小时的龙的相关知识,获得了一个成就。
众筹附赠的可擦写板对于我这个想要好好保护桌游原样的玩家来说还是挺友好的,但是这两个记录表都是正反面都有内容的,放在底下那一面非常容易就会不小心被擦模糊了,可能还是得真的用笔在那个一次性纸上写会更好,但真的不想啊……
手癌达人,经常发嗼帖后发现错字,删除编辑重新发送。龟速探索游戏中,杂食类废物,提不起劲创作,所以很多坑