• Sábado 20 de Abril de 2024, 06:48

Autor Tema:  The Life For A Ship (buscaminas)  (Leído 7765 veces)

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
The Life For A Ship (buscaminas)
« en: Jueves 6 de Abril de 2006, 21:43 »
0
tengo que hacer este juego que es muy similar a buscaminas como puedo empezar?

. La compañía de juegos electrónicos, Funny Games, ha decidido crear un nuevo juego para lanzarlo al mercado. El nombre del juego es “The life for a ship” (“La vida por un barco”). El entorno del juego se desarrolla de la siguiente manera: En una matriz de 10 x 10, la cual simula un océano, se han perdido cinco barcos.

En este océano habitan 10 tiburones. Su tarea será recorrer a nado el océano hasta encontrar los cinco barcos. Cada vez que usted es atrapado por un tiburón se le resta una vida.

A lo largo del océano también hay cinco botes, cada uno de los cuales le aumentará en uno su cantidad de vidas al ser ubicado. En cada turno, el participante elegirá coordenadas donde desea buscar.

Ganará el jugador que encuentre los cinco barcos sin haber perdido todas sus vidas. Cada vez que acierte, el programa le incrementará sus puntos en 10.

El juego terminará cuando el náufrago haya sido devorado diez veces.

En un archivo, deberá controlar los diez mejores puntajes (top ten) obtenidos por los jugadores, así como la mejor calificación. Esta será actualizada cada vez que alguien mejore dicha puntuación y visualizada al finalizar el juego.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #1 en: Viernes 7 de Abril de 2006, 00:02 »
0
Aqui no se hacen tareas.

¿Dudas puntuales?  ;)

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #2 en: Viernes 7 de Abril de 2006, 18:34 »
0
No decia que me la hicieran solo, preguntaba como podia empezar, de todos modos muchas gracias...voy a buscar ayuda en otro foro :angry:

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #3 en: Viernes 7 de Abril de 2006, 19:00 »
0
disculpa yo no escribi eso fue mi hermano, escucha necesito tu ayuda, no necesito que lo hagas sino como empiezo, primero creo la matriz de 10x10, luego que me aconsejas? seguir, tengo varios ejemplos de la web, pero no estoy seguro, disculpas de nuevo y ojala que me puedas ayudar B)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #4 en: Viernes 7 de Abril de 2006, 19:30 »
0
No se si entendí como es el juego, pero supongo que sería una especie de buscaminas.

necesitarías una matriz de 10x10 de tipo Byte o Integer:
0. nada
1: barco
2: tiburon


Lo primer que deberías hacer, es poder hacer que te redistribuya los tiburones y barcos en la matriz al Azar.
Luego, simplemente  pides al jugador que ingrese una coordenada, y segun sea barco o tiburon, el das o sacas puntos......

Eso sería una idea básica muy por arriba, lo que necesitaría es que preguntes cosas más puntuales así poder ayudarte

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #5 en: Viernes 7 de Abril de 2006, 20:32 »
0
no puedo correrlo me da un error 200: division by zero???

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #6 en: Viernes 7 de Abril de 2006, 20:51 »
0
Necesitas el parche para la librería CRT. Este error ocurre con procesadores superiores a P2.

