Si no lo consigo yo si que estoy AHORCADO en C++

Mav_ebc
16 de Octubre del 2004
Hago un llamamiento a todos los consultores y programadores de este foro, me harias un favor si alguien me pasara el codigo para hacer el jueguecito del ahorcado en C/C++, [email protected]. gracias.

eltripas
16 de Octubre del 2004
de favor les pido a todos, que publiquen el codigo aqui, y lo compartan con todos, no sean envidiosos.

Rev
16 de Octubre del 2004
Yo hice este:

#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);
}

Solo crea un archivo con un conjunto de palabras en c:borlandcbin, que es donde se almacenan los ejecutables.
La lista debe ser parecida a esta:

Hola
Mundo
Fin //Fin del archivo de palabras

Espero les sirva.