逆天玩库 > 游戏资讯 > pascal数字游戏的简便做法

pascal数字游戏的简便做法

2025-05-28 12:59:14游戏资讯

逆天玩库将会介绍pascal游戏,有相关烦恼的人,就请继续看下去吧。

pascal数字游戏的简便做法

对于这题给人的第一感觉就是用穷举法,把每个情况都探到即可解题。但你要仔细看一下题目要求就会发现问题所在。题目要求n(1≤n≤50)和m(1≤m≤9)粗略估计一下所可能出现的情况应为429即是4.06×1014次。这样是无法在规定的时间里完成。那么如何解决呢?答案就是用递推法。如何递推呢?我们假设有n个数分成m个部分,也可以看成切m个口。第一个切口切完后,我们就可以看成一个有n个数组成的长链。那末这第一刀就有n个切法 ,我们就先对第一种切法进行研究,也就是把从1到n个数切m-1刀分成m个部分。首先我们想象第一部分可分为1个数字、2个数字、3个数字……(n-m)个数字。我们把其求和取模的结果分别存入数组的(n-m)个单元中。接着我们可以把第一、二部分合并考虑了,我们可以认为只有(n-m+1)个数字分成两个部分和(n-m)个数字分成两个部分……和2个数字分成两个部分的(n-m)种情况。见下图所示,两个部分寻找最大值过程,我们再把每种情况中的最大值和最小值找出,分别存入d和x两个数组中。再接着我们可以把第一、二、三部分合并考虑了,我们可以认为只有(n-m+2)个数字分成三个部分和(n-m+1)个数字分成三个部分……和3个数字分成三个部分的(n-m)种情况。我们再把每种情况中的第三部分,分别于两个部分的最大值和最小值相乘就可以找到三个部分的最大值和最小值。如下图所示,三个部分寻找最大值过程。

下面就是我所编的参考程序:

Var

a,b:Array[1100]Of integer;

d,x:Array[150]Of longint;

m,n,l,i,j:Integer;

mk,sk:longint;

Procedure Work;

Var

i,j,s,k,k1:Integer;

da,xiao:longint;

Begin

for i:=1 to l do

begin

s:=0;

for j:=1 to l-i+1 do

begin

s:=s+b[m+j+i-2];

end;

d[i]:=s mod 10;

if d[i]<0 then d[i]:=d[i]+10;

end;

x:=d;

for i:=m-1 downto 1 do

begin

for j:=1 to l do

begin

da:=0;xiao:=90000000;

for k:=j to l do

begin

s:=0;

for k1:=j to k do

s:=s+b[i+k1-1];

s:=s mod 10;

if s<0 then s:=s+10;

if da<s*d[k] then da:=s*d[k];

if xiao>s*x[k] then xiao:=s*x[k];

end;

d[j]:=da;x[j]:=xiao;

end;

end;

end;

begin

readln(n,m);

mk:=0;sk:=90000000;l:=n-m+1;

for i:=1 to n do

readln(a[i]);

for i:=1 to n-1 do

a[i+n]:=a[i];

for i:=1 to n do

begin

for j:=1 to n do

b[j]:=a[i+j-1];

Work;

if mk<d[1] then mk:=d[1];

if sk>x[1] then sk:=x[1];

end;

writeln(sk);writeln(mk);

end.

pascal语言圆圈游戏。

var a:array[15000]of byte;

n,m,i,j,k:integer;

begin

write('n m='); readln(n,m);

for i:=1 to n do a[i]:=1;

j:=0;

for i:=1 to n do

begin

k:=0;

while k<m do

begin

if j=n then j:=1 else inc(j);

inc(k,a[j]);

end;

a[j]:=0; writeln(j);

end;

end.

用pascal可编什么游戏

通过运用crt单元,可以编出一些简单的游戏。例如贪吃蛇、推箱子、扫雷等。这些都是我编过的游戏下面附上代码。

贪吃蛇:

program she;

uses crt;

label 1,2,3;

type point=record

x,y:120;

end;

type shuzu=array[120,120] of char;

var a:shuzu;s:string;b:array[11000]of point;i,j,f,fen:integer;

head,tail:01001;c:boolean;

procedure ran2;

var p,q:integer;

begin

