Question

In: Computer Science

Create a Hangman game using C++ by QT creator. please separate each code that will insert...

Create a Hangman game using C++ by QT creator.

please separate each code that will insert in hider files and cpp files and use an accurate screeshoots if needed.

Thanks in advance.

Solutions

Expert Solution

This is the working code for Hangman game developed by QT creator.

#include "HanGame.h"

#include <QFile>

#include <QDebug>

#include <QBuffer>

#include <QRandomGenerator>

#include <QtConcurrent/QtConcurrentRun>

// Code for HanGame.h header file

HanGame::HanGame(QObject *parent)

    : QObject(parent)

    , m_lock(QMutex::Recursive)

    , m_vowelsUnlocked(false)

{

    connect(this, &HanGame::vowelBought, this, &HanGame::registerLetterBought);

    QtConcurrent::run(this, &HanGame::initWordList);

    m_vowelsUnlocked = m_persistentSettings.value("Hangman/vowelsUnlocked", false).toBool();

    m_vowelsAvailable = m_persistentSettings.value("Hangman/vowelsAvailable", 0).toInt();

    m_wordsGiven = m_persistentSettings.value("Hangman/wordsGiven", 0).toInt();

    m_wordsGuessedCorrectly = m_persistentSettings.value("Hangman/wordsGuessedCorrectly", 0).toInt();

    m_score = m_persistentSettings.value("Hangman/score", 0).toInt();

}

// Game Reset Code

void HanGame::reset()

{

    m_lettersOwned.clear();

    emit lettersOwnedChanged();

    emit errorCountChanged();

    chooseRandomWord();

}

// Game reveal code

void HanGame::reveal()

{

    m_lettersOwned += vowels() + consonants();

    emit errorCountChanged();

    emit lettersOwnedChanged();

}

// Game Over Code

void HanGame::gameOverReveal()

{

    m_lettersOwned += vowels() + consonants();

    emit lettersOwnedChanged();

}

// Requesting code

void HanGame::requestLetter(const QString &letterString)

{

    Q_ASSERT(letterString.size() == 1);

    QChar letter = letterString.at(0);

    registerLetterBought(letter);

}

// Guess the word code

void HanGame::guessWord(const QString &word)

{

    if (word.compare(m_word, Qt::CaseInsensitive) == 0) {

        //Determine how many vowels were earned

        setVowelsAvailable(m_vowelsAvailable + calculateEarnedVowels());

        //score is number of remaining consonants + remaining errors

        setScore(m_score + calculateEarnedPoints());

        m_lettersOwned += m_word.toUpper();

    } else {

        // Small hack to get an additional penalty for guessing wrong

        static int i=0;

        Q_ASSERT(i < 10);

        m_lettersOwned += QString::number(i++);

        emit errorCountChanged();

    }

    emit lettersOwnedChanged();

}

// To check vowels

bool HanGame::isVowel(const QString &letter)

{

    Q_ASSERT(letter.size() == 1);

    QChar letterChar = letter.at(0);

    return vowels().contains(letterChar);

}

QString HanGame::vowels() const

{

    return QStringLiteral("AEIOU");

}

// Check Constanants

QString HanGame::consonants() const

{

    return QStringLiteral("BCDFGHJKLMNPQRSTVWXYZ");

}

int HanGame::errorCount() const

{

    int count = 0;

    for (QChar c : m_lettersOwned) {

        if (!m_word.contains(c))

            ++count;

    }

    return count;

}

bool HanGame::vowelsUnlocked() const

{

    return m_vowelsUnlocked;

}

void HanGame::setVowelsUnlocked(bool vowelsUnlocked)

{

    if (m_vowelsUnlocked != vowelsUnlocked) {

        m_vowelsUnlocked = vowelsUnlocked;

        m_persistentSettings.setValue("Hangman/vowelsUnlocked", m_vowelsUnlocked);

        emit vowelsUnlockedChanged(m_vowelsUnlocked);

    }

}

int HanGame::vowelsAvailable() const

{

    return m_vowelsAvailable;

}

int HanGame::wordsGiven() const

{

    return m_wordsGiven;

}

int HanGame::wordsGuessedCorrectly() const

{

    return m_wordsGuessedCorrectly;

}

// Calculating the score

int HanGame::score() const

{

    return m_score;

}

void HanGame::setScore(int score)

{

    if (m_score != score) {

        m_score = score;

        m_persistentSettings.setValue("Hangman/score", m_score);

        emit scoreChanged(score);

    }

}

void HanGame::setWordsGiven(int count)

{

    if (m_wordsGiven != count) {

        m_wordsGiven = count;

        m_persistentSettings.setValue("Hangman/wordsGiven", m_wordsGiven);

        emit wordsGivenChanged(count);

    }

}

// Executes when guessed correctly

void HanGame::setWordsGuessedCorrectly(int count)

{

    if (m_wordsGuessedCorrectly != count) {

        m_wordsGuessedCorrectly = count;

        m_persistentSettings.setValue("Hangman/wordsGuessedCorrectly", m_wordsGuessedCorrectly);

        emit wordsGuessedCorrectlyChanged(count);

    }

}

void HanGame::setVowelsAvailable(int count)

{

    if (m_vowelsAvailable != count) {

        m_vowelsAvailable = count;

        m_persistentSettings.setValue("Hangman/vowelsAvailable", m_vowelsAvailable);

        emit vowelsAvailableChanged(count);

    }

}

