elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección.


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  El ahorcado en Lenguaje C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: El ahorcado en Lenguaje C  (Leído 33,093 veces)
darkxxx

Desconectado Desconectado

Mensajes: 85


Ver Perfil
El ahorcado en Lenguaje C
« en: 3 Septiembre 2008, 02:19 »

Bueno el día de ayer empece con la elaboración de un algoritmo que funcione como el juego del ahorcado y esto es lo que hice lo dejo para que me den sus impresiones sobre el código que mejoras se le podría hacer o alguna ayuda constructiva por favor háganla saber para mejorarlo en la versión 2.0   ;D

NOTA: En la versión 1.0 (a continuación) no hice el típico dibujito que se hace mostrando el muñequito cuando se ahorca, eso lo tengo para la próxima versión en esta me dedique mas que todo a la funcionalidad y el buen desempeño del mismo.

Código:
/* Juego el Ahorcado
 * V1.0
 * Fase: Completado
 */

#include<stdio.h>
#include<string.h>
#include<iostream.h>

int main() {
   char frase[60],rep[100],temporal[100];
    char pal;
      int longitud,i,j,inicial,acertado=0,temp=0,chance=5;
       bool repetido=false,gano=false;
       
printf("Introduzca la palabra(s) a adivinar: ");
 gets(frase);

system("clear");

longitud = 0;
inicial = 0;
j = 0;

rep[0] = ' ';
rep[1] = '\0';


do {
system("clear");
temp=0;

if(inicial == 0) {
 for(i=0;i<strlen(frase);i++) {
  if(frase[i] == ' ') {
    temporal[i] = ' ';
     longitud++;
  }
  else {
     temporal[i] = '_';
     longitud++;
  }
 }
}

inicial = 1;

temporal[longitud] = '\0';

for(i=0;i<strlen(rep);i++) {
   if(rep[i] == pal) {
    repetido = true;
    break;
  }
  else {
   repetido = false;
 }
}

if(repetido == false) {
 for(i=0;i<strlen(frase);i++) {
if(frase[i] == pal) {
temporal[i] = pal;
  acertado++;
  temp=1;
}
  }
}


if(repetido == false) {
 if(temp == 0) {
   chance = chance - 1;
 }
}
else {
 printf("Caracter Repetido o Ya Consultado");
 printf("\n\n");
}

printf("\n");

for(i=0;i<strlen(temporal);i++) {
 printf(" %c ",temporal[i]);
}

printf("\n");

if(strcmp(frase,temporal) == 0) {
gano = true;
break;
}

printf("\n");
printf("Letras Acertadas: %d",acertado);
printf("\n");
printf("Oportunidades Restantes: %d",chance);
printf("\n");

  rep[j] = pal;
  j++;
 
  printf("Introduzca un caracter para adivinar la cadena:");
   scanf("\n%c",&pal);
   
}while(chance != 0);


if(gano) {
printf("\n\n");
 printf("Felicitaciones, adivinastes la palabra");
}
else {
printf("\n\n");
 printf("Perdistes, mejor suerte para la proxima");
}

printf("\n\n");
return 0;


 


En línea

-Ramc-


Desconectado Desconectado

Mensajes: 493



Ver Perfil
Re: El ahorcado en Lenguaje C
« Respuesta #1 en: 3 Septiembre 2008, 02:32 »

No se supone que iostream es el equivalente a stdio en C++?? osea que una de las 2 sobra y como usas printf ya sabes cual, aunque bool creo que también es de c++.


En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
darkxxx

Desconectado Desconectado

Mensajes: 85


Ver Perfil
Re: El ahorcado en Lenguaje C
« Respuesta #2 en: 3 Septiembre 2008, 02:52 »

La librería iostream.h la agregue para poder hacer el limpiado de pantalla es decir poder utilizar la función system("clear")

ah y por cierto el código esta compilado con el compilador nativo de linux.
En línea

viruss1362

Desconectado Desconectado

Mensajes: 204



Ver Perfil WWW
Re: El ahorcado en Lenguaje C
« Respuesta #3 en: 3 Septiembre 2008, 11:50 »

La librería iostream.h la agregue para poder hacer el limpiado de pantalla es decir poder utilizar la función system("clear")

ah y por cierto el código esta compilado con el compilador nativo de linux.

Para usar la función system hace falta #include <stdlib.h>, iostream.h no tiene nada que ver

http://es.wikipedia.org/wiki/Stdlib.h

El caso es que te va el system("clear") porque stdlib.h no hace falta ponerla explícitamente, supongo que como es la librería estándar de C el compilador ya se encarga de ello, pero bueno lo suyo es ponerlo por si hubiera algún problema con otros compiladores.
En línea

Más vale parecer un idiota con la boca cerrada, que abrir la boca y demostrar que lo eres

www.equipome.com
JuaN-ThE-HaCKeR

Desconectado Desconectado

Mensajes: 252


http://www.JBJ.esp.st


Ver Perfil WWW
Re: El ahorcado en Lenguaje C
« Respuesta #4 en: 3 Septiembre 2008, 16:58 »

Hola!

Código:
if(gano) {
printf("\n\n");
 printf("Felicitaciones, adivinastes la palabra");
//Aquí falta una pausa.
}
else {
printf("\n\n");
 printf("Perdistes, mejor suerte para la proxima");
//Aquí falta una pausa.
}

Una mejora sería ponerle un par de pausas a esta parte del código, pues se gane o se pierda no se pueden leer los mensajes "Felicitaciones, adivinastes la palabra" y "Perdistes, mejor suerte para la proxima".

Y para que funcione bien en Windows es necesario cambiar "system ("clear");" por "system ("cls");" para que limpie la pantalla.   :-\

Lo demás está todo muy bien.  :P
Suerte con tu proyecto de ahorcado.  ;)

