Pascal版2048.doc_第1页
Pascal版2048.doc_第2页
Pascal版2048.doc_第3页
Pascal版2048.doc_第4页
Pascal版2048.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

program g2048;const dx:array1.4 of integer=(1,0,-1,0); dy:array1.4 of integer=(0,1,0,-1);var a:array0.5,0.5 of integer; spacei,spacej:array1.16 of integer; i,j,z:integer; step0:longint; q:boolean;procedure print; var k1,k2:integer; begin for k1:=1 to 4 do begin for k2:=1 to 4 do write(ak1,k2:4); writeln; end; end;function remove:boolean; var z1,z2,z3:integer; begin remove:=false; for z1:=1 to 4 do for z2:=1 to 4 do for z3:=1 to 4 do if az1,z2=az1+dxz3,z2+dyz3 then begin remove:=true;exit;end; end;function over:boolean; var k1,k2:integer; begin over:=false; for k1:=1 to 4 do for k2:=1 to 4 do if (ak1,k2=0) or remove then begin over:=true;exit;end; end;function jumpw(i1,i2,i3:integer):boolean; var k1:integer; begin jumpw:=true; for k1:=i3+1 to i1-1 do if ak1,i20 then jumpw:=false; end;function jumps(i1,i2,i3:integer):boolean; var k1:integer; begin jumps:=true; for k1:=i1+1 to i3-1 do if ak1,i20 then jumps:=false; end;function jumpa(i1,i2,i3:integer):boolean; var k1:integer; begin jumpa:=true; for k1:=i3+1 to i2-1 do if ai1,k10 then jumpa:=false; end;function jumpd(i1,i2,i3:integer):boolean; var k1:integer; begin jumpd:=true; for k1:=i2+1 to i3-1 do if ai1,k10 then jumpd:=false; end;procedure born; var k1,k2,k3,ra:integer; begin for k1:=1 to 4 do for k2:=1 to 4 do if ak1,k2=0 then begin inc(step0); spaceistep0:=k1; spacejstep0:=k2; end; if step0=1 then aspacei1,spacej1:=2 else begin ra:=random(step0-1)+1; aspaceira,spacejra:=2; end; print; q:=over; end;procedure try; var i1,i2,i3:integer; ch:char; move:boolean; begin ch:=#; move:=false; while (cha) and (chs) and (chw) and (chd) do read(ch); case ch of w: begin for i1:=2 to 4 do for i2:=1 to 4 do for i3:=1 to i1-1 do begin if ai1,i20 then begin if (ai3,i2=0) and (jumpw(i1,i2,i3) then begin ai3,i2:=ai1,i2;ai1,i2:=0;move:=true;break;end; if (ai3,i2=ai1,i2) and (jumpw(i1,i2,i3) then begin ai3,i2:=2*ai1,i2;ai1,i2:=0;move:=true;if ai3,i2=2048 then begin writeln(Yeah!I win!233);readln;halt;end else break;end; end; end; end; s: begin for i1:=3 downto 1 do for i2:=1 to 4 do for i3:=4 downto i1+1 do begin if ai1,i20 then begin if (ai3,i2=0) and (jumps(i1,i2,i3) then begin ai3,i2:=ai1,i2;ai1,i2:=0;move:=true;break;end; if (ai3,i2=ai1,i2) and (jumps(i1,i2,i3) then begin ai3,i2:=2*ai1,i2;ai1,i2:=0;move:=true;if ai3,i2=2048 then begin writeln(Yeah!I win!233);readln;halt;end else break;end; end; end; end; a: begin for i1:=1 to 4 do for i2:=2 to 4 do for i3:=1 to i2-1 do begin if ai1,i20 then begin if (ai1,i3=0) and (jumpa(i1,i2,i3) then begin ai1,i3:=ai1,i2;ai1,i2:=0;move:=true;break;end; if (ai1,i3=ai1,i2) and (jumpa(i1,i2,i3) then begin ai1,i3:=2*ai1,i2;ai1,i2:=0;move:=true;if ai1,i3=2048 then begin writeln(Yeah!I win!233);readln;halt;end else break;end; end; end; end; d: begin for i1:=1 to 4 do for i2:=3 downto 1 do for i3:=4 downto i2+1 do begin if ai1,i20 then begin if (ai1,i3=0) and (jumpd(i1,i2,i3) then begin ai1,i3:=ai1,i2;ai1,i2:=0;move:=true;break;end; if (ai1,i3=ai1,i2) and (jumpd(i1,i2,i3) then begin ai1,i3:=2*ai1,i2;ai1,i2:=0;move:=true;if ai1,i3=2048 then begin writeln(Yeah!I win!233);readln;halt;end else break;end; end; end; end; / else begin writeln(Wronginput,idiot!Input again:);read(ch);end; end; if move then begin born;step0:=0;end else writeln(Cannot move); end;begin for i:=0 to 5 do for j:=0 to 5 do ai,j:=0; step0:=0; randomize; for z:=1 to 2 do begin i:=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论