RFMS96 Posted April 20, 2012 at 01:03 PM Report #450160 Posted April 20, 2012 at 01:03 PM 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
softklin Posted April 20, 2012 at 01:11 PM Report #450161 Posted April 20, 2012 at 01:11 PM 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.
pmg Posted April 20, 2012 at 01:12 PM Report #450162 Posted April 20, 2012 at 01:12 PM 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!
xtrm0 Posted April 20, 2012 at 01:13 PM Report #450163 Posted April 20, 2012 at 01:13 PM 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>
seuqram Posted April 20, 2012 at 01:26 PM Report #450167 Posted April 20, 2012 at 01:26 PM sim! todos sabemos como é o jogo.. e agora? qual é a tua biblioteca que tu mencionas fazer isso? não estas á espera que nós te fassamos o jogo pois não?
RFMS96 Posted April 21, 2012 at 10:46 AM Author Report #450369 Posted April 21, 2012 at 10:46 AM #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á.
bsccara Posted April 21, 2012 at 01:44 PM Report #450391 Posted April 21, 2012 at 01:44 PM 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 */ }
RFMS96 Posted April 22, 2012 at 11:17 AM Author Report #450482 Posted April 22, 2012 at 11:17 AM Olá pus como dizes-te mas dá break nesta parte : scanf("%c",&letra);
bsccara Posted April 22, 2012 at 12:09 PM Report #450496 Posted April 22, 2012 at 12:09 PM O que é 'dá break' ? Não compila ? Dá erro na execução ? Mudaste a declaração da variável 'letra' ?
RFMS96 Posted April 22, 2012 at 12:35 PM Author Report #450503 Posted April 22, 2012 at 12:35 PM mudei , tipo dá para introduzir o nome do jogador a palavra que ele quer mas depois dá erro a escolher uma letra
polska Posted April 22, 2012 at 12:43 PM Report #450504 Posted April 22, 2012 at 12:43 PM 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.
bsccara Posted April 22, 2012 at 01:50 PM Report #450516 Posted April 22, 2012 at 01:50 PM 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.
seuqram Posted April 22, 2012 at 05:24 PM Report #450548 Posted April 22, 2012 at 05:24 PM coloca aqui o teu codigo fonte (que tens agora), assim nós te poderemos ajudar, em algum erro que possa ai haver! talvez te esqueceste de algo importante...
RFMS96 Posted April 22, 2012 at 08:28 PM Author Report #450585 Posted April 22, 2012 at 08:28 PM #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"); }
polska Posted April 22, 2012 at 09:48 PM Report #450605 Posted April 22, 2012 at 09:48 PM 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.
bsccara Posted April 22, 2012 at 11:08 PM Report #450636 Posted April 22, 2012 at 11:08 PM 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.
EsmaTurmaP11 Posted May 24, 2017 at 03:57 PM Report #604598 Posted May 24, 2017 at 03:57 PM #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(); }
HappyHippyHippo Posted May 24, 2017 at 04:05 PM Report #604600 Posted May 24, 2017 at 04:05 PM 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 Portugol Plus
EsmaTurmaP11 Posted May 24, 2017 at 04:32 PM Report #604610 Posted May 24, 2017 at 04:32 PM 25 minutos atrás, HappyHippyHippo disse: isto e para que? preciso fazer o jogo da forca para um projeto na escola mas nao sei fazer
HappyHippyHippo Posted May 24, 2017 at 04:44 PM Report #604611 Posted May 24, 2017 at 04:44 PM e porque razão colocaste aqui linhas e linhas de código sem dar uma única referencia ao problema? alem disso porque não disseste agora qual a parte de codigo que nao consegues fazer? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now