1
resposta

[Projeto] Jogo de Adivinhação

Jogo de Adivinhação

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void printHorizontalLine(int tam, char estilo) {
    for(int i = 0; i < tam; i++) {
        cout << estilo;
    }
    cout << endl;
}

void printTitle() {
    cout << "\tJOGO DE ADIVINHACAO" << endl;
}

void printDifficultyMenu() {
    cout << "\tNIVEIS DE DIFICULDADE" << endl << endl;
    cout << "1. Facil" << endl;
    cout << "2. Medio" << endl;
    cout << "3. Dificil" << endl;
}

int main() {
    const int  LINE_SIZE = 35;
    const char LINE_STYLE  = '-';

    printHorizontalLine(LINE_SIZE, LINE_STYLE);
    printTitle();
    printHorizontalLine(LINE_SIZE, LINE_STYLE);
    printDifficultyMenu();
    printHorizontalLine(LINE_SIZE, LINE_STYLE);

    int difficulty;
    cout << "Escolha o seu nivel de dificuldade: " << endl;
    cin >> difficulty;

    printHorizontalLine(LINE_SIZE, LINE_STYLE);

    int attempts = 0, maxAttempts;
    string attemptWord;

    if(difficulty == 1) maxAttempts = 20;
    else if(difficulty == 2) maxAttempts = 10;
    else maxAttempts = 5;
    
    srand(time(NULL));
    const int SECRET_NUMBER = rand() % 100;

    cout << "Numero secreto: " << SECRET_NUMBER << endl;

    bool notGuessed = true;

    double score = 1000;
       
    while(notGuessed) {
        if(attempts == maxAttempts && notGuessed) {
            cout << endl << "Voce perdeu! " << endl;
            cout << "O numero secreto era " << SECRET_NUMBER << endl;
            return 0;
        }

        attempts++;

        cout << "Tentativa " << attempts << " de " << maxAttempts << endl << endl;

        int guess;
        cout << "Digite seu chute: ";
        cin >> guess;

        double pontos_perdidos = abs(guess - SECRET_NUMBER) / 2.0;
        score -= pontos_perdidos;

        cout << endl << "Seu chute foi: " << guess << endl;
        bool guessed  = guess == SECRET_NUMBER;
        bool isGreater = guess < SECRET_NUMBER;  
        
        if (guessed) {
            cout << "Parabens!" << endl << "Voce acertou o numero secreto." << endl;
            notGuessed = false;
        } 
        else if (isGreater) {
            cout << "O numero secreto eh maior que " << guess << "." << endl;
        }
        else {
            cout << "O numero secreto eh menor que " << guess << "." << endl;
        }

        printHorizontalLine(LINE_SIZE, LINE_STYLE);
    }

    attemptWord = (attempts > 1) ? "tentativas" : "tentativa";
    cout << "Fim de Jogo!" << endl << endl;
    cout << "Voce terminou o jogo em " << attempts << " " << attemptWord << "." << endl;
    cout.precision(2);
    cout << fixed;
    cout << "Sua pontuacao foi de " << score << " score" << endl << endl;
    
    return 0;
}
1 resposta

Oi Eduarda, tudo bem?

Muito obrigada por compartilhar o código do jogo de adivinhação. É muito bom ver que você está praticando e desenvolvendo projetos por conta própria. A estrutura do programa está sólida, e o uso de funções para imprimir linhas horizontais e apresentar o título e o menu de dificuldade adiciona uma organização visual ao código.

Você também adicionou níveis de dificuldade, o que dá uma camada extra de desafio ao jogo. A manipulação da pontuação com base nas tentativas e na proximidade do palpite é uma abordagem interessante para avaliar o desempenho do jogador.

Continue explorando e aprimorando suas habilidades em C++.

Um abraço e bons estudos.