X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=manager%2Fstratego.h;fp=manager%2Fstratego.h;h=0000000000000000000000000000000000000000;hp=fe73aa13ff0b4311c3d10acea02c493f9b6dd610;hb=e3b15cd5dea739f7523920d83bda592db95a7b93;hpb=7f7bc05439b70b3139086086608996de3c9ae2ed diff --git a/manager/stratego.h b/manager/stratego.h deleted file mode 100644 index fe73aa1..0000000 --- a/manager/stratego.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef STRATEGO_H -#define STRATEGO_H - -#include -#include - -#include - - - #include "graphics.h" - #include "array.h" - -#include - -/** - * Contains classes for a game of Stratego - */ - - -/** - * Class for a game piece - */ -class Piece -{ - public: - typedef enum {ERROR=14,BOMB=13,MARSHAL=12, GENERAL=11, COLONEL=10, MAJOR=9, CAPTAIN=8, LIEUTENANT=7, SERGEANT=6, MINER=5, SCOUT=4, SPY=3, FLAG=2,BOULDER=1, NOTHING=0} Type; //Type basically defines how strong the piece is - - - - typedef enum {RED=0, BLUE=1, NONE=2, BOTH=3} Colour; //Used for the allegiance of the pieces - terrain counts as NONE. - - Piece(const Type & newType, const Colour & newColour) : type(newType), colour(newColour), beenRevealed(false) {} - virtual ~Piece() {} - - - //Operators compare the strength of two pieces - bool operator==(const Piece & equ) const {return type == equ.type;} - bool operator<(const Piece & equ) const {return type < equ.type;} - bool operator>(const Piece & equ) const {return type > equ.type;} - - bool operator!=(const Piece & equ) const {return !operator==(equ);} - bool operator<=(const Piece & equ) const {return (operator<(equ) || operator==(equ));} - bool operator>=(const Piece & equ) const {return (operator>(equ) || operator==(equ));} - - //Contains the characters used to identify piece types when the board is printed to a stream - static char tokens[]; - static int maxUnits[]; - - static Type GetType(char fromToken); - - int PieceValue() const {if (type == BOMB || type == FLAG) {return 0;} return (int)(type) - (int)(SPY) + 1;} - - //Attributes of the piece - const Type type; - const Colour colour; - - bool beenRevealed; - - public: - - class TextureManager : public Graphics::TextureManager, private Array - { - public: - TextureManager() : Graphics::TextureManager(), Array() {} - virtual ~TextureManager(); - - virtual Texture & operator[](const LUint & at); - }; - static TextureManager textures; - - static Graphics::Colour GetGraphicsColour(const Piece::Colour & colour) - { - switch (colour) - { - case RED: - return Graphics::Colour(1,0,0); - break; - case BLUE: - return Graphics::Colour(0,0,1); - break; - case NONE: - return Graphics::Colour(0.5,0.5,0.5); - break; - case BOTH: - return Graphics::Colour(1,0,1); - break; - } - } - - - - - -}; - -#include "movementresult.h" - -/** - * A Stratego board - */ -class Board -{ - public: - Board(int newWidth, int newHeight); //Constructor - - virtual ~Board(); //Destructor - - void Print(FILE * stream, const Piece::Colour & reveal=Piece::BOTH); //Print board - void PrintPretty(FILE * stream, const Piece::Colour & reveal=Piece::BOTH); //Print board using colour - - void Draw(const Piece::Colour & reveal=Piece::BOTH, bool showRevealed = true); //Draw board - - - bool AddPiece(int x, int y, const Piece::Type & newType, const Piece::Colour & newColour); //Add piece to board - - - Piece * GetPiece(int x, int y); //Retrieve piece from a location on the board - - - typedef enum {UP, DOWN, LEFT, RIGHT} Direction; - - - - static bool LegalResult(const MovementResult & result) - { - return (result == MovementResult::OK || result == MovementResult::DIES || result == MovementResult::KILLS || result == MovementResult::BOTH_DIE || result == MovementResult::VICTORY || result == MovementResult::DRAW || result == MovementResult::DRAW_DEFAULT || result == MovementResult::SURRENDER); - } - - static bool HaltResult(const MovementResult & result) - { - return (result == MovementResult::VICTORY || result == MovementResult::DRAW || result == MovementResult::DRAW_DEFAULT || result == MovementResult::SURRENDER || !LegalResult(result)); - } - - MovementResult MovePiece(int x, int y, const Direction & direction, int multiplier=1,const Piece::Colour & colour=Piece::NONE); //Move piece from position in direction - - - Piece::Colour winner; - - int Width() const {return width;} - int Height() const {return height;} - - int MobilePieces(const Piece::Colour & colour) const; - int TotalPieceValue(const Piece::Colour & colour) const; - bool RemovePiece(Piece * piece); - private: - int width; - int height; - Piece ** * board; - std::vector pieces; -}; - -#endif //STRATEGO_H - -//EOF - -