《进化》游戏说明书

进化

游戏背景

自然中蕴藏着神秘的双螺旋基因,演绎出生命的进化树。

前情提要

本游戏适合3-8人玩耍,游戏时长约20分钟。

游戏规则

为便于理解,在以下游戏规则说明中,可以将以下名词通俗理解为:

  1. 基因:牌
  2. 自然:牌堆
  3. 世纪:回合
  4. 隐性基因:手牌
  5. 显性基因:桌面的牌
  6. 生物:扮演桌面的牌的玩家
  7. 进化:手牌叠置到桌面的牌上方
  8. 发生事件:执行手牌上的文字效果
  9. 历史:弃牌堆

1.游戏开始

洗混128个基因组成自然。每个生物分发4个基因,4即生物基因数量。由随机一个生物开始顺时针轮流进行一个世纪。

2.游戏回合

每个生物在一个世纪内进行以下操作:

  1. 开始世纪,从自然中获取一个基因。

  2. 当玩家没有显性基因时,可以进化出“门”基因,同时从自然获取一个基因。
    当玩家有显性基因时,若玩家的隐性基因中有符合生物的进化的,则可以选择进化出该基因,同时从自然获取一个基因。
    若无其他说明,每个世纪只可以进化一次。

  3. 选择一个基因发生事件,然后该基因变成历史,结束回合。

3.游记结束

当有生物进化成出“属”基因时,该生物获胜,游戏结束。

牌组配置

128张牌

牌面文字

名词 张数 通俗理解 文字
废退 16 桌面的牌最上方进入弃牌堆 选择任意一个生物最高显性基因变为历史。
用进 16 桌面的牌最上方进入弃牌堆时,弃一张手牌获得 当某生物最高显性基因将变为历史时,将此基因变为历史来获得该基因。
掠夺性杂交 6 别人展示部分手牌,你来选择部分交换 选择任意一个生物让其展示任意数量隐性基因,你选择获得展示或者未展示的,并返还同等数量隐性基因。
选择性杂交 6 别人展示全部手牌,你来选择一张交换 检索任意一个生物的全部隐性基因,并与其交换其中一个。
平等性杂交 6 两个人交换全部手牌 选择其他两个生物交换所有隐性基因。
螺旋式杂交 6 顺或逆时针互相交换一张手牌 选择左或右方向,所有生物互相交换一个隐性基因。
群体性杂交 6 每人一张手牌打混重发 所有生物贡献一个隐性基因进行随机重组。
互惠性杂交 6 互相看手牌能否打到桌面 选择任意一个生物与其互相检索对方的全部隐性基因,若包含在对方生物上可进化的基因,则进化。
基因锁 4 不能进化 标记任意一个生物,使其无法进化,任意生物进化一次后解除。
时间锁 4 跳过回合 标记任意一个生物,跳过下一世纪,跳过后解除。
返祖 4 桌面的牌最上方收回手牌 选择任意一个生物最高显性基因变为隐性基因,同时选择一个隐性基因变为历史。
重新进化 4 桌面的牌最上方进入弃牌堆,同时置换一张手牌 选择任意一个生物最高显性基因变为历史,同时和自然交换一个隐性基因。
疯狂进化 4 回合进化两次 标记任意一个生物,使其可以在某世纪进化两次,进化后解除。
寄生 3 获得可以用于自己打到桌面的一张事件 标记任意一对生物寄生关系,在宿主生物基因发生事件时,若该基因可以用于寄生生物的进化,将一个隐性基因变为历史基因来获得该基因,获得后解除。
共生 3 别人进化时置换一张手牌 标记任意一对生物共生关系,双方生物在进化时,另一方可以和自然交换一个隐性基因,双方某一生物最高显性基因变为隐性基因或历史时解除。
集体突变 4 每人置换一张手牌 所有生物和自然交换一个隐性基因。
基因突变 4 执行牌堆上方的两张牌 选择任意一个生物,从自然中检索两个基因,若该基因可以用于该生物进化则进化,否则发生事件。
分解作用 2 获得弃牌一张 标记任意一个生物,可以获得任意变为历史的基因一次,获得后解除。
光合作用 2 选择置换四张手牌 从自然中获得生物基因数量的基因,然后将生物基因数量的隐性基因变为历史。
寒武纪 1 弃牌堆符合的全打到桌面 选择左或右方向,所有生物从历史中找到符合进化的基因并进化(不可被其他事件阻止)。
泥盆纪 1 所有人桌面的牌最上方进入弃牌堆 所有生物最高显性基因变为历史(不可被其他事件阻止)。
奥陶纪 1 增加1个手牌数 所有生物从自然获得一个基因(不可被其他事件阻止)。
白垩纪 1 减少1个手牌数 所有生物选择一个隐性基因变为历史(不可被其他事件阻止)。
时间机器 2 牌堆和弃牌堆交换 将历史与自然交换。

