Jump to content

Recommended Posts

Posted

O  jogo  do  enforcado  consiste  em  um  jogador  adivinhar  uma  palavra

escolhendo  as  letras  que  poderão  compor  essa  palavra  sabendo  apenas

quantas  letras  a  compõem.  Quando  um  dos  jogadores  escolher  6  letras  que

não compõem a palavra, esse jogador perde e dá lugar ao outro. As palavras

que um jogador tenta adivinhar são escolhidas pelo outro.

O  jogador  escolhe  uma  letra  e  se  a  letra  existir  na  palavra,  o  underscore  é

substituído pela letra (todas as ocorrências da mesma). Se a letra não existir,

vai  aparecendo  no  ecrã  uma  parte  de  um  boneco,  até  às  6  partes  (6  letras

falhadas) (enforcado…).

Isto foi o enunciado que a prof.  me deu . A linguagem que aprendi é C++ .

Obrigado ( :

EDIT: Titulo modificado

Posted

Volta a ler as regras do fórum, por favor. Aqui não se fazem trabalhos, apenas se presta ajuda nalguns pontos nos quais possas ter dúvidas. Dando-te uma segunda oportunidade, em que partes do trabalho tens dúvidas? O que já fizeste?

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Posted

A tua prof. sugere problemas interessantes 🙂

Eu começo por escolher a letra 'E'. Já agora diz quantas letras tem a palavra que estás a pensar. Eu estou a pensar numa de 9 letras.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

Mostra o código que ja tens, e se tiveres alguma duvida pergunta aqui. Pedir para fazer código vai contra as regras do p@p (e provavelmente também da tua escola, e também não e ético dar-te a resposta).

<Signature goes here>

Posted
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void boneco1(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|    \n");
	printf("|    \n");
	printf("|    \n");
	printf("|    \n");
}
void boneco2(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("|    \n");
	printf("|    \n");
	printf("|    \n");
}
void boneco3(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /   \n");
	printf("|    \n");
	printf("|    \n");
}
void boneco4(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|  \n");
	printf("|    \n");
	printf("|    \n");
}	
void boneco5(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|\ \n");
	printf("|    \n");
	printf("|    \n");
}	
void boneco6(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|\ \n");
	printf("| /   \n");
	printf("|    \n");
}	
void boneco7(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|\ \n");
	printf("| / \  \n");
	printf("|     \n");
}	
void contarp(int contar){
	for(int i=0;i<contar;i++){
		printf("__ ");
	}
}
void verificar_letra(){
	for(int i=0;i<strlen(palavra);i++){
		if(palavra==letra){
			printf("A letra que inseriu existe na palavra");
		}
	}
}

void main(){
	char nome1[10];
	char nome2[10];
	char palavra[10];
	char letra[1];
	int conta;

	printf("JOGO DA FORCA \n");
	printf("\n");
	printf("Introduza o nome do jogador 1: \n");
	scanf("%s",nome1);
	printf("\n");
	printf("Insira uma palavra: \n");
	scanf("%s",palavra);
	printf("\n");

	conta=strlen(palavra);
	contarp(conta);
	printf("\n \n");
    boneco1();

	printf("Insira uma letra: \n");
	scanf("%s",letra);
	printf("\n \n");


	}
}
}


	system("pause");
}

Já Fiz isto , nao sei é como verificar se a letra existe na palavra . Já tentei algumas coisas mas nunca dá.

Posted

Se queres receber apenas uma letra para comparar troca:

char letra[1];
scanf("%s",letra);

por:

char letra;
scanf("%c",&letra);

nos sítios apropriados. Para procurar uma letra numa string podes usar a função 'strchr':

if (strchr(palavra,letra) != NULL)
{
  /* Encontrei a letra */
}
Posted

Já Fiz isto , nao sei é como verificar se a letra existe na palavra . Já tentei algumas coisas mas nunca dá.

Primeiro, o que tu fizeste foi em linguagem C, não C++ .

Para verificares se a letra existe na palavra tens de percorrer cada posição da string da palavra e verificar com a letra...

Algo do genero:

for(int i=0;i<strlen(palavra);i++){
	if(palavra[i]==letra){
		palavraHifen[i]=letra;
                }
}

A palavraHifen é a palavra onde vais substituir os hifens pela letra, caso esta apareça..

Porque não tiras dúvidas com a stora??

(casteleiro ;D )

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Posted

mudei , tipo dá para introduzir o nome do jogador a palavra que ele quer mas depois dá erro a escolher uma letra

A única maneira do código estourar nessa linha é se '&tecla' não corresponder a um ponteiro válido; coloca o teu código actual aqui.

Posted
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void boneco1(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|    \n");
	printf("|    \n");
	printf("|    \n");
	printf("|    \n");
}
void boneco2(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("|    \n");
	printf("|    \n");
	printf("|    \n");
}
void boneco3(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /   \n");
	printf("|    \n");
	printf("|    \n");
}
void boneco4(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|  \n");
	printf("|    \n");
	printf("|    \n");
}	
void boneco5(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|\ \n");
	printf("|    \n");
	printf("|    \n");
}	
void boneco6(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|\ \n");
	printf("| /   \n");
	printf("|    \n");
}	
void boneco7(){
	printf("|--| \n");
	printf("|  | \n");
	printf("|  O  \n");
	printf("| /|\ \n");
	printf("| / \  \n");
	printf("|     \n");
}	
void contarp(int contar){
	for(int i=0;i<contar;i++){
		printf("__ ");
	}
}

void main(){
	char nome1[10];
	char nome2[10];
	char palavra[10];
	char letra;
	int conta;

	printf("JOGO DA FORCA \n");
	printf("\n");
	printf("Introduza o nome do jogador 1: \n");
	scanf("%s",nome1);
	printf("\n");
	printf("Insira uma palavra: \n");
	scanf("%s",palavra);
	printf("\n");

	conta=strlen(palavra);
	contarp(conta);
	printf("\n \n");
    boneco1();

	printf("Insira uma letra: \n");
	scanf("%s",letra);

	if(strchr(palavra,letra) != NULL){
		printf("A letra existe");
	}
	for(int i=0;i<strlen(palavra);i++){
                if(palavra[i]==letra){
                        palavraHifen[i]=letra;
                }
}

	system("pause");
}
Posted

Não te esqueças que se estas a usar aquilo que te disse, a palavraHifen, tens que a inicializar também asseguir ao void main.

Não vi se funciona ou não, mas no entanto, falta a parte em que o jogador pode tentar adivinhar a palavra toda.. Ou seja, o jogador ou escolhe dar uma letra, ou escolhe dar uma palavra..

Fazes um switch.. case 1 é para tentar letra, case 2 é para tentar adivinhar a palavra.

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Posted

O problema do estouro é devido a :

scanf("%s",letra);
        ^  ^-- Falta o &
        ^--- Deve ser c

Como não estás a passar um ponteiro para a variável 'letra' mas o conteúdo da mesma e de mais 3 bytes a seguir, o que escreves vai ser gravado numa área qualquer da memória que não tem nada a ver com a variável. Como tens '%s' o scanf, mesmo recebendo apenas um caracter, vai gravar um zero a seguir. O compilador não te deu nenhum aviso sobre isso ?

Nos outros scanf's deves também limitar os caracteres recebidos fazendo:

scanf("%9s",nome1);

Assim o scanf apenas irá receber um máximo de 9 caracteres, que é o máximo numa string de 10 bytes.

Em vez deste código :

   if(strchr(palavra,letra) != NULL){
         printf("A letra existe");
      }
