Seance #6
This commit is contained in:
parent
d01c4eb135
commit
6245298626
|
@ -0,0 +1,37 @@
|
|||
#ifndef DEF_GRID
|
||||
|
||||
#define DEF_GRID
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/* (2) Externes */
|
||||
#include "term.h"
|
||||
#include "Pieces/PieceFactory.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Grid{
|
||||
public:
|
||||
Grid(const int w=8, const int h=8);
|
||||
|
||||
// GETTERS
|
||||
Piece pieceAt(const int x, const int y) const;
|
||||
|
||||
private:
|
||||
// vector<Cell> _cells;
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Grid.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
Cavalier::Cavalier(int x, int y) : Piece(CAVALIER, x, y) {
|
||||
|
||||
}
|
||||
|
||||
// ABSTRACT
|
||||
bool Cavalier::can(const int x, const int y) const{
|
||||
return true;
|
||||
}
|
||||
|
||||
char Cavalier::getchar(){
|
||||
return 'P';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef DEF_CAVALIER
|
||||
|
||||
#define DEF_CAVALIER
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
|
||||
/* (2) Externes */
|
||||
#include "Piece.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Cavalier : public Piece{
|
||||
public:
|
||||
Cavalier(int x, int y);
|
||||
|
||||
// ABSTRACT
|
||||
bool can(const int x, const int y) const;
|
||||
char getchar();
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Cavalier.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
Fou::Fou(int x, int y) : Piece(FOU, x, y) {
|
||||
|
||||
}
|
||||
|
||||
// ABSTRACT
|
||||
bool Fou::can(const int x, const int y) const{
|
||||
return true;
|
||||
}
|
||||
|
||||
char Fou::getchar(){
|
||||
return 'P';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef DEF_FOU
|
||||
|
||||
#define DEF_FOU
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
|
||||
/* (2) Externes */
|
||||
#include "Piece.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Fou : public Piece{
|
||||
public:
|
||||
Fou(int x, int y);
|
||||
|
||||
// ABSTRACT
|
||||
bool can(const int x, const int y) const;
|
||||
char getchar();
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Fou.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,23 @@
|
|||
Piece::Piece(PIECE_TYPE t, int x, int y) : _t(t), _x(x), _y(y){
|
||||
}
|
||||
|
||||
// GETTERS
|
||||
PIECE_TYPE Piece::gett() const{ return _t; }
|
||||
|
||||
int Piece::getx() const{ return _x; }
|
||||
int Piece::gety() const{ return _y; }
|
||||
|
||||
// SETTERS
|
||||
void Piece::move(const int x, const int y){
|
||||
_x = x;
|
||||
_y = y;
|
||||
}
|
||||
|
||||
// OPERATEURS (SURCHARGE)
|
||||
ostream& operator<<(ostream& o, const Piece& p){
|
||||
return o << p._t << " at (" << p._x << "," << p._y << ")";
|
||||
}
|
||||
|
||||
// ABTRACT
|
||||
bool Piece::can(const int x, const int y){ return false; }
|
||||
char Piece::getchar(){ return '?'; }
|
|
@ -0,0 +1,72 @@
|
|||
#ifndef DEF_PIECE
|
||||
|
||||
#define DEF_PIECE
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/* (2) Externes */
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Enumerations
|
||||
=========================================================*/
|
||||
enum PIECE_TYPE{
|
||||
ROI,
|
||||
REINE,
|
||||
CAVALIER,
|
||||
TOUR,
|
||||
FOU,
|
||||
PION
|
||||
};
|
||||
ostream& operator<<(ostream& o, const PIECE_TYPE& t){
|
||||
switch(t){
|
||||
case ROI: return o << "Roi"; break;
|
||||
case REINE: return o << "Reine"; break;
|
||||
case CAVALIER: return o << "Cavalier"; break;
|
||||
case FOU: return o << "Fou"; break;
|
||||
case TOUR: return o << "Tour"; break;
|
||||
case PION: return o << "Pion"; break;
|
||||
}
|
||||
|
||||
return o << "UNKNOWN";
|
||||
}
|
||||
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Piece{
|
||||
public:
|
||||
Piece(PIECE_TYPE t, int x, int y);
|
||||
|
||||
// GETTERS
|
||||
PIECE_TYPE gett() const;
|
||||
int getx() const;
|
||||
int gety() const;
|
||||
|
||||
// SETTERS
|
||||
void move(const int x, const int y);
|
||||
|
||||
// OPERATEURS (SURCHARGE)
|
||||
friend ostream& operator<<(ostream& o, const Piece& p);
|
||||
|
||||
// ABSTRACT
|
||||
virtual bool can(const int x, const int y);
|
||||
virtual char getchar();
|
||||
|
||||
protected:
|
||||
PIECE_TYPE _t;
|
||||
int _x;
|
||||
int _y;
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Piece.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,14 @@
|
|||
Piece& PieceFactory::create(PIECE_TYPE t, int x, int y){
|
||||
Piece *p;
|
||||
|
||||
switch(t){
|
||||
case ROI: p = new Roi(x, y); break;
|
||||
case REINE: p = new Reine(x, y); break;
|
||||
case CAVALIER: p = new Cavalier(x, y); break;
|
||||
case FOU: p = new Fou(x, y); break;
|
||||
case TOUR: p = new Tour(x, y); break;
|
||||
case PION: p = new Pion(x, y); break;
|
||||
}
|
||||
|
||||
return *p;
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef DEF_PIECEFACTORY
|
||||
|
||||
#define DEF_PIECEFACTORY
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Externes */
|
||||
#include "Roi.h"
|
||||
#include "Reine.h"
|
||||
#include "Cavalier.h"
|
||||
#include "Tour.h"
|
||||
#include "Fou.h"
|
||||
#include "Pion.h"
|
||||
|
||||
/* (2) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class PieceFactory{
|
||||
public:
|
||||
static Piece& create(PIECE_TYPE t, int x, int y);
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "PieceFactory.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
Pion::Pion(int x, int y) : Piece(PION, x, y) {
|
||||
|
||||
}
|
||||
|
||||
// ABSTRACT
|
||||
bool Pion::can(const int x, const int y) const{
|
||||
return true;
|
||||
}
|
||||
|
||||
char Pion::getchar(){
|
||||
return 'P';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef DEF_PION
|
||||
|
||||
#define DEF_PION
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
|
||||
/* (2) Externes */
|
||||
#include "Piece.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Pion : public Piece{
|
||||
public:
|
||||
Pion(int x, int y);
|
||||
|
||||
// ABSTRACT
|
||||
bool can(const int x, const int y) const;
|
||||
char getchar();
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Pion.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
Reine::Reine(int x, int y) : Piece(REINE, x, y) {
|
||||
|
||||
}
|
||||
|
||||
// ABSTRACT
|
||||
bool Reine::can(const int x, const int y) const{
|
||||
return true;
|
||||
}
|
||||
|
||||
char Reine::getchar(){
|
||||
return 'P';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef DEF_REINE
|
||||
|
||||
#define DEF_REINE
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
|
||||
/* (2) Externes */
|
||||
#include "Piece.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Reine : public Piece{
|
||||
public:
|
||||
Reine(int x, int y);
|
||||
|
||||
// ABSTRACT
|
||||
bool can(const int x, const int y) const;
|
||||
char getchar();
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Reine.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
Roi::Roi(int x, int y) : Piece(ROI, x, y) {
|
||||
|
||||
}
|
||||
|
||||
// ABSTRACT
|
||||
bool Roi::can(const int x, const int y) const{
|
||||
return true;
|
||||
}
|
||||
|
||||
char Roi::getchar(){
|
||||
return 'R';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef DEF_Roi
|
||||
|
||||
#define DEF_Roi
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
|
||||
/* (2) Externes */
|
||||
#include "Piece.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Roi : public Piece{
|
||||
public:
|
||||
Roi(int x, int y);
|
||||
|
||||
// ABSTRACT
|
||||
bool can(const int x, const int y) const;
|
||||
char getchar();
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Roi.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
Tour::Tour(int x, int y) : Piece(TOUR, x, y) {
|
||||
|
||||
}
|
||||
|
||||
// ABSTRACT
|
||||
bool Tour::can(const int x, const int y) const{
|
||||
return true;
|
||||
}
|
||||
|
||||
char Tour::getchar(){
|
||||
return 'P';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef DEF_TOUR
|
||||
|
||||
#define DEF_TOUR
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) Internes */
|
||||
|
||||
/* (2) Externes */
|
||||
#include "Piece.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
/* [2] Definition
|
||||
=========================================================*/
|
||||
class Tour : public Piece{
|
||||
public:
|
||||
Tour(int x, int y);
|
||||
|
||||
// ABSTRACT
|
||||
bool can(const int x, const int y) const;
|
||||
char getchar();
|
||||
|
||||
};
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "Tour.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
/* [1] Operations terminal
|
||||
=========================================================*/
|
||||
void clear(){ // efface l'ecran
|
||||
cout << "\033[H\033[2J";
|
||||
}
|
||||
|
||||
void setfont(const TERM_COLOR c, const TERM_STYLE s){
|
||||
cout << "\033[" << s << ";" << c << "m";
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef DEF_TERM
|
||||
|
||||
#define DEF_TERM
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) internes */
|
||||
#include <iostream>
|
||||
|
||||
/* (2) Namespace */
|
||||
using namespace std;
|
||||
|
||||
|
||||
/* [2] Enumerations et structures
|
||||
=========================================================*/
|
||||
enum TERM_COLOR{
|
||||
DEFAULT = 0,
|
||||
|
||||
DARKBLUE = 30,
|
||||
RED = 31,
|
||||
GREEN = 32,
|
||||
YELLOW = 33,
|
||||
BLUE = 34,
|
||||
PURPLE = 35,
|
||||
SKYBLUE = 36
|
||||
};
|
||||
|
||||
enum TERM_STYLE{
|
||||
NORMAL = 0,
|
||||
BOLD = 1,
|
||||
ITALIC = 3,
|
||||
UNDERLINE = 4,
|
||||
DASHED = 9,
|
||||
|
||||
BACKGROUND = 7
|
||||
};
|
||||
|
||||
/* [3] Methodes
|
||||
=========================================================*/
|
||||
void clear();
|
||||
void setfont(const TERM_COLOR c=DEFAULT, const TERM_STYLE s=NORMAL);
|
||||
|
||||
/* [n] Inclusion du corps
|
||||
=========================================================*/
|
||||
#include "term.cpp"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,22 @@
|
|||
#include "main.h"
|
||||
|
||||
/* [0] Point d'amorcage
|
||||
=========================================================*/
|
||||
int main(){
|
||||
Piece *a = new Roi(1, 12);
|
||||
Piece *b = new Pion(1, 12);
|
||||
|
||||
|
||||
setfont(RED);
|
||||
cout << *a << endl;
|
||||
|
||||
setfont(SKYBLUE);
|
||||
cout << *b << endl;
|
||||
cout << *b << endl;
|
||||
|
||||
|
||||
setfont();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#ifndef DEF_HEADER
|
||||
|
||||
#define DEF_HEADER
|
||||
|
||||
/* [1] Libs
|
||||
=========================================================*/
|
||||
/* (1) internes */
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/* (2) Externes */
|
||||
#include "dep/term.h"
|
||||
#include "dep/Grid.h"
|
||||
|
||||
/* (3) Namespace */
|
||||
using namespace std;
|
||||
|
||||
|
||||
/* [2] Enumerations et structures
|
||||
=========================================================*/
|
||||
|
||||
|
||||
/* [3] Methodes
|
||||
=========================================================*/
|
||||
int main();
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue