Energia 0 Denunciar post Postado Outubro 11, 2010 Boa tarde pessoal ! Meu primeiro programa na facu é um jogo de adivinhação de senha. Resumidamente o jogo tem como principais caracteristicas : 1º O computador gera uma senha de 4 digitos entre os numeros 1 - 6. 2º O jogador tem 15 tentativas, caso esgote a senha é revelada. 3° Caso acerte o um número e sua posição aparece um 'V' de verde. Caso acerte um numero mas não sua posição aparece um 'A', e se errar aparece um 'X'. 4° No final tem que aparecer as estatísticas como: total de partidas, porcentagem de partidas ganhas e perdidas, maior número de tentativas (nas partidas ganhas), média de tentativas. Por enquanto fiz isso : #include <stdio.h> #include <stdlib.h> #include <time.h> int a,b,c,d; void main(void) { printf("Jogo Senha"); printf("\n"); printf("-----------------------"); printf("\n Instrucoes"); printf("\n"); printf("\n"); printf("\n Escolha uma senha de %d digitos entre %d e %d",4,1,6); printf("\n Voce tera 15 tentativas para acertar"); printf(" caso nao acerte a senha e' revelada"); printf("\n Nao sera permitido inserir uma senha ja testada"); a,b,c,d=rand(); srand((unsigned)time(NULL)); a=rand()%6+1;//*O zero nao aparece na senha*/ b =rand()%6+1;//*O zero nao aparece na senha*/ c=rand()%6+1;//* zero nao aparece na senha*/ d=rand()%6+1;//*O zero nao aparece na senha*/ printf("\n"); printf("\n Digite uma senha"); scanf("%d",&a); scanf("%d",&B); scanf("%d",&c); scanf("%d",&d); if(a,b,c,d=a,b,c,d=rand()); system("PAUSE"); } Como começei agora tenho algumas(muitas) dúvidas. Por exemplo: 1ª eu tava pensando como se existe alguma função para fazer uma espécie de comparação, ou seja quando o jogador digitase o nº iria se fazer uma comparação com senha gerada. E depois como fazer uma condição para aparecer o 'A', o 'V' e o 'X'. 2º Como fazer as estatísticas. Eu tava pensando em utilizar operações de matemática básica para isso tpw : porcentagem de partidas ganhas seria Partidas ganhas/Total de partidas * 100 A média de tentativas eu pensei em : Soma de todas as tentativas/Total de partidas ganhas , mas estou com dúvida em como calcular o total de partidas ganhas e perdidas, como calcular a soma das tentativas, qual função eu posso jogar essas operações e como eu faria para esse dados se atualizarem. O total de partidas eu pensei em declarar total de portidas = 0, depois fazer um incremento; partidas = partidas++. Bom se alguem poder me ajudar (e ajudar outros com a mesma dúvida ou dúvida similar) fico grato. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 13, 2010 Bom é praticamente um jogo da velha.. http://www.cplusplus.com/reference/clibrary/cstring/strchr/ http://www.cplusplus.com/reference/clibrary/cstring/strpbrk/ acho melhor comparar numero por numero msm.. vai postando ai.. []s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 13, 2010 - Não é void main. é int main. Existe um post sobre isso. - O que vem a ser isso? a,b,c,d=rand(); if(a,b,c,d=a,b,c,d=rand()); Tá parecendo código de gente que se internou em Perl durante 5 anos que faz one-liners pra impressionar os outros, que acabam por não entender o que o código faz. (incrivelmente, esse tipo de coisa é recorrente em livros de Perl: "mas os programadores Perl não fazem assim" [do modo legível]) Compartilhar este post Link para o post Compartilhar em outros sites
Energia 0 Denunciar post Postado Outubro 14, 2010 No caso como eu faço essa comparação numero por numero? eu tenho que utilizar vetores ou algo do tipo ? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 14, 2010 == Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Outubro 15, 2010 - Não é void main. é int main. Existe um post sobre isso. - O que vem a ser isso? a,b,c,d=rand(); if(a,b,c,d=a,b,c,d=rand()); Tá parecendo código de gente que se internou em Perl durante 5 anos que faz one-liners pra impressionar os outros, que acabam por não entender o que o código faz. (incrivelmente, esse tipo de coisa é recorrente em livros de Perl: "mas os programadores Perl não fazem assim" [do modo legível]) Aí eu tenho que me defender, e defender o Perl :) A linguagem é muito tolerante. O que faz com que os pouco informados usem-na de maneira imprópria, e com que os que precisam de afirmação criem código críptico. Mas da mesma forma como esses casos acontecem, tem gente que programa em Perl muito bem e que cria código simples e legível. A própria linguagem C permite criação de códigos ininteligíveis, e isso foi afirmado por seus próprios criadores (para exemplos, vide este link). Vai de cada um saber escrever. Compartilhar este post Link para o post Compartilhar em outros sites
Energia 0 Denunciar post Postado Outubro 17, 2010 Gente meu cógido ta assim mas tem alguns defeitos voces, podem me ajudar ? 1º O jogador tem que ser alertado caso repita uma senha ja testada 2º O as letras 'V' 'A' e 'X' que indicam respectivamente numero certo - posição correta, numero certo - posição errada e numero errado tem que apartecer aleatoriamente e por enquanto elas estão sempre se repetindo, mesmo que eu ponha um numero errado. Caso alguem possa me ajudar fico grato ! #include <stdio.h> #include <stdlib.h> #include <time.h> #define QTD_VEZES 15/* 15 tentativas*/ int main(void) { int senha[4], acerto = 0; int i, j, tentativa = 1; int digitos[4]; // tentativa para posicoes a, b, c e d char acertos[4], opcao; printf(" Jogo Senha\n"); printf("-----------------------\n"); printf(" Instrucoes\n\n\n"); printf(" Escolha uma senha de 4 digitos entre 1 e 6\n"); printf(" Voce tera 15 tentativas para acertar\n"); printf(" caso nao acerte a senha e' revelada\n"); printf(" Nao sera permitido inserir uma senha ja testada\n"); while ( ( opcao != 'n' ) || ( opcao != 'N' ) ) { tentativa = 1; acerto = 0; /* Inicia estruturas */ for ( i = 0; i < 4; i++ ) { senha[i]=rand(); srand( (unsigned) time( NULL ) ); senha[i]=rand()%6+1; /* O zero nao aparece na senha */ acertos[i] = 'X'; /* Inicia como sendo todos errados */ } while ( ( tentativa <= QTD_VEZES ) && ( acerto < 4 ) ) { printf("[Tentativa: %d] Entre com o primeiro digito: ", tentativa); scanf("%d", &digitos[0] ); printf("[Tentativa: %d] Entre com o segundo digito: ", tentativa); scanf("%d", &digitos[1] ); printf("[Tentativa: %d] Entre com o terceiro digito: ", tentativa); scanf("%d", &digitos[2] ); printf("[Tentativa: %d] Entre com o quarto digito: ", tentativa); scanf("%d", &digitos[3] ); for ( i = 0; i < 4; i++ ) { for ( j = 0; j < 4; j++ ) { if ( digitos[j] == senha[i] ) { if ( j == i ) { acertos[i] = 'V'; acerto++; } else { if ( acertos[i] != 'V' ) acertos[i] = 'A'; } } } printf("[%c]", acertos[i]); } printf("\n"); tentativa++; if ( acerto >= 4 ) { printf("Acertou a senha. Parabens!!!\n\n\n\nDeseja continuar? (S/N)"); fflush(stdin); scanf("%c", &opcao ); } } } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 18, 2010 http://forum.imasters.com.br/index.php?/topic/294106-aviso-leia-antes-de-postar/ http://forum.imasters.com.br/index.php?/topic/336835-tutorial-systempause-e-fflushstdin/ comece com isso, depois ajudo com o resto. []s Compartilhar este post Link para o post Compartilhar em outros sites