Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: savag en 8 Octubre 2011, 20:34 pm



Título: ¡¡¡SI ALGUIEN LE PUEDE ECHAR UN VISTAZO A ESTE CODIGO!!!
Publicado por: savag en 8 Octubre 2011, 20:34 pm
TENGO QUE ENTREGARLO MAÑANA,SI PODEIS VER SI TIENE ALGUN FALLO ES IMPORTANTISIMO PARA MI,ESTE ES EL ENUNCIADO.

Este es ,¿que tal esta  ?son dos jugadores cada uno tiene que dar una palabra y gana el primero que hacierte,la partida se debe poder guardar y cargar,en modo texto no en binario.Si hacierta con la letras sigues tirando si no pierdes turno.



 
Código:
  program ahorcado;
  uses crt;
  type
    cadena=string[9];
  var
    fich:text;

    palabra1,adivinar1:cadena;
    palabra2,adivinar2:cadena;
    letra:char;
    posicion1,posicion2,longuitud1,longuitud2:integer;
    {en el procedimiento las cadenas palabra,aux,adivinar las pasamos por referencia
    porque las modificaciones que vamos a efectuar en el parametro formal las realizaremos sobre
    el parametro real lo mismo sucede con la longuitud porque varia segun sea la palabra}
  procedure inicializarvector (var palabra,adivinar:cadena;var longuitud:integer);
  var
   i:integer;
   begin
   writeln('Escribe la palabra que quiere que adivinen: ');
   readln(palabra);
   {Calculamos la loguitud de la palabra introducida}
   longuitud:=lenght(palabra);

   for i:=1 to longuitud do
   {Inicializamos la palabra con guiones}
      adivinar:='_';
      end;
  {Pasamos todo los argumentos por referencia salvo "palabra" que la pasamos por valor porque no la vamos a modificar}
   procedure comprobarletra (var letra:char;var posicion:integer;var adivinar:cadena;palabra:cadena);
      var
      i:integer;

      begin
      repeat
      writeln('¿Que letra crees que esta en la palabra?');
      readln(letra);
      {Vemos en que posicion se encuentra la letra dada en la palabra que tenemos que adivinar}
      posicion:=pos(letra,palabra);
      if posicion<>0 then
      begin
      writeln('La posición es:',posicion);
      {Cambiamos en la palabra que tenemos que adivinar el guion por la letra dada}
          adivinar[posicion]:=letra;
      {Y mostramos por pantalla los cambios efectuados}
          writeln(adivinar);
          end
       {si no se encuentra la letra en la palabra}
        else
         begin
         writeln('La letra dada no se encuentra en la palabra.');
         writeln('¡¡¡PIERDES TURNO!!!');
         writeln('Lista de letras que no estan en la palabra que tienes que adivinar:');
         writeln(letra);
         end;
         until (posicion=0) ;
         end;

         {----------------------CUERPO DEL PROGRAMA-------------------------}
         begin
         clrscr;
         writeln('=================================JUEGO DEL AHORCADO============================');
         {$I-}{Desactivamos el control automático de errores de E/S.}
          assign(fich,'C:\juego.txt');
          append(fich);
          {$I+}{Activamos el control automático de errores de E/S.}
          if IOResult<>0 then {Comprobamos si ha habido errores}
          writeln('Error:',IOResult,'al abrir el fichero.')
          else
          begin
         writeln('Comencemos el juego del ahorcado,con el jugador 1.');
         inicializarvector(palabra1,adivinar1,longuitud1);
         clrscr;
         writeln('jugador 2 es su turno');
         clrscr;
         inicializarvector(palabra2,adivinar2,longuitud2);
         repeat
            writeln('Jugador 1');
            comprobarletra(letra,posicion2,adivinar2,palabra2);
            clrscr;
            writeln('Su turno,jugador 2');
            comprobarletra(letra,posicion1,adivinar1,palabra1);
            clrscr;
            until
             (adivinar1=palabra1) or (adivinar2=palabra2);
             if(adivinar2=palabra2)then
               writeln('¡¡¡¡GANASTE JUGADOR 1!!!')
               else
                writeln('¡¡¡GANASTE JUGADOR 2!!!');
          close(fich);
          end;
          end.
                     


Título: Re: ¡¡¡SI ALGUIEN LE PUEDE ECHAR UN VISTAZO A ESTE CODIGO!!!
Publicado por: savag en 9 Octubre 2011, 06:12 am
Por favor si alguien puede decir algo hoy,lo tengo que entregar esta noche,que os parece?


Título: Re: ¡¡¡SI ALGUIEN LE PUEDE ECHAR UN VISTAZO A ESTE CODIGO!!!
Publicado por: skapunky en 10 Octubre 2011, 00:13 am
No se que nivel de programación debes estar pero no te han enseñado programación modular? Es lo típico que se enseña en pascal y podrías haber dividido tu programa con algúnos "procedure".

Si el programa funciona pues bien...pero dentro 3 semanas no entenderas el codigo ya que no está bien ordenado, espero que el profesor que te lo corrija tenga ojo de cubero. Por otro lado ya que utilizas ficheros, podrías cargar las palabras del juego desde un archivo de txt donde puedes ponerle unas decenas de palabras y cargue una por azar, así queda mas realista.