为方便不用windows7的小P友,特发源程序:
uses graph,wincrt;var t:text;i,j,x,y,dt,dj,jy,xl,xl1,asd:longint;gd,gm:smallint;ch:char;s:string;d:array[0..11,1..15]of char;p:boolean;procedure jjy(a:Longint);var i:longint;begin str(a,s); settextstyle(4,horizdir,3);setcolor(yellow); outtextxy(50,200,'Congratulations on your experience '+s); jy:=jy+a; i:=0; while jy>=dj*5 do begin inc(i); outtextxy(100,i*30+250,'upgrade!'); jy:=jy-dj*5; dj:=dj+1; delay(500); end; readkey;end;procedure tupian(x,y:longint;c:char);var i,j:longint;ch:char;begin case c of 'z':assign(input,'data/picture/tree.super'); 'p':assign(input,'data/picture/player.super'); 'c':assign(input,'data/picture/clean.super'); 's':assign(input,'data/picture/stone.super'); end; reset(input); for i:=1 to 50 do begin for j:=1 to 50 do begin read(ch); case ch of 'r':putpixel(j+y*50,i+x*50,red); 'y':putpixel(j+y*50,i+x*50,yellow); 'b':putpixel(j+y*50,i+x*50,blue); 'g':putpixel(j+y*50,i+x*50,green); 'B':putpixel(j+y*50,i+x*50,brown); 'w':putpixel(j+y*50,i+x*50,white); end; end; readln; end; close(input);end;procedure print;begin cleardevice; setcolor(red); settextstyle(7,horizdir,6); outtextxy(200,1,'S U P E R'); settextstyle(2,horizdir,2);setcolor(green);outtextxy(650,37,'(2)'); str(dt,s); assign(t,'data/map/'+s+'.super');reset(t); for i:=1 to 10 do begin for j:=1 to 15 do begin read(t,d[i,j]); if (i=1)and(j=1)and(not (d[i,j]in ['t','s']))then while not(d[1,1]in ['t','s']) do read(t,d[1,1]); if d[i,j]='t' then tupian(i,j,'z'); if d[i,j]='s' then tupian(i,j,'s'); if (i=x)and(y=j)then tupian(i,j,'p'); end; readln(t); end; close(t); str(dj,s); settextstyle(10,horizdir,10); outtextxy(50,600,'LV'+s);end;begin gd:=detect; initgraph(gd,gm,''); setbkcolor(white); assign(input,'data/archives/archives.super');reset(input); readln(x,y); readln(dj,jy); readln(dt); close(input); cleardevice; print; for i:=1 to 15 do begin d[0,i]:=' ';d[11,i]:=' ';end; repeat p:=false; ch:=readkey; tupian(x,y,'c'); case ch of 'w':if d[x-1,y]=' ' then begin dec(x);p:=true;end; 'a':if(y>1)then if (d[x,y-1]=' ') then begin dec(y);p:=true;end; 's':if d[x+1,y]=' ' then begin inc(x);p:=true;end; 'd':if d[x,y+1]=' ' then begin inc(y);p:=true;end; 'r':halt;
#0: case readkey of #72:if d[x-1,y]=' ' then begin dec(x);p:=true;end; #75:if(y>1)then if (d[x,y-1]=' ') then begin dec(y);p:=true;end; #80:if d[x+1,y]=' ' then begin inc(x);p:=true;end; #77:if d[x,y+1]=' ' then begin inc(y);p:=true;end; end; end; if x=11 then begin dec(dt); if dt=0 then begin x:=10;dt:=1;tupian(x,y,'p');end else begin x:=1;print;end; end else if x=0 then begin inc(dt);x:=10;print;end else tupian(x,y,'p'); if(p)and(random(3)=1)then begin setbkcolor(red); cleardevice; settextstyle(3,horizdir,3);setcolor(yellow);outtextxy(250,100,'MONSTER:Sirrah,I wait for you for a long time!'); delay(1000); setcolor(green);outtextxy(1,480,'PLAYER:Yes?Come forth, you will find honor in death!'); delay(1000); readkey; cleardevice; setlinestyle(0,1,5); settextstyle(1,horizdir,1); xl:=dj*3;xl1:=random(xl+3)+1;asd:=xl1; if dj<2 then xl1:=2; p:=false; repeat cleardevice; outtextxy(70,95,'PLAYER'); outtextxy(170,95,'MONSTER'); circle(100,100,50);line(130,130,100,200);line(100,150,100,230);line(100,230,70,300);line(100,230,130,300); circle(200,100,50);line(200,150,200,230);line(170,130,200,200);line(200,230,170,300);line(200,230,230,300); p:=not p; if p then begin line(220,200,100,200); line(250,50,200,200); dec(xl1); end else begin line(50,50,100,200); line(80,200,200,200); dec(xl); end; for i:=1 to xl do outtextxy(100,700-i*10,#1); for i:=1 to xl1 do outtextxy(200,700-i*10,#2); delay(1000); until (xl<1)or(xl1<1); settextstyle(10,horizdir,9);setcolor(yellow); outtextxy(100,100,'KO!'); if xl=0 then begin readkey;halt;end else jjy(asd); setbkcolor(white); cleardevice; print; end; assign(output,'data/archives/archives.super'); rewrite(output);writeln(x,' ',y);writeln(dj,' ',jy);writeln(dt);close(output); until false;end.