void HanGame::registerLetterBought(const QChar &letter)

{

    if (m_lettersOwned.contains(letter))

        return;

    m_lettersOwned.append(letter);

    emit lettersOwnedChanged();

    if (!m_word.contains(letter))

        emit errorCountChanged();

}

// Finding random words

void HanGame::chooseRandomWord()

{

    QMutexLocker locker(&m_lock);

    if (m_wordList.isEmpty())

        return;

    m_word = m_wordList.at(QRandomGenerator::global()->bounded(m_wordList.size()));

    emit wordChanged();

}

void HanGame::initWordList()

{

    QMutexLocker locker(&m_lock);

    QFile file(":/enable2.txt");

    if (file.open(QIODevice::ReadOnly)) {

        QByteArray allData = file.readAll();

        QBuffer buffer(&allData);

        if (!buffer.open(QIODevice::ReadOnly))

           qFatal("Couldn't open buffer for reading!");

        while (!buffer.atEnd()) {

            QByteArray ba = buffer.readLine().trimmed().toUpper();

            if (!ba.isEmpty() && ba.length() < 10)

                m_wordList.append(QString::fromLatin1(ba));

        }

    }

    chooseRandomWord();

}

int HanGame::calculateEarnedVowels()

{

    int total = 0;

    for (int i = 0; i < m_word.length(); ++i) {

        if (isVowel(QString(m_word[i])) && !m_lettersOwned.contains(QString(m_word[i])))

            total++;

    }

    return total;

}

int HanGame::calculateEarnedPoints()

{

    int total = 0;

    for (int i = 0; i < m_word.length(); ++i) {

        if (consonants().contains(QString(m_word[i])) && !m_lettersOwned.contains(QString(m_word[i])))

            total++;

    }

    total += 8 - errorCount();

    return total;

}


Related Solutions

Please create a Hangman game in Java language. For this game a random word will be...
Please create a Hangman game in Java language. For this game a random word will be selected from the following list (abstract, cemetery, nurse, pharmacy, climbing). You should keep a running tab of the user’s score and display it on screen; the user begins with 100 points possible if they correctly guess the word without any mistakes. For every incorrect letter which is guessed, 10 points should be taken away from what is left of their total possible points. For...
For a C program hangman game: Create the function int setup_game [int setup_game ( Game *g,...
For a C program hangman game: Create the function int setup_game [int setup_game ( Game *g, char wordlist[][MAX_WORD_LENGTH], int numwords)] for a C program hangman game. (The existing code for other functions and the program is below, along with what the function needs to do) setup_game() does exactly what the name suggests. It sets up a new game of hangman. This means that it picks a random word from the supplied wordlist array and puts that into g->hidden_word. It sets...
In python Using the example code from the HangMan program in our textbook, create a Word...
In python Using the example code from the HangMan program in our textbook, create a Word Guessing Game of your choice. Design a guessing game of your own creation. Choose a theme and build your words around that theme. Keep it simple. Note: I would highly recommend closely reviewing the HangMan code and program from Chapter 10 before starting work on this project. You can run the program via my REPL (Links to an external site.). Using python Similar to...
Create a C++ code for the mastermind game using classes(private classes and public classes). Using this...
Create a C++ code for the mastermind game using classes(private classes and public classes). Using this uml as a reference.
Project 6-1: Email Creator C++ code Create a program that reads a file and creates a...
Project 6-1: Email Creator C++ code Create a program that reads a file and creates a series of emails. Console Email Creator ================================================================ To:      [email protected] From:    [email protected] Subject: Deals! Hi James, We've got some great deals for you. Check our website! ================================================================ To:      [email protected] From:    [email protected] Subject: Deals! Hi Josephine, We've got some great deals for you. Check our website! ================================================================ To:      [email protected] From:    [email protected] Subject: Deals! Hi Art, We've got some great deals for you. Check our website! Specifications...
Write python code so that in a game of hangman the word ‘apple’ is displayed as...
Write python code so that in a game of hangman the word ‘apple’ is displayed as “ _ _ _ _ _ “ and is usable code for any random words. Include in this code how to after the player has guessed a correct letter replace the _ with the correct guess shown as “ _ p _ _ _”
Can you create a player vs computer Hangman game on MATLAB using nested loops, for loops,...
Can you create a player vs computer Hangman game on MATLAB using nested loops, for loops, if loops, while loops, arrays and conditional execution, as well as creating an image of the game board. The list below must be considered in the code. - Selecting a word from a dictionary (a text file) - Reading a single letter from the user - Building a character array showing the letters matched so far - Keeping count of the number of guessed...
Using C# Windows App Form Create a simple calculator using +,-,*,/ Please show code GUI Code...
Using C# Windows App Form Create a simple calculator using +,-,*,/ Please show code GUI Code for calculator menus radio button input text boxes
Write a hangman program in c++.The game is played as follows: 1. The program selects a...
Write a hangman program in c++.The game is played as follows: 1. The program selects a random word for the user to guess (Read words for the user to guess into an array of strings from a file. The words are: revolutionary, meaning, recovery, compartment, trainer, pursuit, harm, platform, error, confusion) 2. User guesses one letter at a time until either they guess the word, or they run out of guesses. 3. Select a random word from the array of...
How would I create a Hangman game that chooses  a random word and the player needs to...
How would I create a Hangman game that chooses  a random word and the player needs to guess it, letter by letter using  JavaScript and jQuery to allow user interaction. The content and the style of the page must be updated based on user’s input.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT