-3
I’m having second thoughts computaTentativas
, do not know how to make the tests of if Else if Else. I need that when I find the correct number (color) in the correct position of vet[z]
is tested at the 4 positions and if it is, report that the user has won, IF he does not hit every sequence (has 10 attempts) but hit ONE number in a correct position must return at the positions on the left side of the matrix 4x the number 1, IF you hit a number but are not in the correct position of vet[z]
should return in the positions on the left side of the matrix 4x the number 2, IF does not hit neither a number or position, leaves in the line on the left side of the matrix 4x the number 0.
The problem lies between lines 90 and 123, please, I ask for help am beginner in C and as you can see by the topic I’m long in this xd
Edit: I tried to create another one for when I enter the if and I’m not working either... #HELP
Edit 2: now it’s affecting only the correct line, but I don’t know how to do the tests.... :(
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // Biblioteca para adicionar cores
#define L 10 // Numero de Linhas da matriz
#define C 8 // Numero de Colunas da matriz
#define TAM 4 // Tamanho do vetor vet que armazenará a senha gerada aleatoriamente
void sorteio(int vet[TAM]) // Funcao que sorteia os numeros aleatorios
{
int x;
srand((unsigned)time(NULL));
for (x = 0; x < TAM; x++)
{
vet[x] = 1 + (rand() % 6);
}
printf("\n\t\t\t\t====== SENHA GERADA ======\n\n");
printf("\t\t\t\tBoa sorte Desafiado(a)!!\n\n");
printf("\t\t\t\t==========================\n");
printf("\n");
printf("===================== BEM VINDO AO JOGO DA SENHA NOBRE DESAFIADO(A) =====================\n");
printf("\n");
system("pause");
system("cls");
for (x = 0; x < TAM; x++) // MOSTRANDO OS NUMERO SORTEADOS NO VETOR DE 4 POSICOES SO PARA TESTAR
{
printf("NUMERO DA SENHA GERADA: %d \n", vet[x]);
}
}
void lerTentativas(int tentativa, int numTentativa, int vet[TAM], int matriz[L][C]) // Função para ler as tentativas do Desafiado
{
int x, y, numLinha = 1, z = 0;
tentativa = 1;
for (x = 0; x < L; x++)
{
for (y = 0; y < 4; y++)
{
printf("\n");
textcolor(15);
printf("\t\t\t================ MENU ==================\n");
textcolor(2);
printf("\n\t\t\t\tDigite 1 para a cor verde\n");
textcolor(9);
printf("\t\t\t\tDigite 2 para a cor azul\n");
textcolor(14);
printf("\t\t\t\tDigite 3 para a cor amarelo\n");
textcolor(4);
printf("\t\t\t\tDigite 4 para a cor vermelho\n");
textcolor(5);
printf("\t\t\t\tDigite 5 para a cor roxo\n");
textcolor(1);
printf("\t\t\t\tDigite 6 para a cor azul marinho\n\n");
textcolor(15);
printf("\t\t\t================ MENU ==================\n\n\n");
printf("\t\t\t\tRespostas do Desafiante:\n");
printf("\n\tCaso o resultado de sua linha apos sua jogada seja 1 - Significa que ha uma cor certa no lugar certo\n");
printf("\n\tCaso o resultado de sua linha apos sua jogada seja 2 - Significa que ha uma cor certa mas no lugar errado\n");
printf("\n\tCaso o resultado de sua linha apos sua jogada seja 0 - Significa que nem a cor e nem a posicao estao corretas\n\n");
printf("\t\t\t========================================");
printf("\n\n\t\t\tDigite o numero %d da sua %d tentativa:\t", numLinha, tentativa); // informa tentativa atual
scanf("%d", &matriz[x][y]); //preenchendo matriz com tentativas do usuario
while (matriz[x][y] > 6 || matriz[x][y] < 1) // valida se o numero digitado esta conforme o MENU
{
printf("\t\t=======================================================\n");
printf("\t\tPor favor nobre desafiado(a), digite numeros de 1 ao 6.\n");
printf("\t\t=======================================================\n");
printf("\nDigite o numero %d da sua %d tentativa:\t", numLinha, tentativa); // informa tentativa atual
scanf("%d", &matriz[x][y]); //preenchendo matriz com tentativas do usuario
}
numLinha++;
mostrarMatriz(matriz); // Chama a funcao para mostrar a matriz atualizada a cada jogada.
printf("\n");
}
computaTentativas(matriz, &vet[z]);
numLinha = 1;
tentativa++;
}
}
void computaTentativas(int matriz[L][C], int vet[TAM]) // Função para comparar e computar as tentativas do Desafiado
{
int x, y, z = 0, j, i, senha[TAM];
for (x = 0; x < L; x++)
{
for (y = 0; y < C; y++)
{
if (matriz[x][y] == vet[z]) // Não sei se está correto este teste para se encontrar o numero preenchido da matriz está dentro do vet
{
for (j = 0; j < vet[z]; j++)
{
for (i = 4; i < 8; i++)
{
matriz[x][i] = 1;
printf("PARABENS");
// Se entrar aqui deveria mostrar a matriz e no lado esquerdo da matriz, colocar 1 no início da linha
}
}
}
else if (matriz[x][y] == vet[0] || matriz[x][y] == vet[1] || matriz[x][y] == vet[2] || matriz[x][y] == vet[3]) // Não sei se está correto este teste para se EXISTIR um numero dentro do vetor MAS ESTIVER NA POSICAO INCORRETA
{
for (j = 0; j < L; j++)
{
for (i = 4; i < 8; i++)
{
matriz[x][i] = 2;
// Se entrar aqui deveria mostrar a matriz e no lado esquerdo da matriz, colocar 1 no início da linha
}
} // Se entrar aqui deveria mostrar a matriz e no lado esquerdo da matriz, colocar 2 no início da linha
}
z++;
}
}
}
void mostrarMatriz(int matriz[L][C])
{
int x, y;
printf("\n\n");
printf("\t\t============== MATRIZ ATUALIZADA ==============");
for (x = 0; x < L; x++)
{
printf("\n");
for (y = 0; y < C; y++)
{
printf("\t%4d", matriz[x][y]);
}
}
printf("\n");
printf("\t\t============== MATRIZ ATUALIZADA ==============\n\n");
system("pause");
system("cls");
}
int main()
{
int x, y, matriz[L][C] = {0}, senha, vet[TAM], tentativa = 0, numTentativa;
printf("===================== BEM VINDO AO JOGO DA SENHA NOBRE DESAFIADO(A) =====================\n");
sorteio(&vet);
lerTentativas(tentativa, numTentativa, vet, &matriz);
system("cls");
printf("\n");
printf("\t\t\t============== FINAL DE JOGO ==============\n");
printf("\n\t\t\tTENTATIVAS ESGOTADAS, O DESAFIANTE VENCEU!\n\n\t");
printf("\t\t============== FINAL DE JOGO ==============\n\n");
system("pause");
return 0;
}
First, thank you very much for trying to help me M. Bertolazo! I will summarize, the problem lies in the procedure
computaTentativas
in it, I need that when the user hits A NUMBER IN A CORRECT POSITION of the password that was generated randomly, the whole line referring to the attempt, receive 1 in its 4 positions, IF HIT A NUMBER THAT HAS INSIDE THE VET BUT IN THE WRONG POSITION, the whole line referring to the attempt, Get 2 in your 4 positions, if you find nothing, do nothing, continue 0 and go to next try, if the user hits the password that is in vet, he wins and ends the game– weise