作者 主题: MT中如何实现无放回抽牌?  (阅读 6294 次)

副标题:

离线 user8786

  • 马迪撒之主
  • Knight
  • ***
  • 帖子数: 325
  • 苹果币: 0
MT中如何实现无放回抽牌?
« 于: 2011-08-02, 周二 14:58:52 »
研究了半天学会了随机抽牌发牌(用的是默认里面的那套牌),但做不到无放回的,想求教一下,如何做到无放回式的抽牌?
只想找到几个人,开开心心的跑团,为什么一个两个临时有事那么多!

离线 BobbyLiu

  • Flawless
  • *******
  • 帖子数: 4233
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #1 于: 2011-08-02, 周二 15:01:57 »
MT?牌?

离线 成飛揚

  • Peasant
  • 帖子数: 4
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #2 于: 2011-08-02, 周二 15:20:28 »
你是在玩啥- -

离线 AlbertNi

  • Sleeper, Lord of Helpless, The Brainless
  • 版主
  • *
  • 帖子数: 7260
  • 苹果币: 2
Re: MT中如何实现无放回抽牌?
« 回帖 #3 于: 2011-08-02, 周二 15:22:20 »
让我研究一下。

目前的思路是可以在属性里放json array储存还没有抽出牌的编号,从这个array里面抽出table的row之后用table()或者tableimage()调用table里面的内容。
等有空我写个实例吧。
« 上次编辑: 2011-08-02, 周二 15:27:05 由 AlbertNi »
突然之间不知道放神马签名好了……
哦对了,我也是新人了!

离线 Snow Patrol

  • 破邪显正
  • Diver
  • ******
  • 帖子数: 3504
  • 苹果币: 0
    • weibo
Re: MT中如何实现无放回抽牌?
« 回帖 #4 于: 2011-08-02, 周二 16:13:34 »
难道mt可以三国杀么...
M: I don't know how to put this to you, but trainspotters do have a certain reputation.
T: Which reputation are you thinking of?
M: Well... maybe for being a little bit dull?
T: I think you become involved to an extent that you ignore the real world outside. You come into your own little world and you have many people who join you in that, whether they're interested in mechanics, interested in the actual observations, interested in the operations. They all have their own little interest. But it means that we're committed to what we enjoy.
M: A little obsessive, then? You will admit to a little obsessive, would you?
T: I think obsessive, possibly, yes. Certainly not dull.

离线 AlbertNi

  • Sleeper, Lord of Helpless, The Brainless
  • 版主
  • *
  • 帖子数: 7260
  • 苹果币: 2
Re: MT中如何实现无放回抽牌?
« 回帖 #5 于: 2011-08-02, 周二 16:28:58 »
搞定。我采用的实现方式是每个牌堆用一个token做dealer
dealer的战役设定需要3个变量:
1、TableName:储存牌堆的表的名字。多份同样的牌堆只需要1张表,因为抽掉了哪些卡片记录在token而不是table里。(但这样的话最好不要直接用table名来命名deck,因为容易混)
2、TotalCardNum:牌堆里总共有几张牌。
3、RemainingCards:还在牌堆里的牌。这一项不用手动填写,点一下initiate宏就能生成数据。
配合三个token宏(都需要对所选目标使用,因为要修改token的变量):
Initiate:初始化牌堆并洗牌。
代码: [选择]
[H:RemainingCards=""]
[H,FOR(i,1,TotalCardNum+1): RemainingCards = json.append(RemainingCards, i)]
[H:RemainingCards=json.shuffle(RemainingCards)]
Deck <b>{TableName}</b> is now ready to use.
Shuffle:洗牌
代码: [选择]
[H:RemainingCards=json.shuffle(RemainingCards)]
Deck <b>{TableName}</b> shuffled
Draw:抽牌
代码: [选择]
[if(json.isEmpty(RemainingCards)), CODE:
{
Deck is Empty!
};
{
<image src='[r:tableImage(TableName, json.get(RemainingCards, 0))]'></image>
[h:RemainingCards = json.remove(RemainingCards, 0)]
}]

变体:牌堆中有多张同样的牌:在RemainingCards里面加入多份相应的序号就好,比如[1,1,2,3,4,5,5,5,6]
可以在抽牌的时候不抽最顶端的那张(json.get和json.remove都改成抽cardpos的参数改一下就好,也可以随机)
这里是显示表里面的图片(因为tableImage返回资源代号所以要加html的图形代码),table(XXX,n)可以显示value。
注意:目前牌堆的状态储存在token的属性里,可以被偷看(当然可以在战役设置里弄成DM才能看之类的)。用上面的抽随机牌或者在每次抽牌之前shuffle一次(把shuffle的函数放进draw里面)就可以避免偷看的问题。

