欢迎来到bruno的blog。
Tetris
此次项目学习涉及了多方面的知识,如:单元测试,AI算法基础,注解等方面。
应用介绍
在El-AI算法的帮助下,游戏得分突破了6万大关(本人手残只能玩到200分)
El-Tetris算法
El-Tetris 算法是通过检测每一次掉落的骨牌的形状和位置来将其放置到最佳位置,其前身为Pierre Delacherie 算法。
在讲算法之前,我们应该先了解俄罗斯方块应该得怎么玩:
- 得放到哪个位置才好?
- 要怎么旋转到哪个方向?
然后再根据高玩得出的经验,我们再把游戏得分经验拆分成下面几点:
- 怎么放才能尽量不造成“空洞”?
- 放的时候要怎么才能清除最多的行数?
- 目前最高处的位置有多高?
- 清除了多少行?
- 清除了多少列?
- “空洞”的深度有多深?
所以根据这6个经验,我们的AI算法主要着重于这6个方面:
- Landing Height。表示当前方块放置之后的高度。
- Rows eliminated。表示当前方块落下后被消减的行数。
- Row Transitions。代表行变换的次数。
- Column Transitions。代表列变换的次数。
- Number of Holes。代表图中空洞的个数。
- Well Sums。表示 “(原翻译为 井)” 深度的连加和。在此 一个 (原翻译为 井) 代表左右都有方块,而中间处为 “空洞” 的地方。
算法根据这6个方面的权重来算出评估函数,权重主要通过 particle swarm optimization 训练而出。
权重:
Feature |
---|