【pascal程序问题】我的这个程序帮忙看看哪里错了???
pascal吧
全部回复
仅看楼主
level 6
天启雪原 楼主
program yx2048;
uses crt;
type pan1=array[1..4,1..4]of integer;
var i,j:integer;biggest_one:integer;pan:pan1;
procedure qishi(n:integer);
var i,x,y:integer;
begin
randomize;
i:=0;
repeat
x:=random(3)+1;
y:=random(3)+1;
if pan[x,y]=0 then
begin
pan[x,y]:=2;
i:=i+1;
end;
until i=n;
end;
procedure writeoutpan;
var i,j:integer;
begin clrscr;
for i:=1 to 4 do
begin
for j:=1 to 4 do
if pan[i,j]=0 then
write(* *) else
write(pan[i,j]:5);
writeln;
end;
end;
procedure check_for_biggest;
var i,j:integer;
begin
for i:=1 to 4 do
for j:=1 to 4 do
if pan[i,j]>biggest_one then
biggest_one:=pan[i,j];
end;
function check_for_full(pan:pan1):integer;
var i,j,m:integer;
begin
m:=0;
for i:=1 to 4 do
for j:=1 to 4 do
if pan[i,j]=0 then
m:=m+1;
check_for_full:=m;
end;
procedure play;
var k:char;i,j,a:integer;c:boolean;yidong:integer;
begin
c:=false;yidong:=0;
repeat
read(k);
case k of
*a*:begin
for i:=1 to 4 do
begin a:=1;
for j:=1 to 4 do
if pan[i,j]<>0 then
if a=1 then
begin
pan[i,a]:=pan[i,j];
pan[i,j]:=0;
a:=a+1;
end else
if pan[i,j]=pan[i,a-1] then
begin
pan[i,a-1]:=pan[i,a-1]*2;
pan[i,j]:=0;
end else
begin
pan[i,a]:=pan[i,j];
pan[i,j]:=0;
a:=a+1;
end;
end;
end;
*d*:begin
for i:=1 to 4 do
begin a:=4;
for j:=4 downto 1 do
if pan[i,j]<>0 then
if a=4 then
begin
pan[i,a]:=pan[i,j];
pan[i,j]:=0;
a:=a-1;
end else
if pan[i,j]=pan[i,a+1] then
begin
pan[i,a+1]:=pan[i,a+1]*2;
pan[i,j]:=0;
end else
begin
pan[i,a]:=pan[i,j];
pan[i,j]:=0;
a:=a-1;
end;
end;
end;
*w*:begin
for j:=1 to 4 do
begin a:=1;
for i:=1 to 4 do
if pan[i,j]<>0 then
if a=1 then
begin
pan[a,j]:=pan[i,j];
pan[i,j]:=0;
a:=a+1;
end else
if pan[a-1,j]=pan[i,j] then
begin
pan[a-1,j]:=pan[a-1,j]*2;
pan[i,j]:=0;
end else
begin
pan[a,j]:=pan[i,j];
pan[i,j]:=0;
a:=a+1;
end;
end;
end;
*s*:begin
for j:=1 to 4 do
begin a:=4;
for i:=4 downto 1 do
if pan[i,j]<>0 then
if a=4 then
begin
pan[a,j]:=pan[i,j];
pan[i,j]:=0;a:=a-1;
end else
if pan[a-1,j]=pan[i,j] then
begin
pan[a-1,j]:=pan[a-1,j]*2;
pan[i,j]:=0;
end else
begin
pan[a,j]:=pan[i,j];
pan[i,j]:=0;a:=a-1;
end;
end;
end;
end;
yidong:=yidong+1;
writeoutpan;
check_for_biggest;
case check_for_full(pan) of
0:begin writeln(*You lose*);c:=true;writeln(*best:*,biggest_one);
writeln(*step:*,yidong);end;
1:qishi(1);
else qishi(2)
edn;
until c;
end;
begin
for i:=1 to 4 do
for j:=1 to 4 do
pan[i,j]:=0;
qishi(2);
biggest_one:=2;
writeoutpan;
play;
readln;
clrscr;
writeln(*Thank you for playing*);
write(*This game is designed by A.Snowland Yiserce*);
readln;
write(*Bye Bye!*);
readln;
end.
2014年09月12日 14点09分 1
level 11
最开始的随机←_←看不懂 然后用fpc检查一下 太长了看不下去
2014年09月13日 12点09分 2
Thank you any way!!!!
2014年09月13日 13点09分
回复 天启雪原 :新手←_←不是太懂 写过最长的也就200行
2014年09月13日 13点09分
level 1
看不懂
2014年11月30日 14点11分 3
level 9
END拼成了EDN
2014年12月02日 10点12分 4
.........
2014年12月10日 09点12分
回复 天启雪原 :确实是拼错了啊
2014年12月10日 12点12分
回复 猎火电脑工作室 :谢了
2014年12月18日 10点12分
回复 天启雪原 :不用。期待你的2048发布的那一天。到时记得at我。
2014年12月18日 10点12分
level 15
←_←我还是默默orz吧
2014年12月18日 11点12分 5
1