Programación General > Pascal

 Buscaminas

<< < (2/2)

JPVM:
Por casualidad no tenez un codigo fuente o en pseudocodigo para guiarme mejor xq tengo de destapar las celdas, marcar o desmarcar una bomba.
saber si la posición ya se habia digitado
conocer cuantas bombas pueden haber alrededor
y contar la cantidad de marcas que ha realizado y cuantas faltan.

JPVM:
por casualidad tenez el codigo fuente

Enko:
No tengo ningun código fuente y tampoco pseudo pero te hare otras pautas.

Si quieres saber si la posicion ya fue ingresada lo que tienes que hacer es:
Tienes 2 posibildades. En la primera ocupas bastante memoria ya que deberas hacerlo con un vector que te grabe todas las jugadas y en la otra tenes que trabajar con archivos. Te mostrare la de los vectores:

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
type
  TipoPos = record
       X : Byte;
       Y : Byte;
  end;
var
 PosicionesIngresadas : array [0..100] of TipoPos; {Solo entran 100 jugadas}
 X,Y : Integer;
  PosicionIngresada : TipoPos;
   ContadorIngresos : Integer;
   SeRepite : Boolean;
BEGIN
   ContadorIngresos := 0;
  repeat
     SeRepite := False;    
   Write('Ingrese X');
    ReadLn(X);
    Write('Ingrese Y: ');
    ReadLn(Y);
    PosicionIngresada.X :=  X;
    PosicionIngresada.Y := Y;    
    for I := 0 to ContadorIngresos do
       begin            
           if  (PosicionesIngresadas[ContadorIngresos].X = PosicionIngresada.X)
           or  (PosicionesIngresadas[ContadorIngresos].Y PosicionIngresada.Y;)  
           SeRepite = True;
        end;  
  until not  SeRepite;            
  PosicionesIngresadas[ContadorIngresos].X := PosicionIngresada.X;
  PosicionesIngresadas[ContadorIngresos].Y := PosicionIngresada.Y;
  Contador Ingresos := ContadorIngresos + 1;
  

  
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
  
Para contar la cantidad de bombas alrededor nesecitaras hacer estas comprobación tomando en cuenta que la distancia es de dos casilleros
(Recuerda que tu campo minado es de tipo boolean ) y además hiciste que el usuario te ingrese las cordenadas X,Y. Nesecitaras crear varios if's:
 

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
if CampoMinado[X,Y]  then FinJuego;
    { no hace falta poner CampoMinado[X,Y] = True}
if  not CampoMinado[X,Y] then
    {lo mismo que: CampoMinado[X,Y] =  False}
   begin
       if CampoMinado[X+1,Y] then MinasAlrededor := MinasAlrededor + 1;
       if CampoMinado[X+2,Y] then MinasAlrededor := MinasAlrededor + 1;
       if CampoMinado[X+2,Y+1] then MinasAlrededor := MinasAlrededor + 1;
       if CampoMinado[X+2,Y+2] then MinasAlrededor := MinasAlrededor + 1;
       if CampoMinado[X,Y+1] then MinasAlrededor := MinasAlrededor + 1;
       if CampoMinado[X,Y+2] then MinasAlrededor := MinasAlrededor + 1;
    end;
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Bueno hasta acá llegue. Si no entendes algo no dudes en preguntar.

obandomarco:
NECESITO BUSCAMINAS COMO ESTE PERO NO SE COMO EMPEZAR, QUE HAGO?

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa