Programación General => Pascal => Mensaje iniciado por: Xtr en Domingo 4 de Mayo de 2003, 23:44
Título: Buscaminas
Publicado por: Xtr en Domingo 4 de Mayo de 2003, 23:44
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:
Título: Re: Buscaminas
Publicado por: JPVM en Domingo 25 de Julio de 2004, 08:47
Alguien sabe como puedo hacer el buscaminas en pascal, no tiene que ser necesariamente en modo grafico
Título: Re: Buscaminas
Publicado por: Enko en Domingo 25 de Julio de 2004, 17:56
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
CampoMinado : array[0..9,0..9] of Boolaen;
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
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;
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
if CampoMinado[X,Y] = True then
{hay Mina}
else {no la hay}
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.
Título: Re: Buscaminas
Publicado por: Enko en Domingo 25 de Julio de 2004, 18:09
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.
Título: Re: Buscaminas
Publicado por: elkin en Lunes 26 de Julio de 2004, 20:33
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
Título: Re: Buscaminas
Publicado por: JPVM en Martes 27 de Julio de 2004, 08:04
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.
Título: Re: Buscaminas
Publicado por: JPVM en Martes 27 de Julio de 2004, 08:07
por casualidad tenez el codigo fuente
Título: Re: Buscaminas
Publicado por: Enko en Jueves 29 de Julio de 2004, 19:06
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;
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.
Título: Re: Buscaminas
Publicado por: obandomarco en Jueves 6 de Abril de 2006, 21:40
NECESITO BUSCAMINAS COMO ESTE PERO NO SE COMO EMPEZAR, QUE HAGO?