randomize;

p:=random(17)+2;

q:=random(17)+2;

if a[p,q]=' ' then a[p,q]:='#' else ran2;

end;

procedure ran;

var p,q:integer;

begin

randomize;

p:=random(17)+2;

q:=random(17)+2;

if a[p,q]=' ' then a[p,q]:=chr(2) else ran;

end;

procedure print(x:shuzu);

var i,j:120;

begin

for i:=1 to 20 do

for j:=1 to 20 do

begin

textcolor(15);

if a[i,j]=chr(2) then textcolor(12);

write(a[i,j]);

if j=20 then writeln

end;

writeln('Score:',fen);

end;

begin

textmode(1);cursoroff;

3:fillchar(a,sizeof(a),' ');

head:=0;tail:=3;fen:=0;f:=4;

b[1].x:=2;b[1].y:=2;

b[2].x:=2;b[2].y:=3;

b[3].x:=2;b[3].y:=4;

for i:=1 to 20 do

begin

a[1,i]:='#';a[i,1]:='#';

a[20,i]:='#';a[i,20]:='#';

end;

a[2,2]:='o';a[2,3]:='o';a[2,4]:=';

ran;

1:

c:=false;

clrscr;

print(a);

for i:=1 to 300 do

begin

delay(1);

if (keypressed)and(not(c)) then

case readkey of

#72:

if (f=3)or(f=4) then begin f:=1;c:=true; end;

#80:

if (f=3)or(f=4) then begin f:=2;c:=true end;

#75:

if (f=1)or(f=2) then begin f:=3;c:=true end;

#77:

if (f=1)or(f=2) then begin f:=4;c:=true end;

#27:

begin

writeln('Do you want to exit(Y/N)');

repeat

readln(s);

if (s='Y')or(s='y') then halt;

until (s='N')or(s='n');

goto 1;

end;

end;

end;

a[b[tail].x,b[tail].y]:='o';

case f of

1:

begin

if (a[b[tail].x-1,b[tail].y]='#')or

((a[b[tail].x-1,b[tail].y]='o')and(not((b[tail].x-1=b[head mod 1000+1].x)and(b[tail].y=b[head mod 1000+1].y)))) then goto 2;

if a[b[tail].x-1,b[tail].y]=chr(2) then

begin

fen:=fen+10;

ran;ran2

end

else

begin

head:=head mod 1000+1;

a[b[head].x,b[head].y]:=' ';

end;

tail:=tail+1;

if tail=1001 then

begin

tail:=1;

b[1].x:=b[1000].x-1;b[1].y:=b[1000].y;

end

else

begin

b[tail].x:=b[tail-1].x-1;b[tail].y:=b[tail-1].y;

end;

end;

2:

begin

if (a[b[tail].x+1,b[tail].y]='#')or

((a[b[tail].x+1,b[tail].y]='o')and(not((b[tail].x+1=b[head mod 1000+1].x)and(b[tail].y=b[head mod 1000+1].y)))) then goto 2;

if a[b[tail].x+1,b[tail].y]=chr(2) then

begin

fen:=fen+10;

ran;ran2

end

else

begin

head:=head mod 1000+1;

a[b[head].x,b[head].y]:=' ';

end;

tail:=tail+1;

if tail=1001 then

begin

tail:=1;

b[1].x:=b[1000].x+1;b[1].y:=b[1000].y;

end

else

begin

b[tail].x:=b[tail-1].x+1;b[tail].y:=b[tail-1].y;

end;

end;

3:

begin

if (a[b[tail].x,b[tail].y-1]='#')or

((a[b[tail].x,b[tail].y-1]='o')and(not((b[tail].x=b[head mod 1000+1].x)and(b[tail].y-1=b[head mod 1000+1].y)))) then goto 2;

if a[b[tail].x,b[tail].y-1]=chr(2) then

begin

fen:=fen+10;

ran;ran2

end

else

begin

head:=head mod 1000+1;

a[b[head].x,b[head].y]:=' ';

end;

tail:=tail+1;

if tail=1001 then

begin

tail:=1;

b[1].x:=b[1000].x;b[1].y:=b[1000].y-1;

end

else

begin

b[tail].x:=b[tail-1].x;b[tail].y:=b[tail-1].y-1;

