C'est une version simplifiée du jeu de bataille navale que l'on trouve dans le manuel.
Un seul bateau est placé sur la case de coordonnées (a;b) (en orange). Il est en vue suivant différentes règles
Pour distinguer les deux premiers cas on va introduire une distance entre les points du quadrillage
La distance entre les points M et M' de coordonnées (x,y) et (x',y') est d(M(x,y);N(x',y')) = |x-x'| + |y - y'|
Ainsi si a = 4 et b = 7 représente la case orange alors les cases vertes vérifient |x-4| + |y - 7| <= 1
class BatailleNavale{
public static void main (String [] args){
/*déclaration des types des variables
a et b sont des entiers repérant le bateau
x et y sont les coordonnées donné par le joueur */
int a;
int b;
int x;
int y;
/*La position du bateau est définie en (4,7)*/
a = 4;
b = 7;
/*le joueur entre au clavier des coordonnées x et y*/
System.out.println("À vous de jouer");
System.out.println("Entrez l'abscisse");
x = Isn.readInt();
System.out.println("Entrez l'ordonnée");
y = Isn.readInt();
/*Si les coordonnées entrées au clavier sont les memes que celles
fixées au départ alors le bateau est coulé*/
if (x == a & y == b) {
System.out.println("Coulé");}
/*Sinon soit le bateau est visible parce qu'il est voisin de la case touchée mais les cases
diagonalement adjacentes ne sont pas considérées comme voisines du bateau. Voir l'image ci-dessus*/
else {
if (Math.abs(x-a)+Math.abs(y-b) <= 1) {
System.out.println("En vue");}
else {
System.out.println("À l'eau");}}
}
}
La distance entre les points M et M' de coordonnées (x,y) et (x',y') est ici d(M(x,y);N(x',y')) = max(|x-x'| , |y - y'|)
Ainsi si a = 4 et b = 7 représente la case orange alors les cases vertes vérifient max(|x-4| , |y - 7| ) <= 1
class BatailleNavale{ public static void main (String [] args){ /*déclaration des types des variables a et b sont des entiers repérant le bateau x et y sont les coordonnées donné par le joueur */ int a; int b; int x; int y; /*La position du bateau est définie en (4,7)*/ a = 4; b = 7; /*le joueur entre au clavier des coordonnées x et y*/ System.out.println("À vous de jouer"); x = Isn.readInt(); y = Isn.readInt(); /*Si les coordonnées entrées au clavier sont les memes que celles fixées au départ alors le bateau est coulé*/ if (x == a & y == b) { System.out.println("Coulé");} /*Sinon soit le bateau est visible en ligne ou en colonne soit il n'est pas visible*/ else { if (Math.max(Math.abs(x-a),Math.abs(x-b)) <= 1) { System.out.println("En vue");} else { System.out.println("À l'eau");}} } }
class BatailleNavale{ public static void main (String [] args){ /*déclaration des types des variables a et b sont des entiers repérant le bateau x et y sont les coordonnées donné par le joueur */ int a; int b; int x; int y; /*La position du bateau est définie en (4,7)*/ a = 4; b = 7; /*le joueur entre au clavier des coordonnées x et y*/ System.out.println("À vous de jouer"); x = Isn.readInt(); y = Isn.readInt(); /*Si les coordonnées entrées au clavier sont les memes que celles fixées au départ alors le bateau est coulé*/ if (x == a && y == b) { System.out.println("Coulé");} /*Sinon soit le bateau est visible en ligne ou en colonne soit il n'est pas visible*/ else { if (x == a || y == b) { System.out.println("En vue");} else { System.out.println("À l'eau");}} } }