效果见附图。(最后那个deck is empty!旁边的引号是我2了,上面的代码已经修正,图片就不更新了)
« 上次编辑: 2011-08-02, 周二 18:53:03 由 AlbertNi »
突然之间不知道放神马签名好了……
哦对了,我也是新人了!

离线 某某

  • 言多必失,团多必坑!
  • Diver
  • ******
  • 帖子数: 3643
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #6 于: 2011-08-02, 周二 18:36:53 »
每张牌还要单独写宏么?
别人笑我太坑,我笑他人不懂。

离线 AlbertNi

  • Sleeper, Lord of Helpless, The Brainless
  • 版主
  • *
  • 帖子数: 7260
  • 苹果币: 2
Re: MT中如何实现无放回抽牌?
« 回帖 #7 于: 2011-08-02, 周二 18:51:04 »
什么叫每张牌单独写?
原则来说宏是通用的,只要改一下dealer token里面的属性(TableName和TotalCardNum)对应不同的Table(和牌的数量)就好。
« 上次编辑: 2011-08-02, 周二 18:53:52 由 AlbertNi »
突然之间不知道放神马签名好了……
哦对了,我也是新人了!

离线 歇洛克·龙

  • 組長
  • ****
  • 帖子数: 165
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #8 于: 2011-08-02, 周二 20:00:38 »
我去。。。你们在讨论什么?我一开始以为是MTG的粉丝跑错了房间。。。后来。。。
求解释!!!!不然好奇心会让人睡不着觉。
睡不着觉明天会带不好面团。
带不好面团,PC们会生气。
生气了又不敢跟DM我吼。
不敢跟我吼只好回家吼老婆。
你说你们不告诉我。
让5名无辜的女性同志受到莫名其妙的伤害多不好。。。

快。

到底说的是啥?

莫名的位面风暴将我拉入一片果园,
她的纯洁与美丽让我从此不忍离去。


被遗忘的果冻

离线 AlbertNi

  • Sleeper, Lord of Helpless, The Brainless
  • 版主
  • *
  • 帖子数: 7260
  • 苹果币: 2
Re: MT中如何实现无放回抽牌?
« 回帖 #9 于: 2011-08-02, 周二 20:43:00 »
就是从一个table里面抽牌但是抽到过的牌不再重复出现而已……很稀奇吗……
突然之间不知道放神马签名好了……
哦对了,我也是新人了!

离线 歇洛克·龙

  • 組長
  • ****
  • 帖子数: 165
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #10 于: 2011-08-03, 周三 16:28:56 »
就是从一个table里面抽牌但是抽到过的牌不再重复出现而已……很稀奇吗……

不是很稀奇啊。。。

问题是你们这玩的是啥?

明显是个卡牌游戏。

求名字,规则神马的。

莫名的位面风暴将我拉入一片果园,
她的纯洁与美丽让我从此不忍离去。


被遗忘的果冻

离线 AlbertNi

  • Sleeper, Lord of Helpless, The Brainless
  • 版主
  • *
  • 帖子数: 7260
  • 苹果币: 2
Re: MT中如何实现无放回抽牌?
« 回帖 #11 于: 2011-08-03, 周三 19:16:40 »
这是跑团工具区……只讨论工具不讨论游戏的……我打赌这里回帖的人没一个知道lz在玩什么
« 上次编辑: 2011-08-03, 周三 19:19:48 由 AlbertNi »
突然之间不知道放神马签名好了……
哦对了,我也是新人了!

离线 pearlforever

  • Adventurer
  • *
  • 帖子数: 75
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #12 于: 2011-08-16, 周二 13:25:22 »
答:一种玩法 

离线 user8786

  • 马迪撒之主
  • Knight
  • ***
  • 帖子数: 325
  • 苹果币: 0
Re: MT中如何实现无放回抽牌?
« 回帖 #13 于: 2013-03-11, 周一 12:43:26 »
抱歉一击脱离1年多。。。。期间果园换地址就一直没来过了.......今天和群里人说道这个问题,被人说早就有人解答了这个问题,可怜我之前还在自己摸索.....

感谢版主热心,晚上回去开始研发

主要的目的是通过MT来玩一些桌游,次要的目的是某些RP扮演,比如赌博=。=

当时问这个是因为想做某个奇物的低级版本而已。。。。
只想找到几个人,开开心心的跑团,为什么一个两个临时有事那么多!