affichage damier

This commit is contained in:
Mylloon 2023-12-01 16:36:50 +01:00
parent fbfdec71e1
commit e8e52411ff
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
5 changed files with 51 additions and 20 deletions

View file

@ -3,11 +3,10 @@
#include <SFML/Graphics.hpp> #include <SFML/Graphics.hpp>
#include <functional> #include <functional>
class Ecran { struct Ecran {
// Fenêtre // Fenêtre
sf::RenderWindow window; static sf::RenderWindow window;
public:
Ecran(const uint width = 800, const uint height = 800, Ecran(const uint width = 800, const uint height = 800,
const std::string name = "Projet"); // constructor const std::string name = "Projet"); // constructor
~Ecran(); // destructor ~Ecran(); // destructor

View file

@ -15,16 +15,13 @@ public:
Plateau(int taille); // constructor Plateau(int taille); // constructor
virtual ~Plateau(); // destructor virtual ~Plateau(); // destructor
Plateau(const Plateau &); // copy constructor
const Plateau &operator=(const Plateau &); // copy assignement
// Fonction pour initialiser le plateau (selon le jeu) // Fonction pour initialiser le plateau (selon le jeu)
// Seulement deux joueurs pour le jeu de dame uniquement, je suis pas sûre de // Seulement deux joueurs pour le jeu de dame uniquement, je suis pas sûre de
// comment initialiser la fonction autrement // comment initialiser la fonction autrement
virtual void initialiserPlateau(Joueur &j1, Joueur &j2); virtual void initialiserPlateau(Joueur &j1, Joueur &j2);
// Fonction pour afficher le plateau (selon le jeu) // Fonction pour afficher le plateau (selon le jeu)
void afficherPlateau(); void afficherPlateau(const bool debug = false);
// Fonction pour modifier le plateau // Fonction pour modifier le plateau
void modifierPlateau(int x, int y, Piece *piece); void modifierPlateau(int x, int y, Piece *piece);

View file

@ -1,5 +1,7 @@
#include "../includes/Ecran.hpp" #include "../includes/Ecran.hpp"
sf::RenderWindow Ecran::window;
Ecran::Ecran(const uint w, const uint h, const std::string n) { Ecran::Ecran(const uint w, const uint h, const std::string n) {
// Création de la fenêtre SFML // Création de la fenêtre SFML
window.create(sf::VideoMode(w, h), n); window.create(sf::VideoMode(w, h), n);

View file

@ -1,7 +1,8 @@
#include "../includes/Plateau.hpp" #include "../includes/Plateau.hpp"
#include "../includes/Ecran.hpp"
#include "../includes/PieceDames.hpp" #include "../includes/PieceDames.hpp"
Plateau::Plateau(int t) { Plateau::Plateau(int t) : taille(t) {
// Création du plateau vide // Création du plateau vide
plateau = new Piece **[t]; plateau = new Piece **[t];
for (int i = 0; i < t; i++) { for (int i = 0; i < t; i++) {
@ -19,16 +20,6 @@ Plateau::~Plateau() {
delete[] plateau; delete[] plateau;
} }
Plateau::Plateau(const Plateau &) {}
const Plateau &Plateau::operator=(const Plateau &src) {
if (this == &src) {
return *this;
}
return *this;
}
void Plateau::initialiserPlateau(Joueur &j1, Joueur &j2) { void Plateau::initialiserPlateau(Joueur &j1, Joueur &j2) {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
for (int j = 0; j < 10; j++) { for (int j = 0; j < 10; j++) {
@ -49,7 +40,47 @@ void Plateau::initialiserPlateau(Joueur &j1, Joueur &j2) {
} }
} }
void Plateau::afficherPlateau() {} void Plateau::afficherPlateau(const bool d) {
float taille_cellule = static_cast<float>(Ecran::window.getSize().x) / taille;
// Cellule
sf::RectangleShape cell(sf::Vector2f(taille_cellule, taille_cellule));
for (int i = 0; i < taille; i++) {
for (int j = 0; j < taille; j++) {
float x = i * taille_cellule;
float y = j * taille_cellule;
// Position de la cellule
cell.setPosition(x, y);
if (d) {
std::cout << "(" << x << ", " << y;
}
// Alternation des couleurs
if ((i + j) % 2 == 0) {
cell.setFillColor(sf::Color::White);
if (d) {
std::cout << ", B), ";
}
} else {
cell.setFillColor(sf::Color::Black);
if (d) {
std::cout << ", N), ";
}
}
// Dessine la cellule
Ecran::window.draw(cell);
}
if (d) {
std::cout << "\n";
}
}
if (d) {
std::cout << "---\n";
}
}
void Plateau::modifierPlateau(int x, int y, Piece *piece) { void Plateau::modifierPlateau(int x, int y, Piece *piece) {
if (x >= 0 && x < taille && y >= 0 && y < taille) { if (x >= 0 && x < taille && y >= 0 && y < taille) {

View file

@ -1,8 +1,10 @@
#include "../includes/Ecran.hpp" #include "../includes/Ecran.hpp"
#include "../includes/Plateau.hpp"
int main() { int main() {
Plateau p(10);
Ecran e; Ecran e;
e.afficher(); e.afficher(std::bind(&Plateau::afficherPlateau, &p, true));
return 0; return 0;
} }