Algorithme Bataille Navale

Résolu
Bonsoir,
je dois programmer une bataille navale en java, mais j'ai quelques interrogations quant à l'algorithme.
Le "plateau" est représenté par un tableau de 10 lignes sur 10 colonnes (+ 1 ligne et +1 colonne pour les coordonnées). Il s'agit ici de placer les bateaux (qui exceptionnellement n'ont pas uniquement la forme de "ligne", mais parfois de carré etc). On renseigne une ligne et une colonne "centrale" de la forme, et le vaisseau occupera ces coordonnées.

Le but de cet algorithme est de faire en sorte d'empêcher l'utilisateur que les coordonnées de deux vaisseaux se confondent.

Par exemple, pour un vaisseau en forme de croix, on renseigne la case du milieu :
ligne ?
colonne ?
*vérifier que ça ne sort pas du tableau*

Jusque là c'est bon
Puis les valeurs du tableau à tabl[ligne][colonne]; tabl[ligne+1][colonne]; tabl[ligne-1][colonne]; tabl[ligne][colonne+1]; tabl[ligne][colonne-1] (ça fait une forme de croix) sont remplacées par "C"

Ça c'est facile, mais le problème est là : vu qu'il y a plusieurs formes de vaisseaux différents, je dois faire une vérification pour chaque case et pour chaque lettre, du style
Pour un vaisseau en ligne "XXX", j'aurai une ligne de condition pour répéter de reposer la ligne si les coordonnées se confondent de ce style là :
( tabl[ligne][colonne] != C || tabl[ligne][colonne] != D tabl[ligne][colonne] != E || tabl[ligne][colonne+1] != C ||  tabl[ligne][colonne+1] != D tabl[ligne][colonne+1] != tabl[ligne][colonne+1] != E || tabl[ligne][colonne-1] != C ||tabl[ligne][colonne-1] != D || tabl[ligne][colonne-1] != E)

et là encore j'ai que 3 coordonnées, et 3 lettres (donc 3 vaisseaux), je précise que je monte en général à 5 vaisseaux et jusqu'à 5 coordonnées (par exemple la croix)

Je précise également que je suis "obligé" d'attribuer une lettre différente pour chaque vaisseau, pour que le programme reconnaisse sur quel vaisseau on a tiré (si c'est C, -> croix, si c'est D -> carré par exemple etc...)

Donc je me demandais si il n'y avait pas moins long comme condition, parce que vu que ça va jusqu'à 5*5 conditions à vérifier, ça fait un peu long pour le programme non ? L'algorithme est-il à revoir, ou je n'ai pas d'autre solution ?

Merci !

2 réponses

  1. Après ce n'est peut être pas ce que tu veux faire...
    Un string dans l'array.