V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
af463419014
V2EX  ›  游戏

突然想到一个很有意思的问题,俄罗斯方块有没有保证玩家输掉的出方块的策略

  •  
  •   af463419014 · 2017-05-27 17:01:09 +08:00 · 3259 次点击
    这是一个创建于 2730 天前的主题,其中的信息可能已经有所发展或是发生改变。
    设计一个出方块的策略,让玩家必定输掉

    假设:
    0.游戏界面是 10*20 的大小(也可以考虑其他大小情况)
    2.玩家能看到下一个会出现的方块
    3.玩家有足够的时间进行计算,并将方块放到指定的位置
    4.假设玩家足够的聪明
    5.我们设计的服务器能看到玩家当前游戏界面的游戏情况,并根据当前界面的游戏情况进行计算,指定下下个方块将出什么(因为玩家能看到当前方块和下一个方块,所以服务器只能决定下下个方块)


    问题:
    0.能不能给服务器设计一种出方块的策略,保证玩家一定输掉游戏
    1.如果能,策略是什么,需要多少步
    2.如果不能,能证明为什么不能吗
    17 条回复    2017-05-31 16:58:13 +08:00
    nirvam
        1
    nirvam  
       2017-05-27 17:18:29 +08:00   ❤️ 1
    至少有一种:不停出 S 块和 Z 块
    https://en.wikipedia.org/wiki/Tetris#End_of_play
    Gerhman
        2
    Gerhman  
       2017-05-27 17:59:28 +08:00
    @nirvam S 块是什么样的
    sun1991
        4
    sun1991  
       2017-05-27 18:03:51 +08:00
    下落速度越来越快
    kolor
        5
    kolor  
       2017-05-27 18:03:58 +08:00
    口口口


    口口口

    @Gerhman 见过这种类型的方块吗
    kolor
        6
    kolor  
       2017-05-27 18:04:31 +08:00
    @kolor 咦,空格被自动缩进了
    Gerhman
        7
    Gerhman  
       2017-05-27 18:05:10 +08:00
    @kolor 没 但这是 C 型的啊
    hu6360567
        8
    hu6360567  
       2017-05-27 18:06:41 +08:00 via iPhone   ❤️ 1
    之前读过相关文章,在标准的俄罗斯方块中只有所有的都是田字方块是唯一已知无解的方案
    whileFalse
        9
    whileFalse  
       2017-05-27 21:54:23 +08:00
    @hu6360567 俄罗斯方块的屏幕是几行几列?
    af463419014
        10
    af463419014  
    OP
       2017-05-27 22:58:51 +08:00
    @hu6360567 对哦,要是底边不是 10,而是 11 或者 15 这样的奇数,全田字确实无解
    af463419014
        11
    af463419014  
    OP
       2017-05-27 23:00:02 +08:00
    @nirvam 这个连接里的好像很有道理,不过我表示英语不好,读起来亚历山大
    af463419014
        12
    af463419014  
    OP
       2017-05-27 23:02:04 +08:00
    @sun1991 假设玩家有足够的时间思考并放到指定的位置
    所以不考虑下落的速度,只考虑方块如何拼接
    考虑下落速度这个问题就没意思了
    8023
        13
    8023  
       2017-05-28 10:14:10 +08:00 via Android
    1. 不断出 s 块,直到出现循环
    2. 出 s 块,出 z 块
    3. 不断出 z 块,直到出现循环
    4. 出 z 块,出 s 块
    5. 重复以上步骤
    nirvam
        14
    nirvam  
       2017-05-31 14:40:59 +08:00
    @af463419014

    这是 S 块:
    _oo
    _o_
    oo_

    这是 Z 块:
    oo_
    _o_
    _oo

    至于策略,就像 @8023 说的,不停地连续出 S 或者 Z,或者两者交替。

    如果是完全均匀的随机数发生器来产生块的话,理论上玩家总是会遇到特定的序列包含一连串 SZ,所以这种情况下玩家是必遇到 game over 的。所以常规的 Tetris 实现采用的随机数发生器是调整过的,确保不会出现大量连续的 S 和 Z。当然也有“邪恶版”一出来先给你一堆 SZ 来增加难度。
    nirvam
        15
    nirvam  
       2017-05-31 14:44:20 +08:00
    @Gerhman 不是哦,第一,这个依赖于屏宽是奇数,然而大多数标准 Tetris 屏是 10 宽的:
    "the playfield is 10 cells wide and at least 22 cells high, with the topmost two hidden" -
    http://tetris.wikia.com/wiki/Tetris_Guideline

    第二,只出现 S 和 Z 块也能玩死玩家的,因为单凭这两种块必定会产生无法填补的洞。
    8023
        16
    8023  
       2017-05-31 15:27:49 +08:00 via Android
    @nirvam
    应该是

    Z:
    x x _
    _ x x

    S:
    _ x x
    x x _

    吧?
    nirvam
        17
    nirvam  
       2017-05-31 16:58:13 +08:00
    @8023 啊啊,对的。我说的那个应该算是扩展包了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.