你这也能算游戏,看我来一个推BOX:
BOX.pas
program ex;
uses graph,crt,wincrt,windows;
label 1,2;
type kn=record
x,y:integer;
end;
var a,a1,a2:array[1..100,1..100]of char;
m,n,i,j,top:integer;
ch:char;
st,st1:string;
man:kn;
f:text;
s1,s2:integer;
t1,t2,t3,t4,t11,t12,t13,t14:word;
box:array[1..100]of kn;
errcode,gd,gm,k,z:integer;
procedure man1(x,y:integer);
var i,j:integer;
begin
setcolor(green);
for i:=x to x+30 do
line(i,y,i,y+30);
setcolor(red);
line(x+10,y,x+20,y);
line(x+10,y,x+5,y+10);
line(x+20,y,x+25,y+10);
line(x,y+10,x,y+20);
line(x+29,y+10,x+29,y+20);
for i:=13 to 17 do
line(x+i,y,x+i,y+10);
for i:=10 to 20 do
line(x,y+i,x+29,y+i);
circle(x+5,y+25,3);
circle(x+25,y+25,3);
end;
procedure x_ground(x,y:integer);
var i,j:integer;
begin
setcolor(green);
for i:=x to x+30 do
line(i,y,i,y+30);
setcolor(13);
for i:=x+13 to x+17 do
line(i,y+13,i,y+17);
circle(x+15,y+15,5);
end;
procedure x_box(x,y:integer);
var i,j:integer;
begin
setcolor(13);
for i:=x to x+30 do
line(i,y,i,30+y);
setcolor(red);
line(x,y,x,30+y);
line(x,30+y,30+x,30+y);
line(30+x,30+y,30+x,y);
line(30+x,y,x,y);
line(x,y+6,x+30,y+6);
line(x,y+24,x+30,y+24);
line(x+6,y+6,x+6,y+24);
line(x+24,y+6,x+24,y+24);
line(x+6,y+9,x+24,y+9);
line(x+6,y+12,x+24,y+12);
line(x+6,y+15,x+24,y+15);
line(x+6,y+18,x+24,y+18);
line(x+6,y+21,x+24,y+21);
circle(x+3,y+3,1);
circle(x+27,y+27,1);
circle(x+27,y+3,1);
circle(x+3,y+27,1);
end;
procedure ground(x,y:integer);
var i,j:integer;
begin
setcolor(green);
for i:=x to x+30 do
line(i,y,i,y+30);
end;
procedure wall(x,y:integer);
var i,j:integer;
begin
setcolor(red);
for i:=x to x+30 do
line(i,y,i,30+y);
setcolor(white);
i:=y;
while i<=30+y do
begin
line(x,i,30+x,i);
i:=i+5;
end;
for i:=1 to 3 do
begin
line(x,y+(i-1)*10,x,y+i*10-5);
line(x+10,y+(i-1)*10,x+10,y+i*10-5);
line(x+20,y+i*10-10,x+20,y+i*10-5);
end;
for i:=1 to 3 do
for j:=1 to 3 do
line(x+i*10-5,y+j*10-5,x+i*10-5,y+j*10);
end;
procedure box1(x,y:integer);
var i,j:integer;
begin
setcolor(yellow);
for i:=x to x+30 do
line(i,y,i,30+y);
setcolor(red);
line(x,y,x,30+y);
line(x,30+y,30+x,30+y);
line(30+x,30+y,30+x,y);
line(30+x,y,x,y);
line(x,y+6,x+30,y+6);
line(x,y+24,x+30,y+24);
line(x+6,y+6,x+6,y+24);
line(x+24,y+6,x+24,y+24);
line(x+6,y+9,x+24,y+9);
line(x+6,y+12,x+24,y+12);
line(x+6,y+15,x+24,y+15);
line(x+6,y+18,x+24,y+18);
line(x+6,y+21,x+24,y+21);
circle(x+3,y+3,1);
circle(x+27,y+27,1);
circle(x+27,y+3,1);
circle(x+3,y+27,1);
end;
function ok:boolean;
var i,j:integer;
begin
for i:=1 to m do
for j:=1 to n do
if a[i,j]='B' then
begin
ok:=true;
exit;
end;
ok:=false;
end;
procedure print;
var i,j:integer;
begin
top:=0;
{ textbackground(blue);
textcolor(yellow);
gotoxy(1,2);
gettime(t11,t12,t13,t14);
write('You have done it for ');
if t13-t3>=0 then
writeln(t12-t2,':',t13-t3)
else writeln(t12-t2-1,':',t13-t3+60);
writeln('You have moved ',s2,' time(s).');
write('1:turn back to last turn. 2:do it again. 3:choose the mission. 4:close the file.');
} for i:=1 to m do
begin
for j:=1 to n do
begin
if (a[i,j]='S')or(a[i,j]='M') then
begin
man.x:=i;
man.y:=j;
end else
if (a[i,j]='B')or(a[i,j]='R') then
begin
inc(top);
box[top].x:=i;
box[top].y:=j;
end;
if a[i,j]='#' then wall(j*30-30,i*30-30)
else
if a[i,j]='.' then ground(j*30-30,i*30-30)
else
if a[i,j]='S' then man1(j*30-30,i*30-30)
else
if a[i,j]='B' then box1(j*30-30,i*30-30)
else
if a[i,j]='T' then x_ground(j*30-30,i*30-30)
else
if a[i,j]='R' then x_box(j*30-30,i*30-30)
else
if a[i,j]='M' then man1(j*30-30,i*30-30);
end;
end;
end;
begin
textbackground(blue);
assign(f,'box.txt');
reset(f);
clrscr;
cursoroff;
gotoxy(1,1);
textcolor(yellow);
writeln('Made by Peter H,1/1/2008!');
delay(3000);
writeln('Pushing Box!');
delay(3000);
writeln('Press "w","s","a","d" to move the green man. Pushing the yellow box to the place purple.');
delay(3000);
clrscr;
s1:=0;
gd:=vga;
gm:=vgahi;
while not eof(f) do
begin
readln(f,st);
2:initgraph(gd,gm, 'd:\pp\bp\bgi');
errcode:= graphresult;
s1:=ord(st[1])-48;
s2:=0;
if st[2] in ['0'..'9'] then
s1:=s1*10+ord(st[2])-48;
readln(f,m,n);
for i:=1 to m do
begin
for j:=1 to n do
read(f,a[i,j]);
readln(f);
end;
a2:=a;
1:
a:=a2;
while ok do
begin
print;
ch:=readkey;
case ch of
'w':begin i:=-1;j:=0;end;
'd':begin i:=0;j:=1;end;
's':begin i:=1;j:=0;end;
'a':begin i:=0;j:=-1;end;
'1':goto 1;
'2':begin
close(f);
closegraph;
textcolor(yellow);
writeln('Please input the mission you want to arrive(0--25).');
delay(1000);
write('The mission is:');
readln(st);
st:=st+'A';
reset(f);
readln(f,st1);
while st1<>st do readln(f,st1);
goto 2;
end;
'3':halt;
else continue;
end;
a1:=a;
with man do
begin
if a[x+i,y+j]='#' then continue;
if ((a[x+i,y+j]='B')or(a[x+i,y+j]='R'))and
((a[x+2*i,y+2*j]='#')or(a[x+2*i,y+j*2]='B')or(a[x+2*i,y+2*j]='R'))
then continue;
if (a[x+i,y+j]='B')or(a[x+i,y+j]='R') then
if a[x+2*i,y+2*j]='T' then
a[x+2*i,y+2*j]:='R' else
a[x+2*i,y+2*j]:='B';
if a[x,y]='M' then
a[x,y]:='T' else
a[x,y]:='.';
if (a[x+i,y+j]='T')or(a[x+i,y+j]='R') then
a[x+i,y+j]:='M' else a[x+i,y+j]:='S';
inc(s2);
end;
end;
closegraph;
end;
end.
BOX.txt
0A
11 19
###################
#####...###########
#####B..###########
#####..B###########
###..B.B.##########
###.#.##.##########
#...#.##.#####..TT#
#.B..B..........TT#
#####.###.#S##..TT#
#####.....#########
###################
1A
8 8
########
###T####
###.####
###B.BT#
#T.BS###
####B###
####T###
########
2A
9 9
#########
#...#####
#.B.#####
#.BS###T#
###B###T#
###....T#
##...#..#
##...####
#########
3A
7 10
##########
##.....###
##B###...#
#.S.B..B.#
#.TT#.B.##
##TT#...##
##########
4A
8 6
######
##..##
#SB.##
##B.##
##.B.#
#TB..#
#TTRT#
######
5A
8 8
########
##.S####
##.B..##
###.#.##
#T#.#..#
#TB..#.#
#T...B.#
########
6A
11 13
#############
####.....####
#...T###.####
#.#.#....####
#.#.B.B#T.###
#.#..R..#.###
#.T#B.B.#.###
##....#.#.###
##.###T....S#
##.....##...#
#############
7A
8 10
##########
####..#.S#
###...#B.#
###B..B..#
###.B##..#
###.B.#.##
#TTTTT..##
##########
8A
7 10
##########
####....##
##T.B##.##
#TTB.B..S#
#TT.B.B.##
######..##
##########
9A
9 11
###########
##..##...##
##...B...##
##B.###.B##
##.#TTT#.##
##.#TTT#.##
#.B..B..B.#
#.....#..S#
###########
10A
7 8
########
###....#
###BBB.#
#S.BTT.#
#.BTTT##
####..##
########
11A
6 12
############
##..####...#
#.B.####B..#
#..BTTTT.B.#
##....#.S.##
############
12A
7 8
########
###..S##
#..BT.##
#..TBT.#
###.RB.#
###...##
########
13A
8 8
########
###TT###
###.T###
##..BT##
##.B..##
#..#BB.#
#..S...#
########
14A
7 8
########
#..#...#
#.BTTB.#
#SBTR.##
#.BTTB.#
#..#...#
########
15A
7 8
########
##....##
#.B.BB.#
#TTTTTT#
#.BB.B.#
###.S###
########
16A
9 10
##########
###....###
###.B....#
###.G.##.#
#TTT.B...#
#TTTB#B.##
####.#.B.#
####...S.#
##########
17A
7 9
#########
#....####
#.BBB####
#..#TT###
##..TTB.#
##..S...#
#########
18A
9 10
##########
###...#T.#
###..BTTT#
##..B.#RT#
##.##B#.##
#...B..B.#
#...#....#
#######S.#
##########
19A
8 10
##########
##TTTT.###
###TTTB###
#..B#B.B.#
#.BB..#B.#
#....#...#
####.S.###
##########
20A
8 7
#######
#TTBTT#
#TT#TT#
#.BBB.#
#..B..#
#.BBB.#
#..#S.#
#######
21A
8 11
###########
####.TTT###
####TTTT###
#..###B.###
#.B.B..BB.#
#S.B.B....#
#...###...#
###########
22A
9 9
#########
#......##
#.#BB..##
#.TTT#.##
##TTTB.##
##.##.B.#
##B..B..#
##B..B..#
#########
23A
8 10
##########
###...####
#...#.#..#
#.B...B.S#
###BB#####
###..TT###
###TTTT###
##########
24A
7 7
#######
#T.T.T#
#.BBB.#
#TBSBT#
#.BBB.#
#T.T.T#
#######
25A
13 15
###############
#..############
#..############
#....##.....###
#TT#....BB#.###
#TT..##...B.###
#TT#..##B#.B..#
#TT...#.SB.B..#
#TT#..#.B.B...#
#.T...#.B.B.###
#..#..#...#####
#..#....#######
###############
这才叫做游戏。