elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  buscaminas en pascal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: buscaminas en pascal  (Leído 2,094 veces)
bmaleke

Desconectado Desconectado

Mensajes: 1


Ver Perfil
buscaminas en pascal
« en: 22 Junio 2015, 08:06 »

[MOD]: Usa las etiquetas para insertar código, lee las normas del subforo.



Estoy creando un buscaminas en pascal para una clase y solo se pueden usar variables locales, dejare mi codigo aqui el problema que tengo es que no puedo mantener las casillas ya descubiertas de la matriz y no se me ocurre como arreglarlo, en el juego el 9 representa las casillas no descubiertas. El error esta en la parte en negrita a mi parecer.


Código
  1. Program proyecto;
  2. uses crt;
  3.  
  4. procedure opcion;
  5.  type
  6.   matriz=array[1..9,1..9] of integer;
  7.   vector=array[1..9] of integer;
  8.  var
  9.   mat:matriz; y,i,j,x:integer; va,vb:vector;
  10.   resp:char;
  11.  
  12. FUNCTION menu:integer;
  13.  var opcion:integer;
  14.  
  15. begin
  16.  repeat
  17.   begin
  18.    clrscr;
  19.    Writeln('Solo nros enteros.');  
  20.    Writeln('1-. Comenzar el juego.');  
  21.    Writeln('2-. Salir.');  
  22.  
  23.       read(opcion);
  24.   end;
  25.  until((opcion>0)and(opcion<3));
  26.   menu:=opcion;
  27.  
  28.  end;
  29.  
  30. PROCEDURE creartablero(var mat:matriz; var va,vb:vector; var x,y:integer);
  31.  
  32.   var
  33.    i,j:integer; resp:char;
  34.  
  35. function contador(mat:matriz; var x,y:integer):integer;
  36. var cont:integer;
  37. begin
  38.  
  39.  if ((x=1)and(y=1)) then
  40.      begin
  41.       cont:=0;
  42.       cont:=mat[x,y+1]+mat[x+1,y]+mat[x+1,y+1];
  43.        contador:=cont;
  44.      end;
  45.  
  46.  if ((x=1)and(y=9)) then
  47.      begin
  48.       cont:=0;
  49.       cont:=mat[x,y-1]+mat[x+1,y-1]+mat[x+1,y];
  50.        contador:=cont;
  51.      end;
  52.  
  53.  if ((x=1)and(y<9)and(y>1)) then
  54.      begin
  55.        cont:=0;
  56.       cont:=mat[x,y+1]+mat[x,y-1]+mat[x+1,y+1]+mat[x+1,y]+mat[x+1,y-1];
  57.        contador:=cont;      
  58.      end;  
  59.  
  60.  if ((x=9)and(y=1)) then
  61.      begin
  62.       cont:=0;
  63.       cont:=mat[x,y+1]+mat[x-1,y]+mat[x-1,y+1];
  64.        contador:=cont;
  65.      end;
  66.  
  67.  if ((x=9)and(y=9)) then
  68.      begin
  69.        cont:=0;
  70.       cont:=mat[x,y-1]+mat[x-1,y]+mat[x-1,y-1];
  71.        contador:=cont;
  72.      end;
  73.  
  74.  if ((x=9)and(y<9)and(y>1)) then
  75.      begin
  76.        cont:=0;
  77.       cont:=mat[x,y-1]+mat[x,y+1]+mat[x-1,y+1]+mat[x-1,y]+mat[x-1,y-1];
  78.        contador:=cont;      
  79.      end;
  80.  
  81.  if ((x>1)and(x<9)and(y=1)) then
  82.      begin
  83.        cont:=0;
  84.       cont:=mat[x+1,y]+mat[x-1,y]+mat[x-1,y+1]+mat[x,y+1]+mat[x+1,y+1];
  85.        contador:=cont;
  86.      end;
  87.  
  88.  if ((x>1)and(x<9)and(y=9))then
  89.      begin
  90.        cont:=0;
  91.       cont:=mat[x+1,y]+mat[x-1,y]+mat[x-1,y-1]+mat[x,y-1]+mat[x+1,y-1];
  92.        contador:=cont;
  93.      end;
  94.  
  95.  if ((x>1)and(x<9)and(y>1)and(y<9)) then
  96.   begin
  97.        cont:=0;
  98.       cont:=mat[x,y+1]+mat[x,y-1]+mat[x+1,y-1]+mat[x+1,y]+mat[x+1,y+1]+mat[x-1,y+1]+mat[x-1,y]+mat[x-1,y-1];
  99.        contador:=cont;
  100.  
  101.   end;
  102.  
  103. end;
  104.  
  105.  
  106. BEGIN
  107.  
  108.  repeat
  109.   begin
  110.    clrscr;
  111.     gotoxy(12,1);
  112.     writeln('BUSCAMINA');
  113.  
  114.      i:=1;
  115.     while i<=9 do
  116.      begin
  117.       gotoxy(4,2+i);
  118.        for j:= 1 to 9 do
  119.        [b] begin
  120.          if ((i=x)and(j=y)) then
  121.           begin
  122.             mat[i,j]:=(contador(mat,x,y)div 10);
  123.             write ('[',mat[i,j],']')
  124.  
  125.           end
  126.           else
  127.  
  128.           write ('[',9,']');[/b]
  129.  
  130.         end;
  131.          i:=i+1;
  132.  
  133.         writeln;
  134.      end;
  135.  
  136.   gotoxy(1,3);
  137.    begin
  138.    for i:=1 to 9 do
  139.    writeln('(',va[i],')');
  140.    end;
  141.  
  142.   gotoxy(4,2);
  143.   for i:=1 to 9 do
  144.    write('(',vb[i],')');  
  145.  
  146.   gotoxy (3,13);
  147.  
  148.    writeln('Seleccione la coordenada que desea abrir');
  149.  
  150.      write(' Nro de fila: ');
  151.         readln(x);
  152.      write(' Nro de columna: ');
  153.         readln(y);
  154.      write(' Descubrir o Salir (D/S): ');
  155.         readln(resp);
  156.   end;
  157.  until (((j>0)and(j<=9)and(i>0)and(i<=9))and((upcase(resp)='S')or(upcase(resp)='D')));
  158.  
  159.        if (upcase(resp)='D') then
  160.          begin
  161.            if mat[x,y]=1 then
  162.             writeln('    Mina encontrada.')
  163.            else
  164.             creartablero(mat,va,vb,x,y);
  165.          end;
  166.        if (upcase(resp)='S') then
  167.          begin
  168.           clrscr;
  169.           write('Presione [ENTER] para salir.' );
  170.          end;      
  171. END;
  172.  
  173.  
  174. BEGIN
  175.  if menu=1 then
  176.   begin
  177.    for i:=1 to 9 do
  178.     for j:=1 to 9 do
  179.       mat[i,j]:=0;
  180.    for j:=1 to 9 do
  181.       va[j]:=j;
  182.    for j:=1 to 9 do
  183.       vb[j]:=j;
  184.  
  185.    randomize;
  186.    x:=1;
  187.     while x<=10 do
  188.      begin
  189.      i:=random (10);  
  190.      j:=random (10);
  191.       if ((i>0)and(j>0)and(mat[i,j]<>1)) then
  192.        begin
  193.         mat[i,j]:=10;
  194.         x:=x+1;
  195.        end;
  196.      end;
  197.  
  198.   creartablero(mat,va,vb,x,y);
  199.  
  200.   end
  201.  
  202. else
  203.  write('Presione [ENTER] para salir.' );
  204.  
  205.  
  206. END;
  207.  
  208.  
  209.  
  210. BEGIN
  211. clrscr;
  212.  
  213.  opcion;
  214.  
  215. readkey;
  216.  
  217. END.


« Última modificación: 22 Junio 2015, 08:48 por Eleкtro » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.228

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: buscaminas en pascal
« Respuesta #1 en: 22 Junio 2015, 11:24 »

me parece que el principal error que tenés es que después de limpiar o verificar la casilla, volvés a creartablero y no le importa si está o no marcada alguna casilla, supongo que deberías implementar algo como una bandera, o sea si la casilla tiene un valor = 0 poner 9 si la casilla tiene valor= 1 dejar como está.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Buscaminas
Ejercicios
alos 4 5,859 Último mensaje 8 Septiembre 2006, 15:36
por Ap0caLiPse
buscaminas en c# ?
.NET (C#, VB.NET, ASP)
jaasiel 1 7,392 Último mensaje 30 Abril 2009, 03:25
por MANULOMM
Buscaminas en php!!
PHP
kodeone 2 4,918 Último mensaje 15 Enero 2011, 17:45
por kodeone
el buscaminas en c
Programación C/C++
chivis cristian 2 7,699 Último mensaje 17 Diciembre 2011, 06:19
por <<<-Basura->>>
[Ayuda] Buscaminas en C++
Programación C/C++
DiegoConD 6 2,921 Último mensaje 16 Mayo 2015, 20:40
por DiegoConD
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines