warent
Messages postés7Date d'inscriptionsamedi 3 février 2007StatutMembreDernière intervention18 novembre 2007
-
21 avril 2007 à 13:12
Profil bloqué -
22 avril 2007 à 23:11
Salut a tous
j'ai un probleme
c'est peu etre tout simple mais ça fait plusieurs jour que je suis dessus et je n'ai tujours pas trouvé
alors voila je suis en train de programer une bataille navale pour une PTI
pour que l'ordinateur puisse placé ses bateaux au hazard j'ai donc pris deux variables aleatoire (X et Y ) et avec une formule ca ma donne le numero de la case dans laquelle je doi mettre une partie du bateau (5 partie (donc 5 cases )pour le porte avion , 4 pour les torpilleur, etc...)
et apres j'incrémente de 1 a chaque case pour mettre le bateau verticale ou de douze pour le mettre horizontale (la grille fait douze sur douze)
voila le code pour un bateau :
" horizontal = placement
If horizontal = True Then
Do
absi = 8
ordo = 12
X = absis(absi)
Y = ordon(ordo)
End If "
chaque bateau a un tableau de la longueure du bateaupour hrizontale c'est une variable aleatoire de 0 a 100 et si c'est inferieure a 50 horizontale True sinon False
il y a le meme code pour les 8 bateaux
mais le probleme c'est que les bateau peuvent se chevaucher et je ne vois pa comment faire pour empecher cela.
tu as à l'origine un tableau de 12 * 12 cases
tu crées un tableau de 144 états pour les cases du jeu( case vide à l'origine)
Une boucle pour chaque bateau à placer
Une seconde boucle de test
Déterminer une case de départ aléatoire et un sens vertical ou horizontal aléatoire
Voir si le bateau ne sort pas des cases du jeu
Tester si toutes les cases que le bateau va occuper sont vides
Si oui : sortir de la boucle de test
Si non : tester avec une autre case de départ aléatoire et un autre sens aléatoire
Fin boucle de test
Placer le bateau
Mettre les cases que le bateau occupe à l'état occupé
Fin boucle bateau
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 21 avril 2007 à 13:50
On voit à peu près tout sauf l'essentiel !
C'est quoi l'essentiel ?
Ton tirage "aléatoire", ma foi ...
Si tu ne veux pas risquer de chevauchements, il va te falloir intervenir dans ces "aléas"
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 21 avril 2007 à 14:09
Il lui suffit d'éliminer toutes les cases qui entourent un bateau déjà "tiré au sort"...de sa liste de tirages et d'évaluer ensuite, en fonction des dimensions du nouveau bateau, s'il doit ou non "retirer au sort". Le plus simple serait de "déplacer" le boiuveau bateau à partir de sa position "tirée au sort"; jusqu'à ce qu'il n'en "chevauche" pas un autre, puis, bien évidemment, de supprimer du tableau de tirage les cases entourant ce nouveau bateau.