Visual Basic: programmation d'un jeu de simulation de vie[tout en bas] - VB/VBA/VBS - Programmation
Marsh Posté le 01-02-2006 à 21:30:54
ben tu définis un tableau avec pour chaque cellule 2 états (vie / mort)
apres tu fait analyser le tableau et ca change ...
nan ?
Marsh Posté le 01-02-2006 à 22:54:10
Salut,
j'ai déja fait ce genre d'automate cellulaire.
Si tu as des problêmes précis, demande.
Bonne chance
Marsh Posté le 02-02-2006 à 11:01:41
Code :
|
Voila mes premier algo. J'ai un problème pour créer une procédure (ou une fonction?) qui me sort aléatoirement une valeur.
Je dois me servir de l'objet "ramdomize" mais je ne suis pas sur de moi pour la syntaxe.
Mon deuxième problème est la manière par laquelle j'aurai par exemple 40% de cellules vivantes au départ.
Marsh Posté le 04-02-2006 à 09:53:03
Bonjour,
J'ai une autre petite question: j'ai un tableau à deux dimensions:
Code :
|
Comment puis je faire pour que les valeurs présentes dans chaque case soient mélangés dans le même tableau?
Merci de vos réponses !
Marsh Posté le 04-02-2006 à 11:11:24
"Comment puis je faire pour que les valeurs présentes dans chaque case soient mélangés dans le même tableau? " // Sois un peu plus clair
Marsh Posté le 04-02-2006 à 12:02:21
Citation : "Comment puis je faire pour que les valeurs présentes dans chaque case soient mélangés dans le même tableau? " // Sois un peu plus clair |
Je vais prendre un exemple: imagines un tableau de 100 cases (10*10)
Les 40 premières cellules auront la valeur "V", les suivantes auront la valeur "M". Après que cette attribution a été faite, je voudrais faire en sorte que toutes les lettres du tableau soient mélangées de façon aléatoire.
J'ai du mal à paramétrer corectment l'objet "randomize".
Marsh Posté le 04-02-2006 à 14:00:54
Code :
|
Bon voila l'idée.
Ca te remplit exactement 10 cellules avec "M" soit des cellules mortes
Le reste sera des cellules "V" -> vivantes
Le remplissement des "M" se fait de façon aléatoire
on est ici à 10 cellules mortes pour un total de 10x10 (100 cellules) soit 10% de cellules mortes
pour obtenir un chiffre autre, remplacer "For k = 1 To 10" par "For k = 1 To 20" pour obtenir par exemple 20% et ainsi de suite.
Voila
--
Edit : orthographe
Marsh Posté le 04-02-2006 à 15:12:26
Merci!
Je commence à comprendre comment ça fonctionne. J'ai procéder diffèremment.
Code :
|
Code :
|
Code :
|
Code :
|
Mon problème est ci dessus:
- quel paramètre suplémentaire dois je rentrer pour que la variable "celle" ne prenne pas la valeur 0 (sinon bug) ?
- que dois faire pour évité les doublon, c'est dire que je me retrouve exactement avec 20 cellules vivantes ?
Code :
|
Code :
|
Merci )
Marsh Posté le 04-02-2006 à 15:21:56
dans mon code
x = Fix(10 * Rnd()) + 1
y = Fix(10 * Rnd()) + 1
les +1 évite d'avoir des valeurs nulles
If Cells(x, y).Value = "M" Then GoTo aa
je verifie que la cellule est vide sinon il choisis 1 nouvelle cellule.
Marsh Posté le 04-02-2006 à 15:26:12
Code :
|
moi je mettrais
Code :
|
voila
---
Edit : viré le CInt()
Marsh Posté le 04-02-2006 à 15:27:55
Citation : dans mon code |
Comme tu as pu le remarquer, les true et false se faisait dans un tableau non visible à une dimension (plus facile).
Je vais essayer avec ta méthode.
Citation : 1. |
Dans ton exemple, le "goto lbla" réinitialise le tirage aléatoire?
Marsh Posté le 04-02-2006 à 21:45:03
Code :
|
Ce code me permet d'afficher dans un tableau et de façon aléatoire 100 cellules: 20 sont vivantes("V" ) et 80 sont mortes ("M" ).
Le programme fonctionne, il n'y a pas de problème.(Merci à tous ceux qui m'ont aidé)
Je souhaiterais avoir quelques renseignements concernant l'interface graphique:
- quel est le nom du truc qui me permet d'avoir des cellules carrés (les redimentionner)
- comment puisse faire pour que la cellule soit colorié en verte à la place de "V" (vivante) et rouge pour "M" (morte)?
Merci
Marsh Posté le 04-02-2006 à 21:57:40
pas mal.
moi je simplifirai
If tvi(MaVal, MaVal2) = True Then
GoTo ligne1
Else
tvi(MaVal, MaVal2) = True
End If
par
If tvi(MaVal, MaVal2) = True Then GoTo ligne1
tvi(MaVal, MaVal2) = True
comme 'Goto lign1' est sur la même ligne que 'Then', elle sera exécutée uniquement si le If est vrai. sinon, il exécute la suite du programme et donc le 'tvi(MaVal, MaVal2) = True'
Sinon pour la taille et la couleur du FlexGird va faire un tour sur vbfrance, tu aurs peut être des infos.
Et de rien
Marsh Posté le 04-02-2006 à 22:15:36
Citation : moi je simplifirai |
C'est ce que j'avais mis au début mais ca faisait bugé mon programme. J'ai consulté la msdn et j'ai mis cette syntaxe et il n'y a plus aucun probleme, j'ai bien 20 cellules vivantes placé aléatoirement dans mon tableau.
Il me reste plus qu'à faire les lois de survi!
Marsh Posté le 31-01-2006 à 16:19:57
Bonjour à tous,
J'ai un projet à réaliser en visual basic. Je connais assez bien le langage de programmation (boucle, booléen...etc...) mais, mon gros problème réside dans le fait que j'ai beaucoup de mal à analyser le sujet pour le découper en une série de sous programme.
Je souhaiterais avoir un peu d'aide pour démarrer mon projet. Merci
Le but de ce projet est de simuler un jeu de la vie. Le jeu de la vie est le plus célèbre des automates cellulaires. Il a été inventé par John Conway et popularisé dans la rubrique de Martin Gardner du magazine américain "Scientific American" d'octobre 1970.
Le jeu de la vie consiste à faire naître, vivre ou mourir des cellules. Celles-ci sont disposées sur une grille carrée. Chaque case de la grille contient une cellule. Initialement une cellule est soit "en vie" soit "morte". A chaque génération, les cellules évoluent en fonction de létat de leurs voisines, en suivant une loi dévolution.
Par exemple, une loi dévolution peut être :
Une cellule en vie meurt si elle a plus de 3 voisins morts,
Une cellule en vie survit si elle a exactement 2 voisins en vie,
Une cellule morte naît si elle a exactement 3 voisins en vie.
Les cases voisines dune case donnée sont les quatre cases adjacentes, cest-à-dire les cases ayant au moins un côté en commun.
Dautres règles dévolution sont envisageables. Lors dune exécution, toutes les cellules suivent la même règle dévolution.
Vous réaliserez une application en Visual basic qui affiche à lécran à chaque génération létat des cellules sur la grille, ainsi que des informations sur lévolution des populations de cellules en vie ou mortes. La grille sera initialisée en fonction du pourcentage de cellules en vie donné par lutilisateur au lancement de lapplication. Vous pourrez envisager de laisser lutilisateur choisir une règle dévolution parmi une liste de règles disponibles.
Message édité par mauriiiiiice le 04-02-2006 à 21:52:44