A voir également:
- Mémoire des tentatives précédentes VBA - bataille navale
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Cette option de connexion est désactivée en raison des échecs des tentatives de connexion - Forum PC portable
- Mémoire vive - Guide
- Le nombre de tentatives de déverrouillage incorrectes est trop élevé samsung ✓ - Forum Samsung
- Mémoire vidéo dédiée : 128 mo ✓ - Forum Carte graphique
2 réponses
via55
Messages postés
14502
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
9 décembre 2024
2 736
2 mai 2022 à 14:33
2 mai 2022 à 14:33
Bonjour Io
Il faut avoir une variable tableau à double entrée (ligne, colonne) , au départ toutes les 100 valeurs du tableau sont à 0
Chaque fois qu'un tirage est effectué la valeur (ligne,colonne) prend la valeur 1
Après chaque tirage si la valeur du couple tiré dans le tableau est = 1 on refait le tirage
Il faut aussi comptabiliser le nombre de tirs effectuée pour ne pas dépasser 100 auquel cas le tirage tomberait dans une boucle infinie. Pour cela il faut ,avant de pouvoir incrémenter la valeur à chaque tour, en début de module déclarer la variable nbtir comme Public pour que cette valeur soit conservée
Exemple de macro :
Mais ce n'est que le début car je pense que tes navires doivent avoir plusieurs cases (de 1 à 4 ?) et que lorsqu'un est touché mais non coulé le tir suivant de l'ordi devra se faire dans une cellule contigüe à celle du tir précédent, donc il faudra aussi comme variables Public les coordonnées ligne et colonne du tir réussi effectué
Bon courage et bonne programmation
Cdlmnt
Via
Il faut avoir une variable tableau à double entrée (ligne, colonne) , au départ toutes les 100 valeurs du tableau sont à 0
Chaque fois qu'un tirage est effectué la valeur (ligne,colonne) prend la valeur 1
Après chaque tirage si la valeur du couple tiré dans le tableau est = 1 on refait le tirage
Il faut aussi comptabiliser le nombre de tirs effectuée pour ne pas dépasser 100 auquel cas le tirage tomberait dans une boucle infinie. Pour cela il faut ,avant de pouvoir incrémenter la valeur à chaque tour, en début de module déclarer la variable nbtir comme Public pour que cette valeur soit conservée
Exemple de macro :
Dim ligne As Integer, colonne As Integer Dim tablo(2 To 11, 2 To 11) As Integer Public nbtir As Integer Sub tir_ordi() tirage: If nbtir = 100 Then Exit Sub ligne = Int(10 * Rnd()) + 2 colonne = Int(10 * Rnd()) + 2 If tablo(ligne, colonne) = 1 Then GoTo tirage tablo(ligne, colonne) = 1 nbtir = nbtir + 1 If Feuil1.Cells(ligne, colonne) = 1 Then MsgBox ("la flotte ennemie a touché un de vos bateaux") Feuil1.Cells(ligne, colonne).Interior.Color = RGB(255, 0, 0) Else MsgBox ("Tir dans l'eau !") Feuil1.Cells(ligne, colonne).Interior.Color = RGB(102, 255, 255) End If End Sub
Mais ce n'est que le début car je pense que tes navires doivent avoir plusieurs cases (de 1 à 4 ?) et que lorsqu'un est touché mais non coulé le tir suivant de l'ordi devra se faire dans une cellule contigüe à celle du tir précédent, donc il faudra aussi comme variables Public les coordonnées ligne et colonne du tir réussi effectué
Bon courage et bonne programmation
Cdlmnt
Via