/*
Copyright (C) 2008 Alessandro Bugatti (alessandro.bugatti@istruzione.it)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/*! \file
* \brief Classe per gestire il gioco dell'impiccato
* \author Alessandro Bugatti
*
* \version 0.2
* \date Creazione 22/10/2006
* \date Ultima modifica 15/11/2008
*
*/
/*
Name: giocoimpiccato.cpp
Copyright: GPL
Author: Alessandro Bugatti
Date: 22/10/06 14.30
Last change: 13/11/07 00.08
Description: classe per gestire il gioco dell'impiccato
*/
#ifndef GIOCOIMPICCATO_H
#define GIOCOIMPICCATO_H
#include <string>
#include <iostream>
using namespace std;
/*!
* \brief Classe per gestire il gioco dell'impiccato
* \author Alessandro Bugatti
*
* \version 0.2
* \date Creazione 22/10/2006
* \date Ultima modifica 15/11/2008
*
*/
class giocoImpiccato
{
public:
/**
* \brief Construttore
*/
giocoImpiccato();
/**
* \brief Questo metodo inserisce in parola la lettera scelta dall'utente
* se presente in parolaSegreta
* \param lettera La lettera scelta
* \return Ritorna -1 se la lettera è già stata scelta \n
* 0 se la lettera non è presente nella parola segreta \n
* 1 se la lettera è contenuta nella parola segreta
*/
int inserisciCarattere(char lettera);
/**
* \brief Stampa lo stato del gioco disegnando l'impiccato in testo
*/
void stampaStato() const;
/**
* \brief Inserisce il valore della parola da indovinare
* che ovviamente sarò pescata casualmente da una sorgente di parole
*/
void setParolaSegreta(const string& parola);
/**
* \brief Controlla lo stato del gioco
* \return Ritorna 0 se hai perso \n
* ritorna 1 se hai vinto \n
* ritorna 2 se il gioco puo continuare
*/
int controlloVittoria() const;
/**
* \brief Restituisce la parola segreta per permettere
* di sapere qual era una volta perso il gioco
* \return La parola segreta
*/
string getParolaSegreta() const;
/**
* \brief Stampa una stringa con le lettere usate separate da una virgola
*/
void stampaLettereUsate() const;
private:
int contaErrori;///< conta gli errori commessi per indovinare la parola (a 8 perdi)
string parolaSegreta; ///< contiene la parola da indovinare
string parola; ///< la parola dove si inseriranno le lettere scelte dall'utente e gli underscore dove non ci sono i caratteri
char lettereUsate[26]; ///< Contiene le lettere già usate nel gioco
int contaLettereUsate; ///< Conta le lettere usate già nel gioco
};
#endif // GIOCOIMPICCATO_H