¿Qué juegos se pueden programar usando Pascal?
Utilizando unidades crt, puedes programar algunos juegos sencillos. Por ejemplo, Serpiente, Sokoban, Buscaminas, etc. Estos son juegos que he programado y el código se adjunta a continuación.
Snake:
programa ella;
usa crt;
etiqueta 1,2,3;
escriba point=record
x,y:1..20;
end;
escriba shuzu=array:='#';
p>a:='#';
end;
a:='o';a:='o';a:='?; p>
ejecutó;
1:
c:=false;
clrscr;
print(a);
para i:=1 a 300
comience
retraso(1);
si (tecla presionada)y(no(c )) entonces
clave de lectura de casos de
#72:
if (f=3)o(f=4) entonces comience f:=1;c :=true; fin;
#80:
si (f=3)o(f=4) entonces comienza f:=2;c:=true fin; p>
#75:
si (f=1)o(f=2) entonces comienza f:=3;c:=true end;
#77:
si (f=1)o(f=2) entonces comienza f:=4;c:=true end;
#27:
comienza
writeln('¿Quieres salir (S/N)?');
repetir
readln(s);
si (s='Y')o(s='y') entonces deténgase;
hasta (s='N')o(s='n');
ir a 1;
fin;
fin;
fin;
a[b[cola].x,b[cola] ].y]:='o';
caso f de
1:
comenzar
if (a[b[ tail].x-1,b[tail].y]='#')o
((a[b[tail].x-1,b[tail].y]='o ')y(no((b[cola].x-1=b[cabeza mod 1001].x)y(b[cola].y=b[cabeza mod 1001].y)))) luego vaya a 2;
si a[b[tail].x-1,b[tail].y]=chr(2) entonces
comenzar
fen:=fen+10;
ran;ran2
fin
otro
comenzar
cabeza :=cabeza mod 1001;
a[b[cabeza].x,b[cabeza].y]:=' ';
end;
tail:=tail+1;
si tail=1001 entonces
comenzar
tail:=1;
b[ 1].x:=b[1000].x-1;b[1].y:=b[1000].y;
end
else
comenzar
b[cola].x:=b[cola-1].x-1;b[cola].y:=b[cola-1].y;
e
nd;
fin;
2:
comenzar
si (a[b[cola].x+1,b[ tail].y]='#')o
((a[b[tail].x+1,b[tail].y]='o')y(not((b[ tail].x+1=b[head mod 1001].x)and(b[tail].y=b[head mod 1001].y)))) luego vaya a 2;
si a[b[tail].x+1,b[tail].y]=chr(2) entonces
comenzar
fen:=fen+10;
ran;ran2
end
else
comenzar
head:=head mod 1001;
a[b[cabeza].x,b[cabeza].y]:=' ';
end;
cola:=cola+1;
si tail=1001 entonces
comenzar
tail:=1;
b[1].x:=b[1000 ].x+1;b[1].y:=b[1000].y;
fin
otro
comenzar
b[cola].x:=b[cola-1].x+1;b[cola].y:=b[cola-1].y;
end;
fin;
3:
comenzar
if (a[b[cola].x,b[cola].y-1] ='#')o
((a[b[cola].x,b[cola].y-1]='o')y(no((b[cola].x= b[head mod 1001].x)y(b[tail].y-1=b[head mod 1001].y)))) luego vaya a 2;
si a[ b[tail].x,b[tail].y-1]=chr(2) luego
comenzar
fen:=fen+10;
ran;ran2
fin
else
comenzar
head:=head mod 1001;
a[b[cabeza].x,b[cabeza].y]:=' ';
end;
cola:=cola+1;
si tail=1001 entonces
comenzar
tail:=1;
b[1].x:=b[1000].x;b [1].y:=b[1000].y-1;
fin
else
comenzar
b[cola ].x:=b[cola-1].x;b[cola].y:=b[cola-1].y-1;
fin;
fin ;
4:
comenzar
if (a[b[tail].x,b[tail].y+1]='#') o
((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 1001].y)))) luego vaya a 2;
si a[b[tail]. x,b[cola].y+1]=chr(2) entonces
>comenzar
fen:=fen+10;
ran;ran2
finalizar
else
comenzar
head:=cabeza mod 1001;
a[b[head].x,b[head].y]:=' ';
fin;
cola:=cola+1;
si cola=1001 entonces
comenzar
cola:=1;
b[1].x:=b[1000].x;b[1].y:=b[1000].y+1;
fin
else
comenzar
b[cola].x:=b[cola-1].x;b[cola].y:=b[cola-1] .y+1;
fin;
fin;
fin;
a[b[cola].x,b[ tail].y]:='?;
ir a 1;
2:writeln('¡Juego terminado!Puntuación:',fen);
writeln ('¿Reproducir de nuevo(Y/N)?');
repetir
readln(s);
if (s='Y')o( s='y') luego vaya a 3;
si (s='N')o(s='n') luego deténgase;
hasta (s='Y' )o(s='y')o(s='N')o(s='n');
fin.
Sokoban (archivo principal): p>
programa tuixiang;
usa crt,tx,dos;
etiqueta 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;
procedimiento incorrecto;
comenzar
sonido(300);
retraso(100);
sin sonido;
end;
función over:boolean;
var i:integer;
comenzar
para i:=1 arriba hacer
si a[b[i].x,b[i].y]<>' entonces salir(falso);
salir(verdadero);
fin;
comenzar
modo de texto(1);cursoroff;
video alto;
ventana(15,7, 30 ,25);
write('Elija una unidad (1~11):');
read(n);
2:str ( n,s1);s:='c:\map'+s1+'.in';
print(n,ren,a,b,top);
asignar ( f,s);
reset(f);
readln(f,i);
for j:=1 que hago
readln(f,p,q);
readln(f,p,q);
cerrar(f);
1: caso clave de lectura de
#72:<
/p>
si (a[ren.x-1,ren.y]=' ')o(a[ren.x-1,ren.y]='o') entonces
comenzar
si dong(ren.x,ren.y,top,b) entonces a[ren.x,ren.y]:='o' si no a[ren.x,ren.y ]:=' ';
a[ren.x-1,ren.y]:=chr(2);
ren.x:=ren.x-1;
end
else
si a[ren.x-1,ren.y]=chr(233) entonces
si (a[ren.x-2,ren.y]=' ')o(a[ren.x-2,ren.y]='o') entonces
comenzar
si dong(ren.x,ren.y,top,b) entonces 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;
final
más mal
más
mal;
#80:
if (a[ren.x+1,ren.y]=' ')o(a[ren.x+1,ren.y]='o') entonces
comenzar
si dong(ren.x,ren.y,top,b) entonces 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
si a[ren.x+1,ren.y]=chr(233) entonces
si (a[ren.x+2,ren.y]=' ')o(a[ren.x+2,ren.y]='o') entonces
comenzar
si dong(ren.x,ren.y,top,b) entonces a[ren.x,ren.y]:='o' si no 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;
final
más mal
más
incorrecto;
#75:
if (a[ren.x,ren.y-1]=' ')o(a[ren.x,ren.y- 1]='o') entonces
comenzar
si dong(ren.x,ren.y,top,b) entonces 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;
e
nd
else
si a[ren.x,ren.y-1]=chr(233) entonces
si (a[ren.x, ren.y-2]=' ')o(a[ren.x,ren.y-2]='o') entonces
comienza
si dong(ren. x,ren.y,top,b) entonces 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;
final
más mal
más
mal;
#77:
si (a[ren.x,ren.y+1]=' ')o(a[ren.x,ren.y+1]='o') entonces
empezar
si dong(ren.x,ren.y,top,b) entonces a[ren.x,ren.y]:='o' si no a[ren.x,ren.y ]:=' ';
a[ren.x,ren.y+1]:=chr(2);
ren.y:=ren.y+1;
end
else
si a[ren.x,ren.y+1]=chr(233) entonces
si (a[ren.x,ren.y+2]=' ')o(a[ren.x,ren.y+2]='o') entonces
comenzar
si dong(ren.x,ren.y,top,b) entonces 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;
final
más mal
más
mal;
#27:
comenzar
escribir('¿Estás seguro de salir (S/N)?');
4:readln(s1 );
si (s1='y')o(s1='Y') entonces
comienza
textmode(lo(lastmode));
detener
finalizar
más
si (s1<>'n')y(s1<>'N') entonces ir a 4;
fin;
else
ir a 1;
fin;
pr(p,q ,top,a,b);
si termina entonces
comienza
borrar(f);
si n=11 entonces
begin
write('¡Felicidades!Juega de nuevo
n(Y/N)?');
5:readln(s1);
si (s1='y')o(s1='Y') entonces p>
comenzar
n:=1;ir a 2;
finalizar
else
if (s1='n ')o(s1='N') luego detener
else ir a 5;
end;
escribir('¡Felicitaciones! Ir a la siguiente unidad(Y /N)?');
3:readln(s1);
si (s1='y')o(s1='Y') entonces
comenzar
n:=n+1;ir a 2;
finalizar
else
if (s1='n' )o(s1='N') luego detener
else ir a 3;
end;
ir a 1;
end.
Sokoban (con unidad):
unidad tx;
interfaz
usa crt;
tipo poi =record
x,y:integer;
end;
tipo sz1=array[1..50,1..50]of char <; /p>
tipo sz2=array[1..10]de poi;
función dong(x,y,top:integer;var b:sz2):boolean;
procedimiento print(x:integer;var ren:poi;var a:sz1;var b:sz2;var top:integer);
procedimiento pr(x,y,top:integer;a : sz1;b:sz2);
implementación
función dong(x,y,top:integer;var b:sz2):boolean;
var i :integer;
comenzar
for i:=1 arriba hacer
if (b[i].x=x)y(b[i ] .y=y) luego salir(true);
salir(false);
end;
procedimiento print(x:integer;var ren: poi ;var a:sz1;var b:sz2;var top:integer);
var f:text;s1,s:string;
procedimiento prsc;
var i,j,m,n:integer;
comenzar
clrscr;
asignar(f,s);
reset(f);
readln(f,top);
para i:=1 arriba hacer
readln(f,b[i ] .x,b[i].y);
readln(f,m,n);
para i:=1 a m do
para j:=1 a n hacer
comenzar
textcolor(15);
si dong(i,j,top,b) entonces textcolor(12) ;
leer(f,
a[i,j]);escribir(a[i,j]);
si a[i,j]=chr(2) entonces
comenzar
ren.x:=i;
ren.y:=j;
fin;
si j=n entonces
comenzar
readln(f);
escribir
fin;
fin;
cerrar( f);
fin;
comenzar
str(x,s1);s:='c:\map'+s1+'.in';
asignar(f,s);reescribir(f);
caso x de
1:
comenzar
writeln(f,3);
writeln(f,5,' ',2);
writeln(f,6,' ',2); p> p>
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:
comenzar
writeln( f, 5);
writeln(f,6,' ',2);
writeln(f,7,' ',2);
writeln( f,7,'',3);
writeln(f,7,'',4);
writeln(f,7,'',5);
p>writeln(f,8,' ',6);
writeln(f,' #### ');
writeln(f ,'## # ');
writeln(f,'#?# ');
writeln(f,'##?##');
writeln (f,'## ?#');
writeln(f,'#o? #');
writeln(f,'#oo疛# ');
escribir(f,'###### ');
fin;
3:
comenzar
escribir(f,3);
escribir(f,4,' ',8);
escribir(f,5,' ',8 );
p>escribir(f,6,' ',8);
escribir(f,9,' ',9);
escribir (f,'## ### ');
writeln(f,'# # ');
writeln(f,'#殚# ###');
writeln(f,'# ?# #o#');
writeln(f,'### ###o#');
writeln(f,' ## o#');
writeln(f,' ## #');
writeln(f,' # ####');
writeln(f,' ##### ');
end;
4:
comenzar
escribir(f,4);
escribir(f,3,'',5);
escribir(f,3,'',6);
escribir(f,4,'',5);
escribir(f,4,'',6 );
writeln(f,10,' ',7);
writeln(f,' #### ');
writeln(f ,'### ##');
writeln(f,'# ?oo#');
writeln(f,'# # oo#'); p> p>
writeln(f,'# #?##');
writeln(f,'# # #');
writeln(f,' # ? #');
writeln(f,'## ? #');
writeln(f,' # ###');
escribir(f,' #### ');
end;
5:
comenzar
escribir(f, 3) ;
escribir(f,5,' ',2);
escribir(f,6,' ',2);
escribir( f, 7,' ',2);
writeln(f,8,' ',8);
writeln(f,' #### '); p>
escribir(f,' # ### ');
escribir(f,' # ? # ');
escribir(f,'### # # #');
writeln(f,'#o# # #');
writeln(f,'#o? # #');
writeln(f,'#o ?#');
writeln(f,'########');
end;
6:
comenzar
escribir(f,5);
escribir(f,2,' ',7);
writeln(f,3,' ',7);
writeln(f,4,' ',7);
writeln(f,5,' ' ,7 );
escribir(f,6,' ',7);
escribir(f,10,' ',8);
escribir (f ,' ###');
writeln(f,' #o#');
writeln(f,' #####o#');
p>writeln(f,'## ? o#');
writeln(f,'# 殚o#');
writeln( f,'# ? o#');
writeln(f,'### ## #');
writeln(f,'# ? #');
writeln(f,'# ###');
writeln(f,'###### ');
end; p>
7:
comenzar
escribir(f,5);
escribir(f,2,' ',4); p>
escribir(f,2,'',5);
>
escribir(f,3,' ',3);
escribir(f,3,' ',4);
escribir(f,3,' ' ,5);
writeln(f,10,' ',7);
writeln(f,' #### ');
writeln (f,' ##oo# ');
writeln(f,' #ooo# ');
writeln(f,'## ?# '); p> p>
writeln(f,'# ? ');
writeln(f,'# #?##');
writeln(f,'# # ? #');
writeln(f,'# #');
writeln(f,'######');
writeln (f,' ### ');
end;
8:
comenzar
writeln(f,6
escribir(f,5,' ',5);
escribir(f,5,' ',6);
escribir(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,' ####');
p>fin;
9:
comenzar
escribir(f,5);
escribir (f,4 ,'',5);
writeln(f,5,'',4);
writeln(f,5,'',5);
writeln(f,6,' ',4);
writeln(f,6,' ',5);
writeln(f,8, ' ',7 );
escribir(f,' #### ');
escribir(f,' # # ');
escribir (f,' ### ? ');
writeln(f,'# 殚o##');
writeln(f,'# 薛o #');
writeln(f,'# 薛o #');
writeln(f,'# ###');
writeln(f,' #### # ');
end;
10:
comenzar
escribir(f,4); p>
writeln(f,5,' ',4);
writeln(f,6,' ',4);
writeln(f,7,' ',4) ;
escrito
teln(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,'## ### ');
fin;
11:
comenzar
escribir(f,4);
escribir(f,5,'',4);
escribir(f,5,'',5);
escribir(f,6,'', 4);
writeln(f,6,' ',5);
writeln(f,9,' ',7);
writeln( f,'##### ');
writeln(f,'# ###');
writeln(f,'# ? #'); p> p>
writeln(f,'# ? #');
writeln(f,'# 薛o #');
writeln(f,'# ## oo #');
writeln(f,' ##?#');
writeln(f,' # #');
writeln( f,' ####');
end;
end;
cerrar(f);
prsc ;
fin;
procedimiento pr(x,y,top:integer;a:sz1;b:sz2);
var i,j:integer ;
comenzar
clrscr;
para i:=1 a x hacer
para j:=1 a y hacer p>
comenzar
textcolor(15);
si dong(i,j,top,b) entonces textcolor(12);
escribir (a [i,j]);
si j=y entonces escribe
end;
end;
end.
Remoción de minas:
programa saolei;
usa crt;
etiqueta 1,2,3,4;
var a,b:array[1..14,1..14]of char;i,j,t,t2,l:integer;s:string;
procedimiento ejecutado; p>
var p:integer;nu:integer;
comenzar
aleatorizar;
for i:=1 to t do
para j:=1 a t hacer
comenzar
b[i,j]:='?;a[i,j]:='?; p>
fin;
para p:=1 a t2 hacer
>
comenzar
repetir
i:=random(t)+1;j:=random(t)+1;
hasta que (a [i,j]='?)y(not((i=1)y(j=1)));
a[i,j]:='';
end;
para i:=1 para t hacer
para j:=1 para t hacer
si a[i,j]=' ? entonces
comenzar
nu:=0;
si (i>1)y(j>1) entonces si a[i-1,j] -1]='' entonces inc(nu);
si (i>1) entonces si a[i-1,j]='' entonces inc(nu);
si (i>1)y(j si (j>1) entonces si a [i,j-1]='' entonces inc(nu); si (j si (i si (i si (i si nu>0 entonces a[i,j]:=chr(ord('0')+nu); end ; i:=1;j:=1; end; impresión del procedimiento; var p,q :integer ; comenzar clrscr; para p:=1 para no hacer para q:=1 para no hacer comenzar si b[p,q]='' entonces textcolor(12); si (p=i)y(q= j) luego textcolor (8); escribir(b[p,q]); si q=t entonces writeln; textcolor(15) ; end; writeln('last:',l); end; procedimiento incorrecto; comienzo sonido(300); retraso(100); sin sonido fin; procedimiento buscar (x,y:entero); comenzar b[x,y]:=a[x,y]; si b[x, y]<>'? luego salir; if (x>1)y(b[x-1,y]='?) entonces buscar(x-1,y); si (y>1)y(b[x,y-1]='?) entonces encuentre(x,y-1); si (x si (y 1]='?) entonces encuentre(x,y+1); if (x>1)and(y>1)and(b[x-1,y-1]='? ) luego encuentre(x-1,y-1); if (x>1)and(y si (x si (x fin; procedimiento print2; var p,q:integer; comenzar clrscr; para p:=1 para t hacer para q:=1 para t hacer comenzar si b [p,q]='' luego comenzar textcolor(12); escribir(b[p,q]); fin else if (a[p,q]='') entonces comenzar textcolor( 9 ); escribir(a[p,q]); fin si no escribir(b[p,q]); si q=t entonces writeln; textcolor(15); end; end; función wan: booleano ; var p,q:integer; comenzar para p:=1 hasta t hacer para q:= 1 qué hacer si b[p,q]='? entonces salir(false); exit(true); end; finalizar p> comenzar textmode(1);cursoroff; ventana(12,8,30,25); 3:clrscr; writeln('Por favor, elija el nivel:'); writeln('1--fácil 2--normal3--difícil'); 4: clave de lectura de caso de '1':begin t:=11;t2:=20; '2':begin t:=12;t2 :=30; fin ; '3':comienzo t:=14;t2:=50; fin; si no, vaya a 4; fin; l:=t2; ran; print; 1:case readkey de # 72:si i> 1 entonces dism(i) en otro caso incorrecto; #80:si i #75:si j>1 entonces dism(j) de lo contrario está mal; #77:si j #27: comenzar p> escrito(' ¿Quieres salir (Y/N)?'); repetir readln(s); if (s='Y')o (s='y') luego detener; hasta (s='n')o(s='N'); finalizar; 'j': comenzar b[i,j]:=a[i,j]; si b[i,j]=' ? entonces buscar(i,j); si b[i,j]='' entonces comenzar print2;goto 2;end; end; 'k':if (l>0)and(b[i,j]='?) entonces comience b[i,j]:='';dec(l); 'l':if b[i,j]='' entonces comienza b[i,j]:='?;inc(l); else goto 1; end; print; si no (wan) entonces vaya a 1; writeln('¡Felicitaciones! ¿Jugar una vez más (Y/N)? '); repetir readln(s); si (s='N')o(s='n') entonces detener; si (s='Y')o(s='y') entonces vaya a 3; hasta s='y'; 2:writeln ('¡Se acabó el juego! ¿Jugar una vez más (Y/N)?'); repetir readln(s); if (s='N) ')o(s='n') luego detente; si (s='Y')o(s='y') luego pasa a 3; hasta s= 'y'; end. Además, programé Snake en C++ y te lo proporcioné. #include #include usando el espacio de nombres std; punto de estructura {corta x,y; }; char a[22][42];bool f;corta i,j,fa;corta x[5], y[5]; punto 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) p> 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<<" ¿Realmente quieres salir (Y/N)? "; while (true) {cin>>st; if (st==) 'Y' || st=='y') salida(0); else if (st=='N' || st=='n') descanso; } } } ejecución corta() {srand(time(0)); corto x,y; mientras (verdadero) { x=rand()%21;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<<" Snake\n"; cout<<"Este programa fue desarrollado por Zhang Kai, Clase 12, Grado 09, Liaocheng No. 1 Escuela Secundaria\n" ; cout<<" Todos los derechos reservados, cualquier reproducción será investigada\n";cout< cout<<"Juego descripción:\n"; cout<<" Las teclas de flecha controlan la dirección, salida Esc\n"; system("pause"); sta: para (i=1;i<=20;i++) para (j=1;j<=40;j++) a[i][j]=' ' ; para (i=0;i<=4 1;i++) {a[0][i]='#';a[21][i]='#';} para (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: sistema("cls"); para (i=0;i<=21;i++)