如何用最简单的语句写一个俄罗斯方块?

0 条评论


  • 8

    御先天狐「旅行就是相遇与分别」

    紫数EEhentai蒋学驽 等 8人赞同
    你好,我是俄罗斯方块吧的小吧,俄罗斯方块中国群组的管理员。
    简单叙述一下吧,现代方块,可能没有你想象的那么简单,在这里只是简要提一下,详细的可以参考Wikipedia和t-wiki。
    现代俄罗斯方块,准确说应该是从任天堂的fc方块之后的规定(任天堂和天正的俄罗斯方块现在也叫“渣方块”或者“古典方块”)。而目前我们常说的现代俄罗斯方块,只是在SRS(超级旋转系统)和ARS(Arika旋转系统)下的俄罗斯方块。
    具有代表性的是具有spin,而spin的前提就是踢墙表(wallkick),这块的内容请自行查找wiki,通过踢墙,可以达到特殊的旋转操作,在某些方块中会进行加分。光是这一点就足以超出你所言简单语句写代码。
    其次,现代方块中有出块顺序的规定,常见的是bag7和history4,bag7是7个方块一包,一包内顺序随机,虽然听起来容易,不过不一定能写对。
    其次hold系统,这个不一定是必要的,比如非官方的cultris ii中就没有hold,但是引入了180°spin的操作,其方块出块序列也是纯随机的。
    另外现代方块需要有next。
    看了以上这些“规范”,俄罗斯方块真的很容易写吗emmmmmmm……

    建议写程序前理解下Wikipedia……很多作者写出来的方块都是群内称为“渣方块”的俄罗斯方块……几行写出来大概是不存在的。

    另之前看到奇客上报道有人用 生命游戏 写出了俄罗斯方块。虽然与主题无关,顺便提一下。

    不过题主也没有表达清楚……最简单的语句是指代码数量少呢,还是都用基础的语法呢,如果是基础的语法又是什么样的定义呢?
    更新于 2017-10-20 23:28:12 8 条评论


  • 2

    墨影程序员一枚

    墨影神楽坂真冬 赞同

    一般来说俄罗斯方块可以分做四个系统


    方块制造器:

    随机制造出方块


    战场:

    所有正在掉落和已掉落方块


    算分系统:

    掉落后,进行一个parsing,看看有没有组成一条线,有的话,在地图删除,加分。


    图形系统:

    GUI,战场,方块制造器的图像

    发布于 2017-09-18 20:12:20 0 条评论


  • 1

    MoeShan多产奶,做一头合格的奶牛

    帕斯卡 赞同

    举实例佐证@帕斯卡‍ 的回答:

    可能一个最基础的俄罗斯方块只需要不到1000行代码(也有可能不到500行)

    前年实训pipelineTD岗,在Maya里写过俄罗斯方块,翻了一下之前的工程,mel + python一共400行。

    .py文件

    .py文件

    .mel文件

    .mel文件

    不过那俩月刚开始学python和mel,写的肯定是粗糙,不过至少最基本的玩法实现了。

    发布于 2018-01-03 10:08:52 0 条评论


  • 1

    帕斯卡Programmer

    如果你指的是自己写的代码,那么我想最少的应该是使用游戏引擎进行编写,可能一个最基础的俄罗斯方块只需要不到1000行代码(也有可能不到500行)

    如果你指的是总代码量,那么在PC上做一个俄罗斯方块还使用游戏引擎的话,那么代码量包括游戏引擎,是巨大的。所以你可以考虑使用OpenGL来写一个,那么代码量会变少,但还是很多。

    那最少的应该是什么,我想题主应该小时候玩过那种只能玩俄罗斯方块的掌机,那上面的代码应该是最少的,如果依靠现在科技,不是用汇编语言,那么做一个俄罗斯方块应该可以让总代码量降到和在PC上使用游戏引擎一样的代码量,不过这相当于把你的游戏引擎变成了硬件配置,集成电路而已。

    发布于 2017-10-21 22:46:31 0 条评论

  • 2个回答被折叠 (为什么折叠?)


  • 2

    Doom Liang我被折叠的回答,都是精华

    if 俄罗斯

    else 方块

    发布于 2017-09-18 12:32:32 0 条评论


  • 1

    依旧是亦玖娱乐玩家

    犯下的错误会积累,获得的成功会消失

    发布于 2017-09-21 20:26:20 0 条评论

  • 登录奶牛关账号即可参与讨论