for(int i=0;i<strlen(palavra);i++){
                if(palavra==letra){
                        palavraHifen=letra;
                }

Tens de ter um ciclo para ir repetindo a introdução da letra, com uma condição de paragem com uma letra específica ('0' para sair ou algo do género). Depois sabendo que a palavra não pode ter mais de 9 caracteres crias outra string com um underscore por cada letra da palavra e fazes um ciclo para contar de 0 ao número de caracteres na palavra - 1 e dentro dele comparas a variável 'letra' com o caracter nessa posição na string 'palavra'. Se for igual metes a letra na string dos underscores, na mesma posição. Se for diferente mostras o boneco e  incrementas um contador, que se chegar a 6 significará o fim do jogo. Podes usar esse contador para controlar o boneco a apresentar. Tenta agora implementar isto e coloca aqui as dúvidas que tiveres.

  • 5 years later...
Posted

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <ctime>

using namespace std;

#define MAXCHARPALAVRA 100
#define NOMEFICHEIRO "forca.txt"


char palavra[MAXCHARPALAVRA];
FILE *fich;


void menu(){
    cout << "JOGO DA FORCA 2.5 TDI v8\n";
    cout <<" <---------------------->\n";
    cout <<" 1 -> Vamos jogar\n";
    cout <<" 2 -> Meter novas palavras\n";
    cout <<" 3 -> Sair\n";


}

char le_linha (char texto[]){

    int i;
    char ultimo;
    for(i=0;;i++){
        texto = fgetc(fich);
        if (texto == '\n')
            break;
        if (texto) == EOF )
            break;

}
    ultimo = texto ;
    texto = '\0';
    return ultimo;

}
void boneco1(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|    \n");
    printf("|    \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco2(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("|    \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco3(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /   \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco4(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|  \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco5(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|\ \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco6(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|\ \n");
    printf("| /   \n");
    printf("|    \n");
}
void boneco7(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|\ \n");
    printf("| / \  \n");
    printf("|     \n");
}
void contarp(int contar){
    for(int i=0;i<contar;i++){
        printf("__ ");
    }
}
void verificar_letra(){
    for(int i=0;i<strlen(palavra);i++){
        if(palavra==letra){
            printf("A letra que inseriu existe na palavra");
        }
    }
}

void abrir_documento []
int main ()
{

    menu();

}
 

Posted
7 minutes ago, EsmaTurmaP11 said:

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <ctime>

using namespace std;

#define MAXCHARPALAVRA 100
#define NOMEFICHEIRO "forca.txt"


char palavra[MAXCHARPALAVRA];
FILE *fich;


void menu(){
    cout << "JOGO DA FORCA 2.5 TDI v8\n";
    cout <<" <---------------------->\n";
    cout <<" 1 -> Vamos jogar\n";
    cout <<" 2 -> Meter novas palavras\n";
    cout <<" 3 -> Sair\n";


}

char le_linha (char texto[]){

    int i;
    char ultimo;
    for(i=0;;i++){
        texto = fgetc(fich);
        if (texto == '\n')
            break;
        if (texto) == EOF )
            break;

}
    ultimo = texto ;
    texto = '\0';
    return ultimo;

}
void boneco1(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|    \n");
    printf("|    \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco2(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("|    \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco3(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /   \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco4(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|  \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco5(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|\ \n");
    printf("|    \n");
    printf("|    \n");
}
void boneco6(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|\ \n");
    printf("| /   \n");
    printf("|    \n");
}
void boneco7(){
    printf("|--| \n");
    printf("|  | \n");
    printf("|  O  \n");
    printf("| /|\ \n");
    printf("| / \  \n");
    printf("|     \n");
}
void contarp(int contar){
    for(int i=0;i<contar;i++){
        printf("__ ");
    }
}
void verificar_letra(){
    for(int i=0;i<strlen(palavra);i++){
        if(palavra==letra){
            printf("A letra que inseriu existe na palavra");
        }
    }
}

void abrir_documento []
int main ()
{

    menu();

}
 

isto e para que?

IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.