// Proglet abcdAlgo, Jeu de Bataille Navale, Alice Maureélève de 2nd au CIV, a.b.s. Evelyne Bourgeois, professeure
void main() {
println("...Bataille Navale...");
println("Le but du jeu est de couler les quatres bateaux de votre adversaire.");
println("Les bateaux occupent une à trois cases et sont positionés verticalement ou horizontalement, sur une grille de 64 cases.");
int n = 0;
int v = 0;
int x = 0;
int y = 0;
// Initialisation de la grille
int grille[][] = new int[9][9];
for (int a = 1; a <= 8; a = a + 1) {
for (int b = 1; b <= 8; b = b + 1) {
grille[a][b] = 0;
}
}
// Tirage aléatoire des bateaux
int t1 = random(1, 4);
int s1 = random(1, 3);
int x1;
int y1;
int t2 = random(1, 4);
int s2 = random(1, 3);
int x2;
int y2;
int t3 = random(1, 4);
int s3 = random(1, 3);
int x3;
int y3;
int t4 = random(1, 4);
int s4 = random(1, 3);
int x4;
int y4;
if (s1 == 1) {
x1 = random(1, (6 - t1));
y1 = random(1, 5);
for (int T = 0; T <= (t1 - 1); T = (T + 1)) {
grille [x1 + T][y1] = 2;
}
} else {
x1 = random(1, 5);
y1 = random(1, (6 - t1));
for (int T = 0; T <= (t1 - 1); T = T + 1) {
grille [x1][y1 + T] = 2;
}
}
if (s2 == 1) {
y2 = random(1, 5);
x2 = random(5, (10 - t2));
for (int T = 0; T <= (t2 - 1); T = T + 1) {
grille [x2 + T][y2] = 2;
}
} else {
x2 = random(5, 9);
y2 = random(1, (6 - t2));
for (int T = 0; T <= (t1 - 1); T = T + 1) {
grille [x2][y2 + T] = 2;
}
}
if (s3 == 1) {
y3 = random(5, 9);
x3 = random(1, (6 - t3));
for (int T = 0; T <= (t3 - 1); T = T + 1) {
grille [x3 + T][y3] = 2;
}
} else {
x3 = random(1, 5);
y3 = random(5, (10 - t3));
for (int T = 0; T <= (t1 - 1); T = T + 1) {
grille [x3][y3 + T] = 2;
}
}
if (s4 == 1) {
y4 = random(5, 9);
x4 = random(5, (10 - t4));
for (int T = 0; T <= (t4 - 1); T = T + 1) {
grille [x4 + T][y4] = 2;
}
} else {
x4 = random(5, 9);
y4 = random(5, (10 - t4));
for (int T = 0; T <= (t4 - 1); T = T + 1) {
grille [x4][y4 + T] = 2;
}
}
println("Votre adversaire a placé ses bateaux.");
// Boucle de jeu
while (v < (t1 + t2 + t3 + t4)) {
println("Voici la taille de chaque bateau :");
println(t1);
println(t2);
println(t3);
println(t4);
while (x < 1 || x > 8) {
println("Donnez un nombre entier entre 1 et 8 pour l'absisse d'une case que vous pensez être occupée par un bateau ennemi.");
x = readInteger("Donnez un nombre entier entre 1 et 8 pour l'absisse d'une case que vous pensez être occupée par un bateau ennemi.");
println(x);
}
while (y < 1 || y > 8) {
println("Donnez un nombre entier entre 1 et 8 pour l'ordonnée d'une case que vous pensez être occupée par un bateau ennemi.");
y = readInteger("Donnez un nombre entier entre 1 et 8 pour l'ordonnée d'une case que vous pensez être occupée par un bateau ennemi");
println(y);
}
clear();
n = n + 1;
if (grille[x][y] == 3) {
grille[x][y] = 3;
println("déjà touché");
}
if (grille[x][y] == 2) {
println("touché !");
v = v + 1;
grille[x][y] = 3;
}
if (grille[x][y] == 0 || grille[x][y] == 1) {
println("dans l'eau");
grille[x][y] = 1;
}
for (int b = 1; b <= 8; b = b + 1) {
for (int a = 1; a <= 8; a = a + 1) {
if (grille[a][b] == 3) {
print("+");
}
if (grille[a][b] == 2) {
print("0");
}
if (grille[a][b] == 1) {
print("~");
}
if (grille[a][b] == 0) {
print("0");
}
}
println(" ");
}
x = 0;
y = 0;
}
clear();
for (int b = 1; b <= 8; b = b + 1) {
for (int a = 1; a <= 8; a = a + 1) {
if (grille[a][b] == 3) {
print("+");
}
if (grille[a][b] == 2) {
print("0");
}
if (grille[a][b] == 1) {
print("~");
}
if (grille[a][b] == 0) {
print("0");
}
}
println(" ");
}
println("Gagné ! Vous avez coulé tous les bateaux.");
println("nombre de coups =" + n);
}