Probleme :les bateaux se chevauche

Résolu
warent Messages postés 7 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 18 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)
   
    torpilleura21.tabtorp(1) = 12 * (X - 1) + (Y - 1)
    torpilleura21.tabtorp(2) = torpilleura21.tabtorp(1) + 12
    torpilleura21.tabtorp(3) = torpilleura21.tabtorp(1) + 24
    torpilleura21.tabtorp(4) = torpilleura21.tabtorp(1) + 36
    loop while
Else
    absi = 12
    ordo = 8
    X = absis(absi)
    Y = ordon(ordo)
  
    torpilleura21.tabtorp(1) = 12 * (X - 1) + (Y - 1)
    torpilleura21.tabtorp(2) = torpilleura21.tabtorp(1) + 1
    torpilleura21.tabtorp(3) = torpilleura21.tabtorp(1) + 2
    torpilleura21.tabtorp(4) = torpilleura21.tabtorp(1) + 3


 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.

Merci d'avance

(j'espere que vous avez tout compris)

4 réponses

Profil bloqué
21 avril 2007 à 14:01
Salut Warent

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

GRENIER Alain[8D]
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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"
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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.
0
Profil bloqué
22 avril 2007 à 23:11
Comme quoi la programmation c'est d'abord du bon français que l'on traduit en langage informatique

GRENIER Alain[8D]
0
Rejoignez-nous