-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtour.cpp
130 lines (122 loc) · 3.04 KB
/
tour.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*****************************************************************************************
En-tete du programme
=====================
Programme : tour.cpp
Auteur : Alexandre Beaulieu et Vincent Philippon
Date de creation : 04 mai 2010
But du programme : M�thode de l'objet tour
******************************************************************************************/
//Directives au pr�-processeur
#include "tour.h"
//Detructeur
tour::~tour()
{
init();
}
//Le joueur s�lectionne la destination de sa pi�ce
bool tour::destination(plateau sTabPlateau[8][8], int iXPiece, int iYPiece,
int iXDeplacement, int iYDeplacement, int iTour)
{
//D�claration des variables
bool bAction = 0; //Si on performe l'action ou non
//Si ce n'est pas la m�me �quipe
if (sTabPlateau[iYDeplacement][iXDeplacement].pieceEchec->getEquipe() != iTour)
{
//Si c'est en vertical
if (iYDeplacement == iYPiece)
{
//Si c'est coll� sur la pi�ce
if (abs(iXDeplacement - iXPiece) == 1)
{
bAction = 1;
}
//S'il faut aller vers l'arri�re
else if (iXDeplacement < iXPiece)
{
for (int i = iXPiece - 1; i > iXDeplacement; i--)
{
//Si l'espace n'est pas vide
if (sTabPlateau[iYPiece][i].pieceEchec->getEquipe() != 0)
{
bAction = 0;
break;
}
//Si l'espace est vide
else
{
bAction = 1;
}
}
}
//S'il faut aller vers l'avant
else
{
for (int i = iXPiece + 1; i < iXDeplacement; i++)
{
//Si l'espace n'est pas vide
if (sTabPlateau[iYPiece][i].pieceEchec->getEquipe() != 0)
{
bAction = 0;
break;
}
//Si l'espace est vide
else
{
bAction = 1;
}
}
}
}
//Si c'est � l'horizontal
else if (iXDeplacement == iXPiece)
{
//Si c'est coll� sur la pi�ce
if (abs(iYDeplacement - iYPiece) == 1)
{
bAction = 1;
}
//S'il faut aller vers l'arri�re
else if (iYDeplacement < iYPiece)
{
for (int i = iYPiece - 1; i > iYDeplacement; i--)
{
//Si l'espace n'est pas vide
if (sTabPlateau[i][iXPiece].pieceEchec->getEquipe() != 0)
{
bAction = 0;
break;
}
//Si l'espace est vide
else
{
bAction = 1;
}
}
}
//S'il faut aller vers l'avant
else
{
for (int i = iYPiece + 1; i < iYDeplacement; i++)
{
//Si l'espace n'est pas vide
if (sTabPlateau[i][iXPiece].pieceEchec->getEquipe() != 0)
{
bAction = 0;
break;
}
//Si l'espace est vide
else
{
bAction = 1;
}
}
}
}
}
return bAction;
}
//Retourne le type de la pi�ce
char tour::type() const
{
return 'T';
}