前言
俄罗斯方块是一款地球人都知道的游戏,规则简单,变化无穷。最近正好在看React的,想起来以前用js实现过一个简单版本,这几天就用React重做了一个升级版,并将AI相关的功能也加了进去。
目标
先明确一下这个小项目的边界和需求,大致如下:
- 实现一个经典版本的俄罗斯方块游戏
- 游戏包含最经典的Tetris形状,同时支持方便的扩展其他形状
- Tetris可以移动、变形
- 可以切换游戏模式,由人控制或者AI控制
- 人操控时,每隔一定时间若无输入,Tetris自然落下一格
- AI控制时,必须模拟人类的操作过程
现有项目
俄罗斯方块的实现版本非常多,在做前一个版本的俄罗斯方块时,参考过Github上的一个项目(https://github.com/LeeYiyuan/tetrisai ),这是一个js实现的俄罗斯方块,当时主要参考了AI算法的内容。这个项目做的非常不错,但是有一个小问题,也不算不上是问题吧,就是它的AI,每次新砖块都是直接从最后目标位置直接变形后落下,看不到左右和变形移动的过程(源码没详细读,或许有,只是太快了),显得有点假,除此之外都很棒。
技术/工具
- React,技术框架
- npm,依赖管理和工程化脚本管理
- webpack,编译工具集
- Mocha,单元测试
- 遗传算法,AI训练
分章节
源码和在线演示
Github地址:https://github.com/hoyt-tian/tetirs
在线效果 http://open.hoyt-tian.com/Tetris/ ,服务器在美国,访问可能有点慢 :(