Saludos! ;)



JuaN
« Última modificación: 3 Septiembre 2008, 17:02 por JuaN-ThE-HaCKeR » En línea





Karman


Desconectado Desconectado

Mensajes: 668



Ver Perfil WWW
Re: El ahorcado en Lenguaje C
« Respuesta #5 en: 3 Septiembre 2008, 18:02 »

fijense este... es un poco más animado xD:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. #define N 12
  7. char txt[9];
  8. char datos[N][9]={
  9. "anteojo","avioneta","zapallo","martir",
  10. "espejo","anzuelo","heciano","tripode",
  11. "insecto","agujero","carnada","cabeza"};
  12.  
  13. char dibuj[9][7]={
  14.  "____",
  15.  "|  |",
  16.  "|  |",
  17.  "|",
  18.  "|",
  19.  "|",
  20.  "|",
  21.  "|",
  22.  "------"
  23. };
  24.  
  25. struct pst{
  26.  int pos;
  27.  char part[5];
  28. }parts[7]={{3,"  O"},{4," /"},{4,"|"},
  29. {4,"\\"},{5,"  |"},{6," /"},{6," \\"}};
  30.  
  31. int main(int argc, char *argv[])
  32. {
  33.  int n,m,o,p,i,j,r,eq=0;char lc,tmp[10];
  34.  
  35.  srand(time(NULL));
  36.  o=rand()%N;
  37.  
  38.  m=strlen(datos[o]);p=m-2;
  39.  
  40.  txt[0]=datos[o][0];txt[m-1]=datos[o][m-1];
  41.  for(n=1;n<m-1;n++)txt[n]='_';txt[m]=0;
  42.  printf("Ahorcatesss!!! Vr. 1.0\n\n");tmp[0]=0;
  43.  for(i=0;i<9;i++)printf("%s\n",dibuj[i]);
  44.  
  45.  do{
  46.  
  47.    for(j=0;j<strlen(tmp);j++){
  48.      lc=tmp[j];r=p;
  49.      for(n=1;n<m-1;n++)
  50.        if(datos[o][n]==lc){
  51.          txt[n]=lc;datos[o][n]='_';p--;
  52.        }
  53.      if(r==p){
  54.        strcat(dibuj[parts[eq].pos],parts[eq].part);
  55.        eq++;
  56.      }
  57.      for(i=0;i<9;i++)printf("%s\n",dibuj[i]);
  58.    }
  59.  
  60.    if(eq>=7)break;
  61.  
  62.    if(p>0){
  63.      printf("\nPalabra: %s - Ingrese 1 letra (* para terminar): ",txt);
  64.      scanf("%10s",&tmp);
  65.    }lc=tmp[0];
  66.    system("cls");
  67.  }while(lc!='*'&&p);
  68.  
  69.  if(!p)printf("\nPalabra: %s - Ganaste cara de Naco!!!\n\n",txt);
  70.  else if(eq>=7)printf("\nJAJA!!! Loooooser!!!\n\n");
  71.  else printf("\nK c's Papá??? Recatate!!!\n\n");
  72.  
  73.  system("PAUSE");
  74.  return 0;
  75. }
  76.  

