ayuda con una tarea
necesito su ayuda.
necesito hacer un programa tipo ahorcado donde tome el tiempo que me tardo en adivinar la palabra pero por ejemplo si la palabra a adivinar es escuela, de entrada la palabra tiene que tener hits o ayuda por ejemplo a _ _ d _ osea algunas letras ya descubiertas y por cada error incrementar el tiempo.
alguna sugerencia?
muchas gracias
necesito hacer un programa tipo ahorcado donde tome el tiempo que me tardo en adivinar la palabra pero por ejemplo si la palabra a adivinar es escuela, de entrada la palabra tiene que tener hits o ayuda por ejemplo a _ _ d _ osea algunas letras ya descubiertas y por cada error incrementar el tiempo.
alguna sugerencia?
muchas gracias
Tal vez esto te sirva solo adaptalo,. y el archivo de donde jala las palabras es el que tu deberas crear
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void asignar_palabra(FILE *);
int repeticion(char,char *,int);
int compara_letras(char);
#define ENTER 'n'
char palabra[50];
short int cont;
void main(void)
{
char tecla,otra='S',tecla_pres[11];
FILE *archiv;
int presiones=-1;
do
{
textcolor(WHITE);
fflush(stdin);
clrscr();
printf("nnnnntt Ahorcado");
printf("nnnnnnnnt Palabra tt Oportunidades Restantes");
gotoxy(16,32); printf(" Teclas presionadas ");
gotoxy(2,34); printf("[A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M]");
gotoxy(2,36); printf("[N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]");
asignar_palabra(archiv);
short int aciertos=0,oport=10,posicion;
do
{
tecla=toupper(getch());
if(tecla!='¥')
{
posicion=compara_letras(tecla);
if(posicion>=0 && posicion<=12)
{
if(posicion==0)
gotoxy(3+(3*posicion),34);
else
gotoxy(3+(4*posicion),34);
}
if(posicion>=13 && posicion<=25)
{
if(posicion==13)
gotoxy(3+(3*(posicion-13)),36);
else
gotoxy(3+(4*(posicion-13)),36);
}
textcolor(4); cprintf("%c",tecla);
}
if(!repeticion(tecla,tecla_pres,presiones)) //Si la tecla no esta repetida lo
{ //ejecuta
for(short int a=0;a<=cont;a++)
{
if(tecla==palabra[a]) //Este if compara si la tecla
{ //presionada corresponde a una letra
gotoxy(8+a,18); //de la palabra
printf("%c",tecla);
aciertos++;
tecla_pres[++presiones]=tecla;
}//if(tecla==palabra[a])
}//for(short int a=0;a<=cont;a++)
}//if(!repeticion(tecla,tecla_pres,presiones))
oport--;
gotoxy(45,18); printf(" %d",oport);
}while(aciertos<cont && oport>=1);
if(aciertos==cont)
printf("nnnnntt Tu Ganas !");
else
{
printf("nnnnntt Tu Pierdes !");
printf("nntt La palabra era: %s",palabra);
}
printf("nnnt Otra S/N ?: ");
otra=toupper(getche());
}while(otra!='N');
}
void asignar_palabra(FILE *archiv)
{
int pal_selec,no_pal=32-1;
char tecla;
archiv=fopen("Ahorcado.txt","r");
if(archiv!=NULL)
{
randomize(); //Asigna una palabra aleatoriamente
pal_selec=random(no_pal);
short int pal_actual=0;
while(pal_actual!=pal_selec) //Se asegura de dejar la lectura de
{ //la palabra este en posicion
tecla=fgetc(archiv); //correcta
if(tecla==ENTER)
pal_actual++;
}
cont=0;
do //Desplegara en la pantalla la
{ //palabra que fue seleccionada
tecla=fgetc(archiv);
palabra[cont]=tecla;
gotoxy(8+cont,18); printf("*");
cont++;
}while(tecla!=ENTER);
cont--; //Nota.- Para poder agregar m s
palabra[cont]=' '; //palabras solo debe cambiarse el
gotoxy(8+(cont),18); printf(" "); //valor de la variable "no_pal" en
gotoxy(45,18); printf("10"); //-1 al valor real, ya que se debe
}//if(archiv!=NULL) //tomar en cuenta que se comienza a
} //contar desde 0; y se deben agregar
//las nuevas palabras en el archivo
//Ahorcado.txt localizado en el
//directorio d:borlandcbin
int repeticion(char tecla,char *tecla_pres,int presiones)
{
int repetida=0;
for(short int a=0;a<=presiones;a++) //Compara si la tecla ya ha sido
{ //presionada anteriormente
if(tecla==tecla_pres[a])
repetida=1;
}
return repetida;
}
int compara_letras(char letra)
{
char abecedario[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
short int posicion=0;
for(short int a=0;a<=25;a++)
{
if(abecedario[a]==letra)
posicion=a;
}
return (posicion);
}
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
void asignar_palabra(FILE *);
int repeticion(char,char *,int);
int compara_letras(char);
#define ENTER 'n'
char palabra[50];
short int cont;
void main(void)
{
char tecla,otra='S',tecla_pres[11];
FILE *archiv;
int presiones=-1;
do
{
textcolor(WHITE);
fflush(stdin);
clrscr();
printf("nnnnntt Ahorcado");
printf("nnnnnnnnt Palabra tt Oportunidades Restantes");
gotoxy(16,32); printf(" Teclas presionadas ");
gotoxy(2,34); printf("[A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M]");
gotoxy(2,36); printf("[N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]");
asignar_palabra(archiv);
short int aciertos=0,oport=10,posicion;
do
{
tecla=toupper(getch());
if(tecla!='¥')
{
posicion=compara_letras(tecla);
if(posicion>=0 && posicion<=12)
{
if(posicion==0)
gotoxy(3+(3*posicion),34);
else
gotoxy(3+(4*posicion),34);
}
if(posicion>=13 && posicion<=25)
{
if(posicion==13)
gotoxy(3+(3*(posicion-13)),36);
else
gotoxy(3+(4*(posicion-13)),36);
}
textcolor(4); cprintf("%c",tecla);
}
if(!repeticion(tecla,tecla_pres,presiones)) //Si la tecla no esta repetida lo
{ //ejecuta
for(short int a=0;a<=cont;a++)
{
if(tecla==palabra[a]) //Este if compara si la tecla
{ //presionada corresponde a una letra
gotoxy(8+a,18); //de la palabra
printf("%c",tecla);
aciertos++;
tecla_pres[++presiones]=tecla;
}//if(tecla==palabra[a])
}//for(short int a=0;a<=cont;a++)
}//if(!repeticion(tecla,tecla_pres,presiones))
oport--;
gotoxy(45,18); printf(" %d",oport);
}while(aciertos<cont && oport>=1);
if(aciertos==cont)
printf("nnnnntt Tu Ganas !");
else
{
printf("nnnnntt Tu Pierdes !");
printf("nntt La palabra era: %s",palabra);
}
printf("nnnt Otra S/N ?: ");
otra=toupper(getche());
}while(otra!='N');
}
void asignar_palabra(FILE *archiv)
{
int pal_selec,no_pal=32-1;
char tecla;
archiv=fopen("Ahorcado.txt","r");
if(archiv!=NULL)
{
randomize(); //Asigna una palabra aleatoriamente
pal_selec=random(no_pal);
short int pal_actual=0;
while(pal_actual!=pal_selec) //Se asegura de dejar la lectura de
{ //la palabra este en posicion
tecla=fgetc(archiv); //correcta
if(tecla==ENTER)
pal_actual++;
}
cont=0;
do //Desplegara en la pantalla la
{ //palabra que fue seleccionada
tecla=fgetc(archiv);
palabra[cont]=tecla;
gotoxy(8+cont,18); printf("*");
cont++;
}while(tecla!=ENTER);
cont--; //Nota.- Para poder agregar m s
palabra[cont]=' '; //palabras solo debe cambiarse el
gotoxy(8+(cont),18); printf(" "); //valor de la variable "no_pal" en
gotoxy(45,18); printf("10"); //-1 al valor real, ya que se debe
}//if(archiv!=NULL) //tomar en cuenta que se comienza a
} //contar desde 0; y se deben agregar
//las nuevas palabras en el archivo
//Ahorcado.txt localizado en el
//directorio d:borlandcbin
int repeticion(char tecla,char *tecla_pres,int presiones)
{
int repetida=0;
for(short int a=0;a<=presiones;a++) //Compara si la tecla ya ha sido
{ //presionada anteriormente
if(tecla==tecla_pres[a])
repetida=1;
}
return repetida;
}
int compara_letras(char letra)
{
char abecedario[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
short int posicion=0;
for(short int a=0;a<=25;a++)
{
if(abecedario[a]==letra)
posicion=a;
}
return (posicion);
}
