• Jueves 28 de Marzo de 2024, 18:44

Autor Tema:  Buscaminas  (Leído 10285 veces)

Xtr

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Buscaminas
« en: Domingo 4 de Mayo de 2003, 23:44 »
0
hola! bueno pues aqui he hecho un pequeño jueguecillo mundialmente conocido por todos..........el BuScAmInAs !!!!
:D:P:jumpie:

todavia no esta perfeccionado, la presentacion....:P
pero el codigo creo que esta bastante bien
jejejeje
bueno, espero que os guste...:good:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JPVM

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Buscaminas
« Respuesta #1 en: Domingo 25 de Julio de 2004, 08:47 »
0
Alguien sabe como puedo hacer el buscaminas en pascal, no tiene que ser necesariamente en modo grafico

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscaminas
« Respuesta #2 en: Domingo 25 de Julio de 2004, 17:56 »
0
Este juago es bastante sencillo.Es así:
     
1: Tienes que crear una matriz de por ejemplo de 10x10 de tipo Boolean o bien de tipo Entero.  Te sugiero boolean es más prolijo.
    Como sabrás la variable boolean puede tomar dos valores : True o false, Hay mina, No hay mina.
     Tu campo minado sería:
Código: Text
  1.  
  2.       CampoMinado :  array[0..9,0..9] of Boolaen;
  3.  
  4.  
    puedes hacer tambien array[1..10,1..10] es lo mismo pero es mejor la    
     anterior, más rapida.

para minar tu campo tendrias que utilizar la funcion Random(no te olvides que antes de usarla tendrias que  utilizar el procedimiento Randomize;)

Código: Text
  1.  
  2.  Randomize;
  3.   for I:=0 to 9 do
  4.      begin
  5.          for J:=0 to 9 do
  6.               begin
  7.                   Entero:=Random(2);
  8.                    case Entero  of
  9.                          0: CampoMinado[I,J] := False;
  10.                          1: CampoMinado[I,J] := True;
  11.                     end; { del case}
  12.                end;
  13.         end;
  14.  
  15.  

asi lla tienes un campo minado. Nota que Tendras que declarar la variable Entero como un Integer.esta ultima variable es un Auxiliar.

Luego tendras que preguntar al usuario cordenadas ( X,Y por ejemplo)de la forma que quieras.
y aser esta comprobacion :
Código: Text
  1.  
  2.  if CampoMinado[X,Y] = True then
  3.    {hay Mina}
  4. else {no la hay}
  5.  
  6.  

Bueno espero que esto te de un pantallazo para saber de donde empezar.
La funcion Random y Randomize se encuentran en la librería CRT.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscaminas
« Respuesta #3 en: Domingo 25 de Julio de 2004, 18:09 »
0
Citar
CODE 

Randomize;
 for I:=0 to 9 do
    begin
        for J:=0 to 9 do
             begin
                 Entero:=Random(2);
                  case Entero  of
                        0: CampoMinado[I,J] := False;
                        1: CampoMinado[I,J] := True;
                   end; { del case}
              end;
       end;
 

en este código el nivel del buscaminas es de un 50%. La mitad de minas que de vacios.

para aumentar los vacios hacé lo siguiente:
 
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
Randomize;
 for I:=0 to 9 do
    begin
        for J:=0 to 9 do
             begin
                 Entero:=Random(10);
                  case Entero  of
                        0: CampoMinado[I,J] := False;
                        1: CampoMinado[I,J] := False;
                        3: CampoMinado[I,J] := False;
                        4: CampoMinado[I,J] := False;
                         ............................................
                        9: CampoMinado[I,J] := True;
                  end; { del case}
              end;
       end;
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Asi tendrás un 10% de minas.

elkin

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Buscaminas
« Respuesta #4 en: Lunes 26 de Julio de 2004, 20:33 »
0
hola! necesito el pseudocodigo del buscaminas ya que lo tenia hecho pero se le fue el disco a la compu y  no lo guarde en un disquet lo necesito pronto.
gracias espero su respuesta

JPVM

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Buscaminas
« Respuesta #5 en: Martes 27 de Julio de 2004, 08:04 »
0
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

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Buscaminas
« Respuesta #6 en: Martes 27 de Julio de 2004, 08:07 »
0
por casualidad tenez el codigo fuente

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscaminas
« Respuesta #7 en: Jueves 29 de Julio de 2004, 19:06 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Buscaminas
« Respuesta #8 en: Jueves 6 de Abril de 2006, 21:40 »
0
NECESITO BUSCAMINAS COMO ESTE PERO NO SE COMO EMPEZAR, QUE HAGO?