end;

end;

4:

begin

if (a[b[tail].x,b[tail].y+1]='#')or

((a[b[tail].x,b[tail].y+1]='o')and(not((b[tail].x=b[head mod 1000+1].x)and(b[tail].y+1=b[head mod 1000+1].y)))) then goto 2;

if a[b[tail].x,b[tail].y+1]=chr(2) then

begin

fen:=fen+10;

ran;ran2

end

else

begin

head:=head mod 1000+1;

a[b[head].x,b[head].y]:=' ';

end;

tail:=tail+1;

if tail=1001 then

begin

tail:=1;

b[1].x:=b[1000].x;b[1].y:=b[1000].y+1;

end

else

begin

b[tail].x:=b[tail-1].x;b[tail].y:=b[tail-1].y+1;

end;

end;

end;

a[b[tail].x,b[tail].y]:=';

goto 1;

2:writeln('Game Over!Score:',fen);

writeln('Play again(Y/N)');

repeat

readln(s);

if (s='Y')or(s='y') then goto 3;

if (s='N')or(s='n') then halt;

until (s='Y')or(s='y')or(s='N')or(s='n');

end.

推箱子(主文件):

program tuixiang;

uses crt,tx,dos;

label 1,2,3,4,5;

var f:text;n,p,q,i,j:integer;s1,s:string;

a:sz1;b:sz2;top:integer;ren:poi;

procedure wrong;

begin

sound(300);

delay(100);

nosound;

end;

function over:boolean;

var i:integer;

begin

for i:=1 to top do

if a[b[i].x,b[i].y]<>' then exit(false);

exit(true);

end;

begin

textmode(1);cursoroff;

highvideo;

window(15,7,30,25);

write('Please choose a unit(1~11):');

read(n);

2:str(n,s1);s:='c:\map'+s1+'.in';

print(n,ren,a,b,top);

assign(f,s);

reset(f);

readln(f,i);

for j:=1 to i do

readln(f,p,q);

readln(f,p,q);

close(f);

1:case readkey of

#72:

if (a[ren.x-1,ren.y]=' ')or(a[ren.x-1,ren.y]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x-1,ren.y]:=chr(2);

ren.x:=ren.x-1;

end

else

if a[ren.x-1,ren.y]=chr(233) then

if (a[ren.x-2,ren.y]=' ')or(a[ren.x-2,ren.y]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x-1,ren.y]:=chr(2);a[ren.x-2,ren.y]:=chr(233);

ren.x:=ren.x-1;

end

else wrong

else

wrong;

#80:

if (a[ren.x+1,ren.y]=' ')or(a[ren.x+1,ren.y]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x+1,ren.y]:=chr(2);

ren.x:=ren.x+1;

end

else

if a[ren.x+1,ren.y]=chr(233) then

if (a[ren.x+2,ren.y]=' ')or(a[ren.x+2,ren.y]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x+1,ren.y]:=chr(2);a[ren.x+2,ren.y]:=chr(233);

ren.x:=ren.x+1;

end

else wrong

else

wrong;

#75:

if (a[ren.x,ren.y-1]=' ')or(a[ren.x,ren.y-1]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x,ren.y-1]:=chr(2);

ren.y:=ren.y-1;

end

else

if a[ren.x,ren.y-1]=chr(233) then

if (a[ren.x,ren.y-2]=' ')or(a[ren.x,ren.y-2]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x,ren.y-1]:=chr(2);a[ren.x,ren.y-2]:=chr(233);

ren.y:=ren.y-1;

end

else wrong

else

wrong;

#77:

if (a[ren.x,ren.y+1]=' ')or(a[ren.x,ren.y+1]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x,ren.y+1]:=chr(2);

ren.y:=ren.y+1;

end

else

if a[ren.x,ren.y+1]=chr(233) then

if (a[ren.x,ren.y+2]=' ')or(a[ren.x,ren.y+2]='o') then

begin

if dong(ren.x,ren.y,top,b) then a[ren.x,ren.y]:='o' else a[ren.x,ren.y]:=' ';

a[ren.x,ren.y+1]:=chr(2);a[ren.x,ren.y+2]:=chr(233);

ren.y:=ren.y+1;

end

else wrong

else

wrong;

#27:

begin

write('Are you sure to exit(Y/N)');

4:readln(s1);

if (s1='y')or(s1='Y') then

begin

textmode(lo(lastmode));

halt

end

else

if (s1<>'n')and(s1<>'N') then goto 4;

end;

else

goto 1;

end;

pr(p,q,top,a,b);

if over then

begin

erase(f);

if n=11 then

begin

write('Congratulations!Play again(Y/N)');

5:readln(s1);

if (s1='y')or(s1='Y') then

begin

n:=1;goto 2;

end

else

if (s1='n')or(s1='N') then halt

else goto 5;

end;

write('Congratulations!Go to next unit(Y/N)');

3:readln(s1);

if (s1='y')or(s1='Y') then

begin

n:=n+1;goto 2;

end

else

if (s1='n')or(s1='N') then halt

else goto 3;

end;

goto 1;

end.

推箱子(附带单元):

unit tx;

interface

uses crt;

type poi=record

x,y:integer;

end;

type sz1=array[150,150]of char;

type sz2=array[110]of poi;

function dong(x,y,top:integer;var b:sz2):boolean;

procedure print(x:integer;var ren:poi;var a:sz1;var b:sz2;var top:integer);

procedure pr(x,y,top:integer;a:sz1;b:sz2);

implementation

function dong(x,y,top:integer;var b:sz2):boolean;

var i:integer;

begin

for i:=1 to top do

if (b[i].x=x)and(b[i].y=y) then exit(true);

exit(false);

end;

procedure print(x:integer;var ren:poi;var a:sz1;var b:sz2;var top:integer);

var f:text;s1,s:string;

procedure prsc;

var i,j,m,n:integer;

begin

clrscr;

assign(f,s);

reset(f);

readln(f,top);

for i:=1 to top do

readln(f,b[i].x,b[i].y);

readln(f,m,n);

for i:=1 to m do

for j:=1 to n do

begin

textcolor(15);

if dong(i,j,top,b) then textcolor(12);

read(f,a[i,j]);write(a[i,j]);

if a[i,j]=chr(2) then

begin

ren.x:=i;

ren.y:=j;

end;

if j=n then

begin

readln(f);

writeln

end;

end;

close(f);

end;

begin

str(x,s1);s:='c:\map'+s1+'.in';

assign(f,s);rewrite(f);

case x of

1:

begin

writeln(f,3);

writeln(f,5,' ',2);

writeln(f,6,' ',2);

writeln(f,7,' ',2);

writeln(f,9,' ',8);

writeln(f,' #####');

writeln(f,'#### #');

writeln(f,'# # #');

writeln(f,'# #');

writeln(f,'#o ####');

writeln(f,'#o# # ');

writeln(f,'#o# # # ');

writeln(f,'### # ');

writeln(f,' ##### ');

end;

2:

begin

writeln(f,5);

writeln(f,6,' ',2);

writeln(f,7,' ',2);

writeln(f,7,' ',3);

writeln(f,7,' ',4);

writeln(f,7,' ',5);

writeln(f,8,' ',6);

writeln(f,' #### ');

writeln(f,'## # ');

writeln(f,'## ');

writeln(f,'####');

writeln(f,'## #');

writeln(f,'#o #');

writeln(f,'#oo閛# ');

writeln(f,'###### ');

end;

3:

begin

writeln(f,3);

writeln(f,4,' ',8);

writeln(f,5,' ',8);

writeln(f,6,' ',8);

writeln(f,9,' ',9);

writeln(f,'##### ');

writeln(f,'# # ');

writeln(f,'# 殚# ###');

writeln(f,'# # #o#');

writeln(f,'### ###o#');

writeln(f,' ## o#');

writeln(f,' # # #');

writeln(f,' # ####');

writeln(f,' ##### ');

end;

4:

begin

writeln(f,4);

writeln(f,3,' ',5);

writeln(f,3,' ',6);

writeln(f,4,' ',5);

writeln(f,4,' ',6);

writeln(f,10,' ',7);

writeln(f,' #### ');

writeln(f,'### ##');

writeln(f,'# oo#');

writeln(f,'# # oo#');

writeln(f,'# ###');

writeln(f,'# # #');

writeln(f,'# #');

writeln(f,'## #');

writeln(f,' # ###');

writeln(f,' #### ');

end;

5:

begin

writeln(f,3);

writeln(f,5,' ',2);

writeln(f,6,' ',2);

writeln(f,7,' ',2);

writeln(f,8,' ',8);

writeln(f,' #### ');

writeln(f,' # ### ');

writeln(f,' # # ');

writeln(f,'### # ##');

writeln(f,'#o# # #');

writeln(f,'#o # #');

writeln(f,'#o #');

writeln(f,'########');

end;

6:

begin

writeln(f,5);

writeln(f,2,' ',7);

writeln(f,3,' ',7);

writeln(f,4,' ',7);

writeln(f,5,' ',7);

writeln(f,6,' ',7);

writeln(f,10,' ',8);

writeln(f,' ###');

writeln(f,' #o#');

writeln(f,' #####o#');

writeln(f,'## o#');

writeln(f,'# 殚o#');

writeln(f,'# o#');

writeln(f,'### ## #');

writeln(f,'# #');

writeln(f,'# ###');

writeln(f,'###### ');

end;

7:

begin

writeln(f,5);

writeln(f,2,' ',4);

writeln(f,2,' ',5);

writeln(f,3,' ',3);

writeln(f,3,' ',4);

writeln(f,3,' ',5);

writeln(f,10,' ',7);

writeln(f,' #### ');

writeln(f,' ##oo# ');

writeln(f,' #ooo# ');

writeln(f,'## # ');

writeln(f,'# ');

writeln(f,'# ###');

writeln(f,'# # #');

writeln(f,'# #');

writeln(f,'######');

writeln(f,' ### ');

end;

8:

begin

writeln(f,6);

writeln(f,5,' ',5);

writeln(f,5,' ',6);

writeln(f,6,' ',5);

writeln(f,6,' ',6);

writeln(f,7,' ',5);

writeln(f,7,' ',6);

writeln(f,11,' ',9);

writeln(f,' ####');

writeln(f,'###### #');

writeln(f,'# #');

writeln(f,'# ## #');

writeln(f,'## #oo #');

writeln(f,'##oo#');

writeln(f,'# #oo ##');

writeln(f,'# ## #');

writeln(f,'# #');

writeln(f,'###### #');

writeln(f,' ####');

end;

9:

begin

writeln(f,5);

writeln(f,4,' ',5);

writeln(f,5,' ',4);

writeln(f,5,' ',5);

writeln(f,6,' ',4);

writeln(f,6,' ',5);

writeln(f,8,' ',7);

writeln(f,' #### ');

writeln(f,' # # ');

writeln(f,'### ');

writeln(f,'# 殚o##');

writeln(f,'# 閛o #');

writeln(f,'# 閛o #');

writeln(f,'# ###');

writeln(f,'##### ');

end;

10:

begin

writeln(f,4);

writeln(f,5,' ',4);

writeln(f,6,' ',4);

writeln(f,7,' ',4);

writeln(f,8,' ',4);

writeln(f,12,' ',6);

writeln(f,' #### ');

writeln(f,'## ##');

writeln(f,'# #');

writeln(f,'# #');

writeln(f,'###o #');

writeln(f,' #o #');

writeln(f,' #o##');

writeln(f,'###o #');

writeln(f,'# #');

writeln(f,'# #');

writeln(f,'# ##');

writeln(f,'##### ');

end;

11:

begin

writeln(f,4);

writeln(f,5,' ',4);

writeln(f,5,' ',5);

writeln(f,6,' ',4);

writeln(f,6,' ',5);

writeln(f,9,' ',7);

writeln(f,'##### ');

writeln(f,'# ###');

writeln(f,'# #');

writeln(f,'# #');

writeln(f,'# 閛o #');

writeln(f,'###oo #');

writeln(f,' ###');

writeln(f,' # #');

writeln(f,' ####');

end;

end;

close(f);

prsc;

end;

procedure pr(x,y,top:integer;a:sz1;b:sz2);

var i,j:integer;

begin

clrscr;

for i:=1 to x do

for j:=1 to y do

begin

textcolor(15);

if dong(i,j,top,b) then textcolor(12);

write(a[i,j]);

