model divided into game => model and plateau
[quoridor:quoridor.git] / Plateau.cpp
1 /*
2  * Plateau.cpp
3  *
4  *  Created on: 1 oct. 2010
5  *      Author: mike
6  */
7
8 #include "Plateau.h"
9 #include <iostream>
10
11 using namespace std;
12
13 Plateau::Plateau(int nbLignes) {
14         this->matriceBarriere = new int*[nbLignes+1];
15         for (int i=0; i<nbLignes+1 ; i++) {
16                 this->matriceBarriere[i] = new int[nbLignes+1];
17         }
18
19         for (int i=0; i<nbLignes+1 ; i++) {
20                 for (int j=0; j<nbLignes+1; j++) {
21                         this->matriceBarriere[i][j] = PAS_BARRE;
22                 }
23         }
24         this->nbLignes = nbLignes;
25 }
26
27 bool Plateau::deplacementHorizontalPossible(Coordonee posDepart,Coordonee posArrive) {
28         Coordonee test;
29
30         //On trouve la position x entre les deux cases. (On ne sait pas si il va vers la gauche ou la droite).
31         posDepart.x < posArrive.x ? test.x = posDepart.x : test.x = posArrive.x;
32         test.y = posDepart.y;
33
34         //On teste la prĂ©sence d'une barriere en haut et en bas.
35         if(this->matriceBarriere[test.x][test.y] == BARRE_VERTICALE) return false;
36         else if(this->matriceBarriere[test.x][test.y-1] == BARRE_VERTICALE) return false;
37         else return true;
38 }
39
40 bool Plateau::deplacementVerticalPossible(Coordonee posDepart,Coordonee posArrive) {
41         Coordonee test;
42
43         //On trouve la position y entre les deux cases. (On ne sait pas si il va vers le haut ou le bas).
44         posDepart.y < posArrive.y ? test.y = posDepart.y : test.y = posArrive.y;
45         test.x = posDepart.x;
46
47         cout << this->matriceBarriere[test.x][test.y] << endl;
48         cout << this->matriceBarriere[test.x-1][test.y] << endl;
49
50         if(this->matriceBarriere[test.x][test.y] == BARRE_HORIZONTALE ) return false;
51         else if(this->matriceBarriere[test.x-1][test.y] == BARRE_HORIZONTALE ) return false;
52         else return true;
53 }
54
55 bool Plateau::BarrierePossible(Coordonee posUn, Coordonee posDeux){
56
57 }
58
59 Plateau::Coordonee Plateau::deplacement(Coordonee posDepart,Coordonee posArrive){
60         posArrive;
61 }
62
63 void Plateau::placerBarriere(Coordonee posUn, Coordonee posDeux, int typeBarre){
64         Coordonee test;
65         posUn.y <= posDeux.y ? test.y = posUn.y : test.y = posDeux.y;
66         posUn.x <= posDeux.x ? test.x = posUn.x : test.x = posDeux.x;
67         this->matriceBarriere[test.x][test.y] = typeBarre;
68 }
69
70 Plateau::~Plateau() {
71         for (int i=0; i<this->nbLignes+1 ; i++) {
72                 delete[] this->matriceBarriere[i];
73         }
74         delete[] this->matriceBarriere;
75 }
76
77 bool operator==(const Plateau::Coordonee &coord, const Plateau::Coordonee &coord2){
78         if (coord2.x == coord.x && coord2.y == coord.y) return true;
79                         return false;
80 }
81