S2
En línea

darkxxx

Desconectado Desconectado

Mensajes: 85


Ver Perfil
Re: El ahorcado en Lenguaje C
« Respuesta #6 en: 3 Septiembre 2008, 19:13 »

La librería iostream.h la agregue para poder hacer el limpiado de pantalla es decir poder utilizar la función system("clear")

ah y por cierto el código esta compilado con el compilador nativo de linux.

Para usar la función system hace falta #include <stdlib.h>, iostream.h no tiene nada que ver

http://es.wikipedia.org/wiki/Stdlib.h

El caso es que te va el system("clear") porque stdlib.h no hace falta ponerla explícitamente, supongo que como es la librería estándar de C el compilador ya se encarga de ello, pero bueno lo suyo es ponerlo por si hubiera algún problema con otros compiladores.


umm pero yo intente luego de que leí tu post quitarle la librería iostream.h para ver si funcionaba pero me daba el error de que no conocía el comando system pero si lo reconocía cuando agregaba la iostream
En línea

darkxxx

Desconectado Desconectado

Mensajes: 85


Ver Perfil
Re: El ahorcado en Lenguaje C
« Respuesta #7 en: 3 Septiembre 2008, 19:17 »

Hola!

Código:
if(gano) {
printf("\n\n");
 printf("Felicitaciones, adivinastes la palabra");
//Aquí falta una pausa.
}
else {
printf("\n\n");
 printf("Perdistes, mejor suerte para la proxima");
//Aquí falta una pausa.
}

Una mejora sería ponerle un par de pausas a esta parte del código, pues se gane o se pierda no se pueden leer los mensajes "Felicitaciones, adivinastes la palabra" y "Perdistes, mejor suerte para la proxima".

Y para que funcione bien en Windows es necesario cambiar "system ("clear");" por "system ("cls");" para que limpie la pantalla.   :-\

Lo demás está todo muy bien.  :P
Suerte con tu proyecto de ahorcado.  ;)

Saludos! ;)

JuaN

Si tienes razón debí agregarle una pausa lo que pasa es que como estaba en linux y lo compilaba en consola me aparecía el mensaje al terminar la ejecución del programa ya que no se salia del comando si no que seguía

si yo probe el codigo en windows y me decia que no reconocia system("clear") y no sabia cual usar para limpiar la pantalla en windows pero ya probrare con el system("cls") que me estas mencionando gracias por el dato

saludos igualmente y gracias
En línea

The_Judgement

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: El ahorcado en Lenguaje C
« Respuesta #8 en: 4 Septiembre 2008, 14:50 »

La librería iostream.h la agregue para poder hacer el limpiado de pantalla es decir poder utilizar la función system("clear")

ah y por cierto el código esta compilado con el compilador nativo de linux.

Para usar la función system hace falta #include <stdlib.h>, iostream.h no tiene nada que ver

http://es.wikipedia.org/wiki/Stdlib.h

El caso es que te va el system("clear") porque stdlib.h no hace falta ponerla explícitamente, supongo que como es la librería estándar de C el compilador ya se encarga de ello, pero bueno lo suyo es ponerlo por si hubiera algún problema con otros compiladores.


umm pero yo intente luego de que leí tu post quitarle la librería iostream.h para ver si funcionaba pero me daba el error de que no conocía el comando system pero si lo reconocía cuando agregaba la iostream