if j=y then writeln

end;

end;

end.

扫雷:

program saolei;

uses crt;

label 1,2,3,4;

var a,b:array[114,114]of char;i,j,t,t2,l:integer;s:string;

procedure ran;

var p:integer;nu:integer;

begin

randomize;

for i:=1 to t do

for j:=1 to t do

begin

b[i,j]:=';a[i,j]:=';

end;

for p:=1 to t2 do

begin

repeat

i:=random(t)+1;j:=random(t)+1;

until (a[i,j]=')and(not((i=1)and(j=1)));

a[i,j]:='';

end;

for i:=1 to t do

for j:=1 to t do

if a[i,j]=' then

begin

nu:=0;

if (i>1)and(j>1) then if a[i-1,j-1]='' then inc(nu);

if (i>1) then if a[i-1,j]='' then inc(nu);

if (i>1)and(j<t) then if a[i-1,j+1]='' then inc(nu);

if (j>1) then if a[i,j-1]='' then inc(nu);

if (j<t) then if a[i,j+1]='' then inc(nu);

if (i<t)and(j>1) then if a[i+1,j-1]='' then inc(nu);

if (i<t) then if a[i+1,j]='' then inc(nu);

if (i<t)and(j<t) then if a[i+1,j+1]='' then inc(nu);

if nu>0 then a[i,j]:=chr(ord('0')+nu);

end;

i:=1;j:=1;

end;

procedure print;

var p,q:integer;

begin

clrscr;

for p:=1 to t do

for q:=1 to t do

begin

if b[p,q]='' then textcolor(12);

if (p=i)and(q=j) then textcolor(8);

write(b[p,q]);

if q=t then writeln;

textcolor(15);

end;

writeln('last:',l);

end;

procedure wrong;

begin

sound(300);

delay(100);

nosound

end;

procedure find(x,y:integer);

begin

b[x,y]:=a[x,y];

if b[x,y]<>' then exit;

if (x>1)and(b[x-1,y]=') then find(x-1,y);

if (y>1)and(b[x,y-1]=') then find(x,y-1);

if (x<t)and(b[x+1,y]=') then find(x+1,y);

if (y<t)and(b[x,y+1]=') then find(x,y+1);

if (x>1)and(y>1)and(b[x-1,y-1]=') then find(x-1,y-1);

if (x>1)and(y<t)and(b[x-1,y+1]=') then find(x-1,y+1);

if (x<t)and(y>1)and(b[x+1,y-1]=') then find(x+1,y-1);

if (x<t)and(y<t)and(b[x+1,y+1]=') then find(x+1,y+1);

end;

procedure print2;

var p,q:integer;

begin

clrscr;

for p:=1 to t do

for q:=1 to t do

begin

if b[p,q]='' then

begin

textcolor(12);

write(b[p,q]);

end

else

if (a[p,q]='') then

begin

textcolor(9);

write(a[p,q]);

end

else write(b[p,q]);

if q=t then writeln;

textcolor(15);

end;

end;

function wan:boolean;

var p,q:integer;

begin

for p:=1 to t do

for q:=1 to t do

if b[p,q]=' then exit(false);

exit(true);

end;

begin

textmode(1);cursoroff;

window(12,8,30,25);

3:clrscr;

writeln('Please choose the level:');

writeln('1--easy 2--normal3--hard');

4:case readkey of

'1':begin t:=11;t2:=20; end;

'2':begin t:=12;t2:=30; end;

'3':begin t:=14;t2:=50; end;

else goto 4;

end;

l:=t2;

ran;

print;

1:case readkey of

#72:if i>1 then dec(i) else wrong;

#80:if i<t then inc(i) else wrong;

#75:if j>1 then dec(j) else wrong;

#77:if j<t then inc(j) else wrong;

#27:

begin

writeln('Do you want to exit(Y/N)');

repeat

readln(s);

if (s='Y')or(s='y') then halt;

until (s='n')or(s='N');

end;

'j':

begin

b[i,j]:=a[i,j];

if b[i,j]=' then find(i,j);

if b[i,j]='' then begin print2;goto 2;end;

end;

'k':if (l>0)and(b[i,j]=') then begin b[i,j]:='';dec(l); end;

'l':if b[i,j]='' then begin b[i,j]:=';inc(l); end;

else goto 1;

end;

print;

if not(wan) then goto 1;

writeln('Congratulations!Play once again(Y/N)');

repeat

readln(s);

if (s='N')or(s='n') then halt;

if (s='Y')or(s='y') then goto 3;

until s='y';

2:writeln('Game Over!Play once again(Y/N)');

repeat

readln(s);

if (s='N')or(s='n') then halt;

if (s='Y')or(s='y') then goto 3;

until s='y';

end.

另外我又用c++编了一次贪吃蛇,也一起提供给你。

#include<iostream>

#include<windows.h>

using namespace std;

struct point

{short x,y;

};

char a[22][42];bool f;short i,j,fa;short x[5],y[5];

point s[1001];short h,t,p,q;char st;

short juage()

{if (GetKeyState(VK_UP)<0)

if (fa>=3) {f=true;fa=1;return(0);}

if (GetKeyState(VK_DOWN)<0)

if (fa>=3) {f=true;fa=2;return(0);}

if (GetKeyState(VK_LEFT)<0)

if (fa<=2) {f=true;fa=3;return(0);}

if (GetKeyState(VK_RIGHT)<0)

if (fa<=2) {f=true;fa=4;return(0);}

if (GetKeyState(27)<0)

{cout<<"您真的要退出吗(Y/N) ?";

while (true)

{cin>>st;

if (st=='Y' || st=='y') exit(0); else

if (st=='N' || st=='n') break;

}

}

}

short ran()

{srand(time(0));

short x,y;

while (true)

{

x=rand()%20+1;y=rand()%40+1;

if (a[x][y]==' ') a[x][y]='T';return(0);

}

}

int main()

{x[1]=-1;y[1]=0;

x[2]=1;y[2]=0;

x[3]=0;y[3]=-1;

x[4]=0;y[4]=1;

cout<<" 贪吃蛇\n";

cout<<"本程序由聊城一中09级12班张凯开发\n";

cout<<" 版权所有,翻版必究\n";cout<<endl<<endl;

cout<<"游戏说明:\n";

cout<<" 方向键控制方向,Esc退出\n";

system("pause");

sta:

for (i=1;i<=20;i++)

for (j=1;j<=40;j++)

a[i][j]=' ';

for (i=0;i<=41;i++) {a[0][i]='#';a[21][i]='#';}

for (i=1;i<=20;i++) {a[i][0]='#';a[i][41]='#';}

a[1][1]='0';a[1][2]='0';a[1][3]='8';ran();

h=0;t=3;s[1].x=1;s[1].y=1;s[2].x=1;s[2].y=2;s[3].x=1;s[3].y=3;fa=4;

l1:

system("cls");

for (i=0;i<=21;i++)

{for (j=0;j<=41;j++) cout<<a[i][j];

cout<<endl;

}

f=false;

for (i=1;i<=15;i++)

{Sleep(1);if (!f) juage();}

p=s[t].x+x[fa];q=s[t].y+y[fa];

if (a[p][q]=='#' || (a[p][q]=='0' && !(p==s[h+1].x && q==s[h+1].y))) goto l2;

a[s[t].x][s[t].y]='0';

if (a[p][q]=='T')

{a[p][q]='8';t++;if (t==1001)t=1;s[t].x=p;s[t].y=q;ran();

}

else

{h++;if (h==1001) h=1;a[s[h].x][s[h].y]=' ';a[p][q]='8';

t++;if (t==1001) t=1;s[t].x=p;s[t].y=q;

}

goto l1;

l2:

cout<<"游戏结束!再玩一次吗(Y/N) ?";

while (true)

{cin>>st;

if (st=='Y' || st=='y') goto sta; else

if (st=='N' || st=='n') return(0);

}

}

用PASCAL编的游戏在哪运行(玩),在编程软件中吗???

实在想用pascal语言的话,使用delphi吧,是基于pascal的可视化编程软件。

编写成功后生成.exe文件,可以直接运行,不需任何其他软件平台。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息储存空间服务,不拥有所有权,不承担相关法律责任。如有发现本站涉嫌抄袭侵权/违法违规的内容,请发送邮件,一经查实,本站将立刻删除。

猜你喜欢