PDA

Visualizza la versione completa : Comando in c++.


dany94
06-04-2014, 13:09
Io in pratica dovrei scrivere un comando in c++ chiamato quit. se si scrive nel compiler quit dovrebbe uscire scritto uscire scritto Thanks for playing, bye!\n. Questo servirebbe per uscire dal gioco Tower Defense. In pratica dovrebbe terminare il programma.

MItaly
06-04-2014, 13:34
Nel "compiler"? :stordita: suppongo tu intenda nella console...
Comunque, come fare esattamente dipende da come Ŕ strutturato il programma, hai giÓ un punto in cui si attendono comandi da tastiera? Cosa hai provato a fare?

dany94
06-04-2014, 13:39
per adesso ho patto solo questo


#ifndef QUIT_H_INCLUDED
#define QUIT_H_INCLUDED
#include "Command.h"
#include <sstream>
#include <string>
#include <iostring>




class QUIT: public command
{
public
Quit();
Quit(std::string name);
virtual int execute (Game & board, std::vector<std::string>&params);
virtual ~ Quit();
};
#endif

in pratica il comando quit deve terminare il programma e dare come output "Thanks for playing, bye!\n"

dany94
06-04-2014, 13:43
ci sono stati dati questi file


#ifndef COMMAND_H_INCLUDED
#define COMMAND_H_INCLUDED

#include <string>
#include <vector>

class Game;

class Command
{
private:
//--------------------------------------------------------------------------
// Private copy constructor

Command(const Command& original);

//--------------------------------------------------------------------------
// Private assignment operator

Command& operator=(const Command& original);

//--------------------------------------------------------------------------
/// Name of this command
std::string command_name_;

public:
//--------------------------------------------------------------------------
// Consturctor

Command(std::string name);

//--------------------------------------------------------------------------
// Destructor

virtual ~Command();

//--------------------------------------------------------------------------
// Executes the command.
// @param board The board where action should be performed on
// @param params Possible parameters neede for the execution
// @return Integer representing the success of the action

virtual int execute(Game& board, std::vector<std::string>& params) = 0;

//--------------------------------------------------------------------------
// Getter Methods
const std::string& getName() const;
};

#endif //COMMAND_H_INCLUDED

poi questo



#include "Command.h"


//------------------------------------------------------------------------------
Command::Command(std::string name) : command_name_(name)
{
}

//------------------------------------------------------------------------------
Command::~Command()
{
}

//------------------------------------------------------------------------------
const std::string &Command::getName() const
{
return command_name_;
}

e questo


#include "Game.h"
#include "Monster.h"
#include "Tower.h"
#include "SpeedRatio.h"

//------------------------------------------------------------------------------
int main()
{
Game game( 1000, 20, 5, 3 );

game.addTower( new Tower("Arrow", 1, 3, SpeedRatio(1, 1), &game ) );
game.addTower( new Tower("Cannon", 3, 3, SpeedRatio(1, 3), &game ) );

game.addMonster( new Monster("Slime", 1, 1, 0, SpeedRatio(1, 2), &game ) );
game.addMonster( new Monster("Rat", 1, 2, 0, SpeedRatio(1, 1), &game ) );

game.run();

return 0;
}

MItaly
06-04-2014, 23:18
Be', mi pare abbastanza chiaro... i "comandi" di gioco sono classi che derivano dalla classe command, che richiamano il costruttore della classe base passandoci il nome del comando; l'unico metodo virtuale da reimplementare nel tuo caso execute, che viene richiamato quando l'utente esegue il tuo comando, riceve i vari parametri e restituisce il codice di uscita.

Nel tuo caso, all'interno della execute ti basterÓ stampare la stringa che hai riportato sopra e richiamare la funzione C exit() per uscire dal programma (oppure qualcosa di meno brutale, dipende da come Ŕ fatto il resto del programma).

Suppongo poi che il tuo comando andrÓ registrato in qualche maniera (dovrai istanziare la tua classe e registrarla in qualche maniera all'oggetto game - magari c'Ŕ un metodo addCommand).

P.S.: il codice va inserito tra tag
... , altrimenti perde l'indentazione; ora li ho aggiunti io, in futuro ricordatene. :ciauz:

Loading