Pero para poder usar la funcion system, además de quitar la iostream.h tienes que añadir #include <stdlib.h>. Si estás compilando en C, si que es necesaria, pero en C++ ocurre lo que dice viruss1362.

Saludos.
En línea

Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!
darkxxx

Desconectado Desconectado

Mensajes: 85


Ver Perfil
Re: El ahorcado en Lenguaje C
« Respuesta #9 en: 12 Octubre 2008, 07:01 »

Aqui traigo la Version 2.0 del ahorcado se hicieron muchas mejoras con respecto al anterior entre ellos se redujo la mitad de memoria en comparacion con el anterior y bueno ya saben cualquier comentario,mejora comentenlo para mejorar la calidad del mismo en la Version 3.0 que incluira archivos y el grafico del muñeco

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

char* dame_palabra(void);
void setear(char*);
void imprimir_subcadena(const char*);
void verificar_letra(const char*,const char *,char*,int*,int*);


int main() {

    int i,acertados=0,oportunidades=5;
    char letra,*copia,*palabra = dame_palabra();
   
copia = (char*) malloc(sizeof(char)*strlen(palabra));

for(i=0;i<strlen(palabra);i++) {
   copia[i] = palabra[i];       
   copia[i+1] = '\0';                       
}     

setear(copia);

do {

printf("\n");
imprimir_subcadena(copia);
printf("\nLetras Correctas: %d\n",acertados);
printf("Oportunidades Restantes: %d\n",oportunidades);
printf("Introduzca un caracter para adivinar la palabra: ");
scanf("\n%c",&letra);
verificar_letra(palabra,&letra,copia,&acertados,&oportunidades);
system("cls");

}while(oportunidades != 0 && strcmp(copia,palabra) != 0);

if(strcmp(copia,palabra) == 0) {
 system("cls");
 printf("\n\n\tFELICITACIONES ACERTASTES LA PALABRA\n\n");                                   
}
else {
 system("cls");
 printf("\n\n\tPERDISTES MEJOR SUERTE PARA LA PROXIMA\n\n");     
}

     printf("\n");
    system("pause");
 return 0;   
}


char* dame_palabra(void) {
 srand(time(NULL));
      char *diccionario[] = {"casa","auto","comida","foro","pitiyanky"};
   return diccionario[rand()%5];
 }
 
void setear(char *cadena) {
  int i;
  for(i=0;i<strlen(cadena);i++) {
   if(cadena[i] == ' ') {
    cadena[i] = ' ';             
   }
   else {
    cadena[i] = '_';                             
  }     
 }
}

void verificar_letra(const char *palabra,const char *letra, char *cadena,int *acertados,int *chances) {   
  int i,temp=0;
      for(i=0;i<strlen(palabra);i++) {
        if(palabra[i] == *letra) {
           cadena[i] = *letra;   
          *acertados += 1;         
         temp = 1;
     }                               
  }
  if(temp == 0) {
        *chances -= 1; 
  }
}

void imprimir_subcadena(const char *cadena) {
 int i;     
  for(i=0;i<strlen(cadena);i++) {
    printf(" %c ",cadena[i]);                               
  }
    printf("\n");
}

saludos
« Última modificación: 12 Octubre 2008, 07:04 por darkxxx » En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
C# el ahorcado
.NET
Err... 7 8,312 Último mensaje 10 Enero 2011, 15:24
por Khronos14
Juego del ahorcado C#
.NET
treblatp 3 5,165 Último mensaje 3 Febrero 2011, 20:18
por Khronos14
Ayuda, programa en C .. El ahorcado....
Programación C/C++
TopoJunior 4 1,002 Último mensaje 15 Febrero 2013, 23:34
por X3R4CK3R
Error juego el ahorcado en lenguaje c
Programación C/C++
KIDRAP1 3 496 Último mensaje 18 Junio 2013, 18:13
por KIDRAP1
Ayuda con juego el ahorcado en lenguaje c
Programación C/C++
KIDRAP1 4 1,426 Último mensaje 27 Junio 2013, 13:24
por satu
Powered by SMF 1.1.20 | SMF © 2006-2008, Simple Machines