http://foros.solocodigo.com/index.php?show...12078&hl=parche

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #7 en: Viernes 7 de Abril de 2006, 20:59 »
0
ya lo arregle gracias!!

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #8 en: Viernes 7 de Abril de 2006, 21:08 »
0
mira ya cree que el aleatorio utilizando el random no se si estara bien, me gustaria que le vieras, pero tengo otra duda como hago para que solo me hago 10 tiburones y  5 barcos y los demas  libres que un if??? o no se

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #9 en: Viernes 7 de Abril de 2006, 21:59 »
0
espero tu respuesta, x favor cuando puedas, escribeme, estoy en problemas tengo que entregar esto el lunes, este es mi primer curso en pascal se manejar ciclos, matrices, todo lo simple, pero no entiendo bien lo de los archivos, como lo de guardar los mejores puntajes, esto es lo que llevo dame una manita, para seguir avanzando gracias!!!   :unsure:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #10 en: Sábado 8 de Abril de 2006, 00:22 »
0
Cita de: "obandomarco"
mira ya cree que el aleatorio utilizando el random no se si estara bien, me gustaria que le vieras, pero tengo otra duda como hago para que solo me hago 10 tiburones y  5 barcos y los demas  libres que un if??? o no se
Código: Text
  1.  
  2. const
  3.    NADA = 0;
  4.    TIBURON = 1;
  5.    BARCO = 2;
  6. var
  7.   Mar: array[1..10,1..10] of Byte;
  8.  
  9. {Esto inicia el tablero poniendo tiburones y barcos en siempre la misma posicion,
  10. despues, con otro procedimiuento se mezcla}
  11. procedure Init;
  12. var
  13.   i,j : integer;
  14. begin
  15.    for i:=1 to 10 do
  16.       for J:=1 to 10 do
  17.           Mar[i,j] := NADA;
  18.    for i:=1 to 10 do Mar[i,1] := TIBURON;
  19.    for  i:=1 to 5 do Mar[i,2] := BARCO;
  20. end;
  21.  
  22. {Intercambia dos variables}
  23. procedure Intercambiar(var A,B: Integer);
  24. var
  25.   C: Integer;
  26. begin
  27.    C := A;
  28.    A := B;
  29.    B := C;
  30. end;
  31.  
  32. {esto mezcla los campos y los desordena, de manera que uno se asegura que
  33. hay 10 tiburones y 10 barcos}
  34. procedure Mezclar;
  35. var
  36.    i,j, nI, nJ: integer;
  37. begin
  38.     for i:=1 to 10 do
  39.       for J:=1 to 10 do
  40.       begin
  41.          nI := RAndom(10)+1;
  42.          nJ := RAndom(10)+1;
  43.          Intercambiar(Mar[i,j], Mar[nI, nJ];
  44.       end;
  45. end;
  46.  
  47.  
Acordate de Poner un RAndomize al prencipio de todo en el Begin principal.
El codigo velo como un pseudocodigo porque nunca lo probé ya uqe aca no tengo compilador.
nI := RAndom(10)+1;nI := RAndom(10)+1;

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #11 en: Sábado 8 de Abril de 2006, 00:56 »
0
Código: Text
  1.  
  2. procedure Guardar(Nombre: String; Puntaje: Integer);
  3. var
  4.   F: TEXT;
  5. begin
  6.    Assign(F, 'MejoresPuntajes.txt');{asigna al archivo su direccion}
  7.    {$I-} {desactiva control entrada/salida}
  8.    Append(F); {intenta poner el puntero al final de archivo, por si este existe}
  9.    if IOResult <> 0 then {archivo no existe y hay que recrearlo}
  10.    begin
  11.      WriteLn('No se encuentra el archivo');
  12.      WriteLn('Desea crear uno nuevo');
  13.      res := ReadKey;
  14.      if (res = 's') or (res = 'S') then ReWrite(F);
  15.    end;
  16.  {$I+}
  17.    WriteLn(F, Nombre, '      ', Puntaje); {escribe en el archivo de texto, puntaje y nombre}
  18.     Close(F); {cierra el archivo}
  19. end;
  20.  
  21.  

en este codigo lo que hace, es intentar escribir al final de un archivo, si este no existe, crea uno nuevo.

Esto hay que hacerlo así porque en TurboPascal (creo que es lo que vos usas) no existe FileExiste(nombre) que te dice si existe un archivo



podes usar el siguente código pero ASEGURATE que haya un ARCHIVO llamado "MejoresPuntajes.txt" enla carpeta de la ejecutable. (de tu programa)
Código: Text
  1.  
  2. procedure Guardar(Nombre: String; Puntaje: Integer);
  3. var
  4.   F: TEXT;
  5. begin
  6.    Assign(F, 'MejoresPuntajes.txt');
  7.    Append(F);
  8.    WriteLn(F, Nombre, '      ', Puntaje);
  9.    Close(F); {cierra el archivo}
  10. end;
  11.  
  12.  

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #12 en: Sábado 8 de Abril de 2006, 03:02 »
0
muchisimas gracias!!!, mira tengo un  error en esto

begin
   for i:=1 to 10 do
     for J:=1 to 10 do
     begin
        nI := RAndom(10)+1;
        nJ := RAndom(10)+1;
       Intercambiar(Mar[i,j], Mar[nI, nJ]);
     end;
end;


en intercambiar dice error 26 : type of mismatch (no me deja poner la coma), ya probe cambiandolo de diferentes maneras pero me sale lo mismo, creo que es muy simple pero no encuentre el error...

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #13 en: Sábado 8 de Abril de 2006, 05:33 »
0
ademas del procedimiento de guardar que me diste, puedo usar cualquiera??; para que el usuario busque las cordenadas cuando ya este la matriz lista que procedimiento puedo utilizar...

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #14 en: Sábado 8 de Abril de 2006, 15:52 »
0
Código: Text
  1.  
  2. const
  3.   NADA = 0;
  4.   TIBURON = 1;
  5.   BARCO = 2;
  6. var
  7.  Mar: array[1..10,1..10] of Integer;
  8.  i,j: Integer;
  9. {Esto inicia el tablero poniendo tiburones y barcos en siempre la misma posicion,
  10. despues, con otro procedimiuento se mezcla}
  11. procedure Init;
  12. var
  13.  i,j : integer;
  14. begin
  15.   for i:=1 to 10 do
  16.      for J:=1 to 10 do
  17.          Mar[i,j] := NADA;
  18.   for i:=1 to 10 do Mar[i,1] := TIBURON;
  19.   for  i:=1 to 5 do Mar[i,2] := BARCO;
  20. end;
  21.  
  22. {Intercambia dos variables}
  23. procedure Intercambiar(var A,B: Integer);
  24. var
  25.  C: Integer;
  26. begin
  27.   C := A;
  28.   A := B;
  29.   B := C;
  30. end;
  31.  
  32. {esto mezcla los campos y los desordena, de manera que uno se asegura que
  33. hay 10 tiburones y 10 barcos}
  34. procedure Mezclar;
  35. var
  36.   i,j, nI, nJ: integer;
  37. begin
  38.    for i:=1 to 10 do
  39.      for J:=1 to 10 do
  40.      begin
  41.         nI := RAndom(10)+1;
  42.         nJ := RAndom(10)+1;
  43.         Intercambiar(Mar[i,j], Mar[nI, nJ]);
  44.      end;
  45. end;
  46.  
  47. begin
  48.    Init;
  49.    Mezclar;
  50.    for j:=1 to 10 do
  51.      for i:=1 to 10 do
  52.      begin
  53.        Write(Mar[i,j], ' ');
  54.        if i=10 then WriteLn;
  55.      end;
  56.   readln;
  57. end.
  58.  
  59.  

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #15 en: Sábado 8 de Abril de 2006, 15:54 »
0
Cita de: "obandomarco"
ademas del procedimiento de guardar que me diste, puedo usar cualquiera??; para que el usuario busque las cordenadas cuando ya este la matriz lista que procedimiento puedo utilizar...
Lees por teclado la coordenada X, despues la Y..... Luego verificas que es lo que hay en  Mar[X,Y]  y sumas o bajas puntos segun sea el resultado.

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #16 en: Sábado 8 de Abril de 2006, 17:38 »
0
disculpa la molestia, pero todavia tengo el error 26:type of mismatch en procedimiento mezclar; no me deja poner la coma en intercambiar(mar[i,j],mar[ni,nj]);

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #17 en: Sábado 8 de Abril de 2006, 17:50 »
0
para moverme puedo usar esto?

procedure mover;
writeln('Digite el numero de fila en que desee moverse');
readln(i);
writeln('Digite el numero de fila en que desee moverse');
readln(j);

recorro la matriz y debe haber algun comando que me lleve "gotoxy", este sirve?

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #18 en: Sábado 8 de Abril de 2006, 18:00 »
0
Cita de: "obandomarco"
para moverme puedo usar esto?

procedure mover;
writeln('Digite el numero de fila en que desee moverse');
readln(i);
writeln('Digite el numero de fila en que desee moverse');
readln(j);

recorro la matriz y debe haber algun comando que me lleve "gotoxy", este sirve?
Código: Text
  1.  
  2. case Mar[i,j] of
  3.   NADA:
  4.      begin
  5.           {lo que tengas que hacer por si est'a vacia}
  6.       end;
  7.   TIBURON:
  8.       begin
  9.           {lo que tengs que hacer si es un tiburon}
  10.        end;
  11.    BARCOS:
  12.        begin
  13.            {lo que tengas que hacer si hay un barco}
  14.         end;
  15. end;
  16.  
  17.  

para sacar el type mismatch, pone que todo sea Integer, y saca los tipos Byte (seguramente es eso, en el codigo que te pase lo hab'ia coregido y compilo)

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #19 en: Sábado 8 de Abril de 2006, 18:10 »
0
perfecto ya lo pude correr pero no me lo esta mezclando, queda asi
1111111111
2222200000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000


como hago para tapar todos con asteriscos pero que no pierdan las caracteristicas para que el usuario no pueda verlos???

obandomarco

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #20 en: Sábado 8 de Abril de 2006, 18:27 »
0
ya hice lo de las coordenadas para moverme pero necesito, mezclarlos, cubrirlos todos con una asterisco o algo asi(no se como hacerlo), y meterlo dentro de un ciclo para que los vaya descartando hasta que encuentre los barcos o pierda todas las vidas...

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #21 en: Sábado 8 de Abril de 2006, 22:21 »
0
El procedimiento para mezclar ya te lo había pasado.
(podrías aunque sea  tomarte la molestia de ver el código   :P  )

Para tapar con asteriscos tendrías que tener un matriz a parte que te indique si esa casilla fue abierta.
Las cosa sería que cada jugada que hagas, pongas esa casilla de la matriz a Verdadero, cosa que te indicaría si se puede mostrar y ademas si el jugador ya hizo esa jugada....
Código: Text
  1.  
  2. CasillasDescubiertas: array[1..10,1..10] of Boolean;
  3.  
  4.  

Código: Text
  1.  
  2. procedure ImprimirMar;
  3. var
  4.   i,j: Integer;
  5. for i:=1 to 10 do
  6.     for J:=1 to 10 do
  7.     begin
  8.        if CasillasDescubiertas[i,j]  then Write(Mar[i,j], ' ')
  9.        else Write('* ');
  10.        if i=10 then WriteLn;
  11.     end;
  12. end;
  13.  
  14.  

Código: Text
  1.  
  2. procedure mover;
  3. writeln('Digite el numero de fila en que desee moverse');
  4. readln(i);
  5. writeln('Digite el numero de fila en que desee moverse');
  6. readln(j);
  7. if CasillasDescubiertas[i,j] then {la jugada ya fue hecha}
  8. if not CasillasDescubiertas[i,j] then
  9. begin
  10.    CasillasDescubiertas[i,j] := True;
  11.    {y todas las demas cosas.....}
  12. end;
  13. [CODE]
  14.  
  15.  

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: The Life For A Ship (buscaminas)
« Respuesta #22 en: Sábado 8 de Abril de 2006, 22:25 »
0
Por sierto, NO TE ESTOY PASANDO CÓDIGO COMPLETO, tendrás que ADAPTARLO A TUS NECESIDADES VOS MISMO.

Saiyan1

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
    • http://www.anaprog.com.ar
Re: The Life For A Ship (buscaminas)
« Respuesta #23 en: Miércoles 28 de Junio de 2006, 23:48 »
0
Hola muchachos.

Como vi que este codigo habia quedado colgado... lo agarré.. y lo terminé.
A ver si no me denuncian por robo de propiedad intelectual.. jeje.

Hace 3 meses y medio que empece a estudiar para analista programador.. asi que con lo que estuve aprendiendo, lo terminé.

Está verificado.. y ya lo jugamos bastante.. jejeje.
Esta bueno.

Enko, si te parece, lo pongo acá... que decis?

Saludos!!!
----------------------
Gustavo Insaurralde
Foro de Analista Programador