level 3
小闪电儿⚡
楼主
type qi=record
t:1..2;
n:1..100;
m:1..100;
end;
var x,y,n,t,i,j:integer;
h:array[0..6,0..6]of qi;
procedure out(h:array of qi);
var out:array[1..5,1..5]of integer;
i1,j1,r,n:integer;
begin
n:=0;
for i1:=1 to 5 do
for j1:=1 to 5 do
begin
n:=n+1;
out[i1,j1]:=h[i1,j1].t;
for r:=2 to h[i1,j1].n do
out[i1,j1]:=out[i1,j1]*10+h[i1,j1].t;
write(out[i1,j1]:7,' ');
if (n mod 5=0) then writeln;
end;
function check(x,y,t:integer;h:array of qi):boolean;
begin
check:=false;
if (h[x,y].t=t)or(h[x,y].t=0)then check:=true;
end;
procedure xia(x,y,t:integer;h:array of qi);
begin
h[x,y].t:=t;
h[x,y].n:=h[x,y].n+1;
end;
function win(h:array of qi):=boolean;
var i,j,a,b:integer;
begin
win:=false;
a:=0;
b:=0;
if n>1 then begin
for i:=1 to 5 do
for j:=1 to 5 do
begin
if (h[i,j].t=1) then a:=a+1;
if (h[i,j].t=2) then b:=b+1;
end;
if (a=n)or(b=n) then win:=true;
end;
end;
procedure boom(i,j:integer;h:array of qi);
begin
h[i-1,j].t:=h[i,j].t;
h[i+1,j].t:=h[i,j].t;
h[i,j-1].t:=h[i,j].t;
h[i,j+1].t:=h[i,j].t;
h[i-1,j].n:=h[i,j].n;
h[i+1,j].n:=h[i,j].n;
h[i,j-1].n:=h[i,j].n;
h[i,j+1].n:=h[i,j].n;
h[i,j].t:=0;
h[i,j].n:=0;
end;
procedure checkout(h:array of qi);
var i,j:integer;
begin
i:=0;
j:=0;
while (i<>6) and (j<>6) do
for i:=0 to 6 do
for j:=0 to 6 do
if h[i,j].n>h[i,j].m then begin
boom(i,j,h);
i:=0;
j:=0;
out(h);
if win(h,n) then break;
end;
end;
begin {mian}
n:=0;
for i:=1 to 5 do
for j:=1 to 4 do begin h[i,j].t:=0; h[i,j].n:=0; end;
h[1,5].m:=2;h[1,1].m:=2;h[5,1].m:=2;h[5,5].m:=2;
for j:=2 to 4 do begin h[1,j].m:=3;h[5,j].m:=3;
for i:=2 to 4 do begin h[i,1].m:=3;h[i,5].m:=3;
for i:=2 to 4 do
for j:=2 to 4 do h[i,j].m:=4;
out(h);
while not win(h,n) do
read(x,y);
if not check(x,y,t,h) then write(' Wrong!!!!! ')
else begin
n:=n+1;
t:=(n mod 2)+1;
xia(x,y,t,h);
checkout(h,n);
writeln;
write('Win!!!');
readln;
end.
2015年01月11日 12点01分
1
t:1..2;
n:1..100;
m:1..100;
end;
var x,y,n,t,i,j:integer;
h:array[0..6,0..6]of qi;
procedure out(h:array of qi);
var out:array[1..5,1..5]of integer;
i1,j1,r,n:integer;
begin
n:=0;
for i1:=1 to 5 do
for j1:=1 to 5 do
begin
n:=n+1;
out[i1,j1]:=h[i1,j1].t;
for r:=2 to h[i1,j1].n do
out[i1,j1]:=out[i1,j1]*10+h[i1,j1].t;
write(out[i1,j1]:7,' ');
if (n mod 5=0) then writeln;
end;
function check(x,y,t:integer;h:array of qi):boolean;
begin
check:=false;
if (h[x,y].t=t)or(h[x,y].t=0)then check:=true;
end;
procedure xia(x,y,t:integer;h:array of qi);
begin
h[x,y].t:=t;
h[x,y].n:=h[x,y].n+1;
end;
function win(h:array of qi):=boolean;
var i,j,a,b:integer;
begin
win:=false;
a:=0;
b:=0;
if n>1 then begin
for i:=1 to 5 do
for j:=1 to 5 do
begin
if (h[i,j].t=1) then a:=a+1;
if (h[i,j].t=2) then b:=b+1;
end;
if (a=n)or(b=n) then win:=true;
end;
end;
procedure boom(i,j:integer;h:array of qi);
begin
h[i-1,j].t:=h[i,j].t;
h[i+1,j].t:=h[i,j].t;
h[i,j-1].t:=h[i,j].t;
h[i,j+1].t:=h[i,j].t;
h[i-1,j].n:=h[i,j].n;
h[i+1,j].n:=h[i,j].n;
h[i,j-1].n:=h[i,j].n;
h[i,j+1].n:=h[i,j].n;
h[i,j].t:=0;
h[i,j].n:=0;
end;
procedure checkout(h:array of qi);
var i,j:integer;
begin
i:=0;
j:=0;
while (i<>6) and (j<>6) do
for i:=0 to 6 do
for j:=0 to 6 do
if h[i,j].n>h[i,j].m then begin
boom(i,j,h);
i:=0;
j:=0;
out(h);
if win(h,n) then break;
end;
end;
begin {mian}
n:=0;
for i:=1 to 5 do
for j:=1 to 4 do begin h[i,j].t:=0; h[i,j].n:=0; end;
h[1,5].m:=2;h[1,1].m:=2;h[5,1].m:=2;h[5,5].m:=2;
for j:=2 to 4 do begin h[1,j].m:=3;h[5,j].m:=3;
for i:=2 to 4 do begin h[i,1].m:=3;h[i,5].m:=3;
for i:=2 to 4 do
for j:=2 to 4 do h[i,j].m:=4;
out(h);
while not win(h,n) do
read(x,y);
if not check(x,y,t,h) then write(' Wrong!!!!! ')
else begin
n:=n+1;
t:=(n mod 2)+1;
xia(x,y,t,h);
checkout(h,n);
writeln;
write('Win!!!');
readln;
end.