Bataille Navale

Présentation du jeu

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

Premier cas

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");}}
   }
}
	


Deuxième cas

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");}}
   }
}
	


Troisième cas


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");}}
   }
}