-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPion.java
210 lines (145 loc) · 5.89 KB
/
Pion.java
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
import java.util.Scanner;
public class Pion extends Piece {
private boolean abouger;
public Pion(int couleur, int i,int j){
super("Pion",couleur,i,j,6);
this.abouger = false;
}
public void setabouger() {
this.abouger = true;
}
public boolean mouvement_possible(int horizontal, int vertical){
if (this.abouger == false) {
if (this.getCouleur() == 0) {
this.setabouger();
return ((horizontal == 2 && Math.abs(vertical) == 0) || ( horizontal == 1 && Math.abs(vertical) == 0));
}
else {
this.setabouger();
return ((horizontal == -2 && Math.abs(vertical) == 0) || ( horizontal == -1 && Math.abs(vertical) == 0));
}
}
else {
if (this.getCouleur() == 0) {
return ( Math.abs(horizontal) == 1 && Math.abs(vertical) == 0);
}
else {
return (horizontal == -1 && Math.abs(vertical) == 0);
}
}
}
public boolean manger_possible(Case case_dest ,int horizontal, int vertical){
if (!case_dest.estOccupe() ) {
return false;
}
if (this.getCouleur() == 0 && case_dest.getPiece().getCouleur() ==1 ) {
if (case_dest.estOccupe()) {
if ( (horizontal == 1 && vertical == 1) ) {
return true;
}
}
return false;
}
if (this.getCouleur() == 1 && case_dest.getPiece().getCouleur() == 0 ) {
if (case_dest.estOccupe() ) {
if ( (horizontal == -1 && vertical == 1)) {
return true;
}
}
return false;
}
return false;
}
//methode qui va permettre au pion devoluer
public void evolution(Case case_actuelle) {
int current_position = case_actuelle.getPositon();
if (this.getCouleur()==0) {
if (current_position> 55 && current_position < 64) {
Scanner sc = new Scanner(System.in);
System.out.println("Promotion possible : au choix une dame(1), une tour(2), un fou(3) ou un cavalier(4). ");
int sc_chiffre = sc.nextInt();
while(sc_chiffre != 1 && sc_chiffre != 2 && sc_chiffre != 3 && sc_chiffre != 4){
System.out.println("Promotion possible : au choix une dame(1), une tour(2), un fou(3) ou un cavalier(4). ");
sc_chiffre= sc.nextInt();
//on recommence tant que le joueur est relou et quil choisit pas la bonne couleur
}
if (sc_chiffre == 1) {
Reine dadju = new Reine(0,this.geti(),this.getj());
case_actuelle.setPiece(dadju);
}
if (sc_chiffre == 2) {
Tour tour = new Tour(0,this.geti(),this.getj());
case_actuelle.setPiece(tour);
}
if (sc_chiffre == 3) {
Fou fou = new Fou(0,this.geti(),this.getj());
case_actuelle.setPiece(fou);
}
if (sc_chiffre == 4) {
Cavalier cheval = new Cavalier(0,this.geti(),this.getj());
case_actuelle.setPiece(cheval);
}
}
}
else {
if (current_position> 0 && current_position < 8) {
Scanner sc = new Scanner(System.in);
System.out.println("Promotion possible : au choix une dame(1), une tour(2), un fou(3) ou un cavalier(4). ");
int sc_chiffre = sc.nextInt();
while(sc_chiffre != 1 && sc_chiffre != 2 && sc_chiffre != 3 && sc_chiffre != 4){
System.out.println("Promotion possible : au choix une dame(1), une tour(2), un fou(3) ou un cavalier(4). ");
sc_chiffre= sc.nextInt();
//on recommence tant que le joueur est relou et quil choisit pas la bonne couleur
}
if (sc_chiffre == 1) {
Reine dadju = new Reine(1,this.geti(),this.getj());
case_actuelle.setPiece(dadju);
}
if (sc_chiffre == 2) {
Tour tour = new Tour(1,this.geti(),this.getj());
case_actuelle.setPiece(tour);
}
if (sc_chiffre == 3) {
Fou fou = new Fou(1,this.geti(),this.getj());
case_actuelle.setPiece(fou);
}
if (sc_chiffre == 4) {
Cavalier cheval = new Cavalier(1,this.geti(),this.getj());
case_actuelle.setPiece(cheval);
}
}
}
}
public String deplacer(Case case_dest,Plateau p){
String historique = ""; /* historique de coup quon va renvoyer*/
/* mtn on va recuperer ce qui separe notre case de la case darrivee*/
int horizontal = case_dest.geti() - this.geti();
int vertical = Math.abs(case_dest.getj() - this.getj());
if(manger_possible(case_dest,horizontal,vertical)){
Piece piece_manger = case_dest.getPiece(); // on sauve la piece manger
int current_position = this.getPosition(); // on sauve la position courrante
p.getCase(current_position).setPiece(null); //on vide la case de depart
case_dest.setPiece(this); // on remplace la piece manger par la notre
historique = "Le pion a mange le " + piece_manger.getNom(); // on renvoit la piece manger
//historique = "nous avons manger un pion trop bien.";
super.setI(case_dest.geti());
super.setJ(case_dest.getj());
}
/* on test si le mouvement est possible, si oui alors on se deplace*/
else if(mouvement_possible(horizontal,vertical) && (! case_dest.estOccupe()) ){
//System.out.println("tu rentre dans mouv possible");
int current_position = this.getPosition(); /* on sauve la position courrante*/
p.getCase(current_position).setPiece(null);/* on vide la case de depart*/
case_dest.setPiece(this); /* on place notre pion dans la case darrivee*/
historique = "" + case_dest.getPositon(); //on renvois la position darriver
this.evolution(case_dest);
//System.out.println("Promotion possible ");
super.setI(case_dest.geti());
super.setJ(case_dest.getj());
}
else{
//System.out.println(" le deplacement na pas ete fait");
}
return historique; //on retourne lhistorique
}
}