腾讯极客挑战赛第四期:鹅罗斯方块——赛后复盘

本文是作者参加腾讯极客挑战赛第四期——鹅罗斯方块的赛后复盘,通过分析和改进启发式搜索算法,结合手动与自动操作,最终获得全国第49名,最高分31万。文章详细介绍了算法设计思路,包括Pierre Dellacherie、El-Tetris和改进算法,并反思了在提高分数上的不足。

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

1.比赛总结

  七月底的时候在网络上看到了这样一个赛事,赛题大概总结起来就是用代码玩一款十分经典的游戏俄罗斯方块,通过游戏得分来排名评比,觉得挺有意思,抱着随便试试的想法就参加了,结果最后获得了全国第49名,最终获得的最高分数是31万多一点,虽然和第一名的一百多万还是有不小的差距,需要改进反省的地方还有很多,但这一成绩还是基本达到了我的预期的,同时我也是成功获得了腾讯招聘的绿色通道,丰富了自己的履历。
在这里插入图片描述

2.比赛复盘

  在赛事官网可以找到俄罗斯方块游戏的比赛入口,进入游戏之后可以发现游戏的界面是一下这样的:
在这里插入图片描述
  光看这个游戏界面,这就是一个普通的俄罗斯方块游戏,但其实玄机藏在浏览器的控制台中,打开浏览器的控制台,很容易就可以找到这个游戏的源码,因为腾讯官方在控制台的代码资源中用注释告诉你了源码的网址。我们将整个游戏项目拉到本地之后,就可以“魔改代码”,大展身手了。
  在本地用IDE打开这个游戏项目,可以看到游戏使用JavaScript写的,而且是基于vue.js框架。虽然我的“主战场”是后端Java Web,但对前端JS还是比较熟悉的,特别是vue框架,“魔改代码”基本上还是绰绰有余的,所以我选择了直接在源码上进行代码添加,实现用算法跑俄罗斯方块。
  经过上网查询俄罗斯方块算法相关资料后,我了解到目前的主流俄罗斯方块AI算法是基于A*算法的启发式搜索。基本思路就是定义一个启发函数对当前局面进行评估,对于每一个当前即将下落的方块,遍历方块下落的所有情况——以各个形状在所有位置下落的情况,对于每一种情况,通过启发函数算出局面评估的评分,在所有情况中,评分最高的就是当前最优的下落情况,然后将当前方块旋转到该最优情况所对应的形状,再移动到对应最佳位置,下落即可。
  我的算法思路基本上就是以上所阐释

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值