『新人求助,本机AC,提交RE+WA+TLE』请你们教我怎么玩2048
pascal吧
全部回复
仅看楼主
level 14
139457820 楼主
请你们教我怎么玩2048  std2048.c/std2048.cpp/std2048.pas
题目描述
  shy是一个很无聊的人。他最近上课听不懂,在下面拿手机玩起了2048!【非专业人员或低于12周岁的儿童请勿模仿】
  啊,shy好渣啊,几天下来不靠悔步最多只玩出过4096。【听说靠悔步能玩出65536?!】其实大多数情况还是手贱,一不小心划下屏幕什么的就全●完●了。
  shy是个很懒的人Σ( ° △ °|||)︴现在shy从课堂回来后,想写一个AI,帮助他自动完成2048。但是shy还要准备选考,于是他把问题推荐给了正在(潜)水贴吧的你。
输入格式
  shy准备了一个std2048.pas的Pascal库。这个库有这么几个量是公开的:
  常量:
  UP=1,LEFT=2,DOWN=3,RIGHT=4[longint]表示方向
  变量:
  Step[longint]表示历经的操作数
  Show[array[1..4,1..4]of longint]表示现在的矩阵状态,Show[i,j]=0表示这个格子为空,否则这个格子是一个2的幂次的数
  Game[boolean]表示游戏是否结束
  函数过程:
  init[procedure]初始化游戏
  NextNumber[function=longint]返回下一个随机出现的数是2还是4
  MoveAble(o)[function=boolean]返回是否可以向这个方向移动,例如:MoveAble(UP)=true表示现在向上移动是合法的
  Move(o)[procedure]向这个方向移动,例如:Move(Left)
  Print[procedure]输出Show矩阵的值,4×4个数
  MaxGrid[function=longint]返回当前Show矩阵中最大的2的幂次的数
我们可以写一些AI来做这个2048。比如:
std2048Test1.pas
uses std2048;
var
 Now,Max:longint;
begin
 repeat
  init;
  while Game do Move(random(4)+1);
  Now:=MaxGrid;
  if Now>Max then Max:=Now;
  writeln('Now=',Now:5,' Max=',Max:5)
 until false
end.
这个程序写的内容意思就是,随机往某个方向移动!我们发现他的最大值一般在64~128漂浮,偶尔能到256,历史最大值是512。
我们可以继续来一些贪心,比如优先往上移,无法往上移就往左移,无法往左就往右,无法往右就往下。比如:
std2048Test2.pas
uses std2048;
var
 Now,Max:longint;
begin
 repeat
  init;
  while Game do
  if MoveAble(UP)   then Move(Up) else
  if MoveAble(LEFT)  then Move(Left) else
  if MoveAble(RIGHT)  then Move(RIGHT) else
                 Move(DOWN);
  Now:=MaxGrid;
  if Now>Max then Max:=Now;
  writeln('Now=',Now:5,' Max=',Max:5)
 until false
end.
这个的历史最大值也是512(当然跑久点就不一定了)。但是我们可以说他比上一个随机程序好,因为平均情况下他的最大值是在128~256浮动,偶尔会降到64。
利用这个std2048.pas的库,你能编出怎样高超的AI呢?\(≧▽≦)/
链接下载到2楼,有疑问可以回复。
上面的代码请谨慎复制,为了保留格式空格是全角的。将下载的库中std2048.pas编译一下,即可调用该库。类似交互式编程题一道。
当然,如果有时间,可以用这个库作为逻辑基础开发一个2048的小游戏。
2017年04月05日 12点04分 1
level 14
139457820 楼主
学oi的凭什么一定要会装系统!学oi的凭什么一定要会修电脑!学oi的凭什么一定要会做ppt!学oi的凭什么一定要会做视频!学oi的凭什么一定要会写外挂!学oi的凭什么一定要会建网站!这些东西明明都和oi要学的东西无关!我想说的是
...
这些我都会,价格好商量,有意者面谈,长得漂亮的妹子免单。
——假神名曰Keller
2017年04月05日 12点04分 2
2017年04月05日 12点04分
level 10
夭寿了,AI那么难的东西怎么写。
还不如去写个界面出来。
[滑稽]
2017年04月05日 12点04分 3
界面是一个游戏的外在,AI是一个游戏的内在;虽然我确实是个看外在的人、、、、
2017年04月05日 12点04分
没有AI我还是可以玩2048[汗],所以还不如给我一个界面。
2017年04月05日 13点04分
@LJ37NX 界面在4.8后可能会出
2017年04月05日 13点04分
level 14
139457820 楼主
预告一下,界面版的std2048可能就要空降。今晚暂时做出了游戏的主部分,还剩下UI和图片的修缮了;
放一些图:
用了freepascal自带的ptc库,shy现在用的是fp3.0.2(有些语法和原来的fp不一样了哦,比如integer=longint了)
这个库需要DirectX和OpenGL才能运行程序。
估计不久就会发出来这个程序,而且这个程序是用了升级的std2048库为逻辑做出的!用shy自创的动画框架。
没有人敢来写AI有点小惋惜(o゜▽゜)o☆
2017年04月09日 14点04分 4
level 14
139457820 楼主
放一张直播玩的图、、
有什么意见现在提也可以
2017年04月09日 15点04分 6
level 9
可以换张背景么[汗]
2017年04月10日 13点04分 7
该意见容我拒绝[笑眼]
2017年04月10日 13点04分
@139457820 我支持换背景图
2017年05月01日 14点05分
1