Soy novato en programación, el problema es que no puedo es restar las vidas o intentos. si me pueden ayudar porfavor
#include <stdio.h>
#include <string.h>
int vidas=6;
int correctas=0;
main (){
void lineas(int n, char a[]);
char palabra[100];
char letra;
char guiones[100];
int longitud;
void buscar_letra(char p[], int n, char l, char g[]);
printf ("Digite la palabra a adivinar: ");
scanf ("%s", palabra);
fflush(stdin);
system("cls");
longitud= strlen(palabra);
lineas(longitud,guiones);
printf ("\n");
printf("\n\t||===== ");
printf("\n\t|| | ");
printf("\n\t|| ");
printf("\n\t|| ");
printf("\n\t|| ");
printf("\n\t|| ");
while (vidas>0){
printf ("\nDigite la letra: ");
scanf("%c",&letra);
fflush(stdin);
if (letra>= 'a'&& letra<='z'){
buscar_letra(palabra,longitud,letra,guiones);
}
else {
printf ("\nNo es una letra o la letra es mayuscula (digite una letra minuscula)");
}
}
}
void buscar_letra(char p[100], int n, char l,char g[]){
int i;
for(i=0;i<n;i++){
if ()
if(p==l){
printf ("%c", l);
correctas++;
}else {
printf ("*");
}
}
if (correctas==n){
printf ("\n ADIVINASTE LA PALABRA!!!");
printf ("\n Ganaste...");
}
}
void lineas(int n, char a[]) {
int i;
for (i=0;i<n;i++){
printf("* ", a);
}
}
Hola, este es tu código usando el tag de código del sitio...
No comprendo mucho de C, pero tu código no da algún error antes de compilar ?
#include <stdio.h>
#include <string.h>
int vidas=6;
int correctas=0;
main (){
void lineas(int n, char a[]);
char palabra[100];
char letra;
char guiones[100];
int longitud;
void buscar_letra(char p[], int n, char l, char g[]);
printf ("Digite la palabra a adivinar: ");
scanf ("%s", palabra);
fflush(stdin);
system("cls");
longitud= strlen(palabra);
lineas(longitud,guiones);
printf ("\n");
printf("\n\t||===== ");
printf("\n\t|| | ");
printf("\n\t|| ");
printf("\n\t|| ");
printf("\n\t|| ");
printf("\n\t|| ");
while (vidas>0){
printf ("\nDigite la letra: ");
scanf("%c",&letra);
fflush(stdin);
if (letra>= 'a'&& letra<='z'){
buscar_letra(palabra,longitud,letra,guiones);
} else {
printf ("\nNo es una letra o la letra es mayuscula (digite una letra minuscula)");
}
}
}
void buscar_letra(char p[100], int n, char l,char g[]){
int i;
for(i=0;i<n;i++){
if(p==l){
printf ("%c", l);
correctas++;
}else {
printf ("*");
}
}
if (correctas==n){
printf ("\n ADIVINASTE LA PALABRA!!!");
printf ("\n Ganaste...");
}
void lineas(int n, char a[]) {
int i;
for (i=0;i<n;i++){
printf("* ", a);
}
}
EDITO: No había visto el último mensaje pero como he añadido los comentarios al código, lo dejo para que se puedan ver, si no es necesario lo modifico y lo quito... :-\
El código entre etiquetas de código GeSHi (tienes un desplegable encima del cuadro de texto cuando escribes o modificas un mensaje)... :rolleyes:
Además de eso, lo suyo es tabular el código para que sea más fácil identificar cada bloque y ver rápidamente a qué nivel está.
Te dejo el código con las etiquetas, más o menos tabulado y con comentarios de las cosas que hay que cambiar/mejorar:
#include <stdio.h>
#include <string.h>
int vidas=6; // variable global, no recomendado
int correctas=0; // variable global, no recomendado
main (){ // main es una funcion, tiene que devolver algo. Devuelve un int, es decir, int main(){...}
void lineas(int n, char a[]); // las funciones se declaran fuera del main
char palabra[100]; // mejor usar una constante para controlar la longitud
char letra;
char guiones[100]; // lo mismo que dos lineas atras
int longitud;
void buscar_letra(char p[], int n, char l, char g[]); // funcion -> fuera del main
printf ("Digite la palabra a adivinar: ");
scanf ("%s", palabra); // no es muy seguro para cadenas. Mejor fgets()
fflush(stdin); // nada recomendado usar fflush para stdin
system("cls"); // innecesario si estas empezando
longitud= strlen(palabra);
lineas(longitud,guiones);
// si estas empezando, el dibujo para cuando ya funcione lo importante
printf ("\n");
printf("\n\t||===== ");
printf("\n\t|| | ");
printf("\n\t|| ");
printf("\n\t|| ");
printf("\n\t|| ");
printf("\n\t|| ");
while (vidas>0){ // no puedes ganar nunca si solo acaba cuando te quedas sin vidas
printf ("\nDigite la letra: ");
scanf("%c",&letra);
fflush(stdin); // otra vez, nada recomendado
if (letra>= 'a'&& letra<='z'){ // ponselo facil al usuario, convierte tu la letra a minuscula o mayuscula siempre
buscar_letra(palabra,longitud,letra,guiones);
}
else{
printf ("\nNo es una letra o la letra es mayuscula (digite una letra minuscula)");
}
}
}
void buscar_letra(char p[100], int n, char l,char g[]){ // mejor usar nombres que ayuden a seguir el funcionamiento
int i;
for(i=0;i<n;i++){
if () // esto no pinta nada
if(p==l){
printf ("%c", l);
correctas++;
}else {
printf ("*");
}
}
if(correctas==n){
printf ("\n ADIVINASTE LA PALABRA!!!");
printf ("\n Ganaste...");
}
}
void lineas(int n, char a[]) { // usar mejores nombres de variables
int i;
for (i=0;i<n;i++){
printf("* ", a); // este formato no es correcto
}
}
Y como veo que el <while> no funciona muy bien te pongo aquí los pasos que tienes que seguir:
letras_solucion := contarLetras(palabra_solucion)
mientras (vidas > 0 || !acertado)
letra := pedirCaracter()
si (existe(caracter, palabra_solucion))
letras_acertadas := letras_acertadas + 1
acertado := (letras_acertadas == letras_solucion)
sino
vidas := vidas - 1
fin si
fin mientras
si (acertado)
Has ganado
sino
Has perdido
fin si
Ahora tienes que intentar traducir esto a lenguaje C. Puedes usar las funciones que he escrito yo o usar otras si así lo prefieres, pero tienes que implementarlas tú. Suerte :-X
Una gran sugerencia en este juego es que haya tres pistas (letras) ,lo cual te ayudaran a ir relacionando y formando las palabras de una manera más sencilla ,y cada vez que se progrese ir disminuyendolas