Tetris(初学Java第六篇)

本文介绍了使用Java实现Tetris游戏的AI算法,基于El-Tetris和Pierre Delacherie算法,重点在于游戏得分优化。同时,讲解了单元测试的重要性,通过Junit进行测试,包括@Rule、@Before、@Test、@After和@Ignore等注解的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎来到bruno的blog。

Tetris

此次项目学习涉及了多方面的知识,如:单元测试,AI算法基础,注解等方面。

应用介绍

在这里插入图片描述
在El-AI算法的帮助下,游戏得分突破了6万大关(本人手残只能玩到200分)

El-Tetris算法

El-Tetris 算法是通过检测每一次掉落的骨牌的形状和位置来将其放置到最佳位置,其前身为Pierre Delacherie 算法。

在讲算法之前,我们应该先了解俄罗斯方块应该得怎么玩:

  1. 得放到哪个位置才好?
  2. 要怎么旋转到哪个方向?

然后再根据高玩得出的经验,我们再把游戏得分经验拆分成下面几点:

  1. 怎么放才能尽量不造成“空洞”?
  2. 放的时候要怎么才能清除最多的行数?
  3. 目前最高处的位置有多高?
  4. 清除了多少行?
  5. 清除了多少列?
  6. “空洞”的深度有多深?

所以根据这6个经验,我们的AI算法主要着重于这6个方面:

  1. Landing Height。表示当前方块放置之后的高度。
  2. Rows eliminated。表示当前方块落下后被消减的行数。
  3. Row Transitions。代表行变换的次数。
  4. Column Transitions。代表列变换的次数。
  5. Number of Holes。代表图中空洞的个数。
  6. Well Sums。表示 “(原翻译为 井)” 深度的连加和。在此 一个 (原翻译为 井) 代表左右都有方块,而中间处为 “空洞” 的地方。

算法根据这6个方面的权重来算出评估函数,权重主要通过 particle swarm optimization 训练而出。

权重:

Feature
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值