游戏测试

测试代码

#-*-coding:utf-8-*-
# @Author: suhang1596

import sys
import cmd
import random

def find(grade,playerList,layerNumber):
    for i in playerList:
        if( int( ( i - 1 ) / 2 ) == grade ):
            grade = i
            if grade >= pow( 2 , layerNumber ) - 1:
                return 1
            else:
                find( grade , playerList , layerNumber )

def creatCard(layerNumber,cardList):
    x = 1
    for layer in range( layerNumber ):
        for node in range( pow( 2 , layer + 1) ):
            for samenode in range( pow( 2 , layerNumber - layer - 1 ) ):
                cardList.append( x )
                cardList.append( x )
            x = x + 1

def test(playerNumber,layerNumber,hd):
    random.shuffle(card[layerNumber])
    player = []
    for i in range( playerNumber ):
        player.append(card[layerNumber][hd*i:int(hd*(progress+i))])
        player[i].sort()

    for j in range( playerNumber ):
        mark = 0
        if ( player[j][0] == 1 ) | ( player[j][0] == 2 ):
            for y in range( 1 , 3 ):
                if (( find( y , player[j] , layerNumber ) == 1 )) :
                    mark += 1
            if mark > 0:
                mainSuccessCount[layerNumber][playerNumber] += 1
            else:
                mainFailCount[layerNumber][playerNumber] += 1
        else:
            mainFailCount[layerNumber][playerNumber] += 1

if __name__ == '__main__':

    testTimes = 500
    rate = 1.0
    progress = 0.625
    beginHandcard = 4
    roundHandcard = 1
    testLayerFrom=4
    testLayerTo=5
    testPlayerFrom=3
    testPlayerTo=9

    print (u'您的设定是玩到%.2f%%的进度,' % (progress*100)),
    print (u'起始%2d张牌,每回合抽取%2d张牌!\n' % (beginHandcard,roundHandcard))

    card = []
    mainSuccessCount = []
    mainFailCount = []
    handcardNumber = []
    for c in range(0,10):
        card.append([])
        handcardNumber.append([])
        mainSuccessCount.append([])
        mainFailCount.append([])
        for m in range(0,10):
            mainSuccessCount[c].append(0)
            mainFailCount[c].append(0)

    for cardNumber in range(testLayerFrom,testLayerTo):
        creatCard(cardNumber,card[cardNumber])
        print (u'目前的牌组设定下,%d个等级、%4d张牌,' % (cardNumber,len(card[cardNumber]),)),
        print (u'玩到%.2f%%的进度有%4d张牌' % (progress,len(card[cardNumber])*progress))

    for i in range(testTimes):
        for testLayer in range(testLayerFrom,testLayerTo):
            for testPlayer in range(testPlayerFrom,testPlayerTo):
                handcardNumber[testLayer] = len(card[testLayer]) / testPlayer
                test(testPlayer,testLayer,handcardNumber[testLayer])

    print (u'\n经过%d次测试,\n' % (testTimes))
    for testLayer in range(testLayerFrom,testLayerTo):
        for testPlayer in range(testPlayerFrom,testPlayerTo):
            x = float(mainSuccessCount[testLayer][testPlayer])
            y = float(mainFailCount[testLayer][testPlayer])
            rate  = x / ( x + y )
            print (u'在%2d个人中进化成功率%.2f%%,' % (testPlayer,rate*100)),
            print (u'即成功了%2d个人' % (int(rate*testPlayer))),
            hui = (  len(card[testLayer]) * progress -  beginHandcard * testPlayer )  /  roundHandcard
            quan = hui/testPlayer
            print (u'需要轮%2d圈%3d个回合' % (quan,hui))
        print ('\n')

测试结果

测试结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容

  • 原书共371页,总计34万字,拆解版大约2.8万字,你仅需要2小时就能读完整本书。 《自私的基因》作者理查德·道金...
    惜她阅读 6,082评论 1 53
  • 背景与目的 公司打算做一款游戏类直播产品,通过搜索直播相关数据确定大致的用户特征,并进行用户调研去分析游戏直播用户...
    Cony_H阅读 1,118评论 0 0
  • 6月3日,周天,晴 今天妈妈带我去了博物馆,还看了古代人的东西,还去了图书馆,没有找到奥特曼的书,还去吃汉堡和红豆...
    康替留阅读 159评论 0 0
  • 原创/雨桐(笔名:冰儿) 开始写诗 原创/雨桐(笔名:冰儿) 月光下 触一脸笑颊 光阴里 挑万盏灯花 日子如诗 触...
    新媒体新势力阅读 160评论 0 0