-
Notifications
You must be signed in to change notification settings - Fork 0
/
Plateau.java
182 lines (164 loc) · 4.93 KB
/
Plateau.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
/**
* Gestion du plateau
* @author aprats
* @author jroyere
*
*
*/
public class Plateau {
int[][] plateau; //a modifier, l'atribut static ne convient pas
/**
* Constructeur de la classe
* Ne demande par d'arguments, la taille de la grille est fixée à 10
*
*/
public Plateau(){
int taille = 10;
plateau = new int[taille][taille];
for (int i=0;i<taille;i++) {
for(int j=0; j<taille;j++) {
plateau[i][j] = 0;
}
}
}
/**
* Choix de l'orientation du bateau et de son positionement
* Vérifie si le bateau peut être placé
* Si oui, génère le bateau
* @param plateau plateau sur lequel générer les navires
* @param type Type de bateau à créer
* @param horizontal si l'orientation du bateau est horizontale
* @param coord_x position x du début du bateau
* @param coord_y position y du début du bateau
* @return si le bateau a bien ete place
*/
public boolean posBateau(int[][] plateau, int type, boolean horizontal, int coord_x, int coord_y){
boolean allOk=true;
int taille=0;
int xmax = plateau.length;
int ymax = plateau[0].length;
if(type==1){
taille=5;
}else if (type==2){
taille=4;
}else if (type==3){
taille=3;
}else if (type==4){
taille=3;
}else if (type==5){
taille=2;
}else{
return false;
}
//System.out.println("ON EST LA");
if (!horizontal){
if(coord_y+taille>ymax){
return false;
}
for(int i=0; i<taille; i++){
if(plateau[coord_y+i][coord_x]!=0){
allOk = false;
}
}
}
//System.out.println("ON EST LA");
if(horizontal){
if(coord_x+taille>xmax){
return false;
}
for(int i=0; i<taille; i++){
if(plateau[coord_y][coord_x+i]!=0){
allOk = false;
}
}
}
// System.out.println("ON EST LA");
if(allOk){
genererBateaux(plateau,coord_x,coord_y,taille, horizontal);
return true;
}else{
return false;
}
}
/**
*Placement du bateau sur le plateau
*/
private void genererBateaux(int[][] plateau, int coord_y, int coord_x, int taille, boolean horizontal){
if (horizontal){
for (int j=coord_y; j<coord_y+taille; j++)
plateau[coord_x][j]=1;
}else{
for(int i=coord_x; i<taille+coord_x; i++)
plateau[i][coord_y]=1;
}
}
/**Affiche le plateau de jeu
*
* @param plateau Le plateau de jeu
*/
public void afficherPlateau (int[][] plateau) {
int i,j;
System.out.print("+|"); //AFFICHE L'EN TETE
for(j=0; j<plateau[0].length;j++){
System.out.print(j);
}
System.out.println("+");
//FIN EN TETE
System.out.print(" |"); //SEPARATION
for(j=0; j<plateau[0].length;j++){
System.out.print("-");
}
System.out.println("|");
// FIN SEPARATION
for(i=0; i<plateau.length; i++) {
System.out.print(i+"|");
for(j=0; j<plateau[0].length;j++){
if(plateau[i][j]==0){
System.out.print("O");
}else if(plateau[i][j]==1){
System.out.print("1");
}else if(plateau[i][j]==2){
System.out.print("2");
}else if(plateau[i][j]==3){
System.out.print("3");
}else {
System.out.print("!");
}
}
System.out.println("|");
}
System.out.print(" +");
for(j=0; j<plateau[0].length;j++)
System.out.print("-");
System.out.println("+");
}
/**Fonction appelée lors de la reception d'un tir, permet d'actualiser la case touchée
*
* @param plateau Le plateau de jeu
* @param coord_x La coordonée X du tir
* @param coord_y La coordonnée Y du tir
* @return L'état de la case
*/
public int recuTir (int[][] plateau, int coord_x, int coord_y){
int state = plateau[coord_x][coord_y];
switch (state){
case 0:
state = 2;
break;
case 1:
state = 3;
break;
case 2:
state=2;
break;
case 3:
state = 3;
break;
case 4:
state = 4;
break;
}
plateau[coord_x][coord_y]=state;
return state;
}
}