begin process at 2010 02 10 07:52:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > JEU DE LA VIE ORIENTE OBJET (MAIS QUI NE FONCTIONNE PAS...SNIFF)

JEU DE LA VIE ORIENTE OBJET (MAIS QUI NE FONCTIONNE PAS...SNIFF)


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :30/08/2003 Date de mise à jour :30/08/2003 20:11:47 Vu / téléchargé :1 932 / 123

Auteur : RaZoR

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

C'est tout simplement une version objet du fameux jeu de John Conway nommé : "Le jeu de la vie".
Mon programme n'est pas beaucoup optimisé, car c'est la première fois que je programme réellement en objet !!


Pour le code je n'ai mis que le code des deux classes :

Source

  • 'Classe cCellule :
  • Option Explicit
  • 'Coordonnées de la cellule :
  • Private x As Integer, y As Integer
  • Dim bCelluleEnVie As Boolean 'Etat de la cellule
  • Dim bAncienEtat As Boolean 'Etat de la cellule à la génération d'avant
  • 'Constructeur de cellule :
  • Public Sub InitialiseUneCellule(iCoordonneeX As Integer, iCoordonneeY As Integer)
  • 'Initialise les coordonnées X,Y de la cellule :
  • x = iCoordonneeX
  • y = iCoordonneeY
  • 'Met cette cellule morte ...
  • bCelluleEnVie = False
  • End Sub
  • 'Fonctoin qui retourne l'état de la case :
  • Public Function Etat() As Integer
  • 'Retourne 1 pour : EnVie
  • 'Retourne 0 pour : Mort
  • IIf bAncienEtat, Etat = 1, Etat = 0
  • End Function
  • 'Sub qui permet de sauvegarder la génération actuelle :
  • Public Sub SauvegardeLaGeneration()
  • 'On sauvegarde l'état actuelle d'une cellule dans l'etat de la précédente génération
  • bAncienEtat = bCelluleEnVie
  • End Sub
  • 'Sub qui permet de passer à la génération suivante :
  • Public Sub PasseALaNouvelleGeneration(iNbrDeVoisines As Integer)
  • If bAncienEtat Then 'Si la cellule est déja vivante...
  • 'elle le reste, si elle a exactement 2 ou 3 cellules voisines :
  • bCelluleEnVie = (iNbrDeVoisines = 2) Or (iNbrDeVoisines = 3)
  • Else 'Sinon, une cellule nait si elle à exactement trois cellules voisines :
  • bCelluleEnVie = (iNbrDeVoisines = 3)
  • End If
  • 'Dans tous les autres cas elle meurt !!!
  • End Sub
  • 'Sub qui permet de créer une cellule :
  • Public Sub CreerUneCellule()
  • bCelluleEnVie = True
  • End Sub
  • 'Sub qui permet d'afficher la cellule dans une PictureBox:
  • Public Sub AfficheLaCellule()
  • Dim iDiametre As Integer: iDiametre = 100
  • Dim XX As Integer: XX = (iDiametre * 2.5) * x
  • Dim YY As Integer: YY = (iDiametre * 2.5) * y
  • If bCelluleEnVie Then
  • 'Trace un cercle aux coordonnées (XX + 1, YY + 1) avec un diametre de iDiametre et de couleur bleu :
  • frmMain.picTerrain.Circle (XX + 1, YY + 1), iDiametre, vbBlue
  • 'Else
  • ' Picture.Circle (XX + 1, YY + 1), iDiametre, vbRed
  • End If
  • End Sub
  • 'Classe cTerrain :
  • Option Explicit
  • Dim Terrain(0 To 10 + 1, 0 To 10 + 1) As cCellule
  • 'Sub qui permet d'initialiser le terrain :
  • Public Sub InitialiseLeTerrain()
  • Dim i As Integer, j As Integer
  • For i = 0 To 10 + 1
  • For j = 0 To 10 + 1
  • Set Terrain(i, j) = New cCellule
  • Terrain(i, j).InitialiseUneCellule i, j
  • Next j
  • Next i
  • 'Met un premier motif :
  • Terrain(5, 4).CreerUneCellule
  • Terrain(5, 5).CreerUneCellule
  • Terrain(5, 6).CreerUneCellule
  • End Sub
  • 'Sub qui permet de passer à la génération suivante :
  • Public Sub MetAJour()
  • Dim i As Integer, j As Integer
  • 'Affiche l'ancienne génération :
  • For i = 1 To 10
  • For j = 1 To 10
  • Terrain(i, j).AfficheLaCellule
  • Next j
  • Next i
  • 'Mémorise l'état de l'ancienne génération :
  • For i = 0 To 10 + 1
  • For j = 0 To 10 + 1
  • Terrain(i, j).SauvegardeLaGeneration
  • Next j
  • Next i
  • Dim iNbrDeVoisines As Integer
  • 'Calcule la génération suivante :
  • For i = 1 To 10
  • For j = 1 To 10
  • iNbrDeVoisines = Terrain(i - 1, j - 1).Etat _
  • + Terrain(i - 1, j).Etat _
  • + Terrain(i - 1, j + 1).Etat _
  • + Terrain(i, j - 1).Etat _
  • + Terrain(i, j + 1).Etat _
  • + Terrain(i + 1, j - 1).Etat _
  • + Terrain(i + 1, j).Etat _
  • + Terrain(i + 1, j + 1).Etat
  • Terrain(i, j).PasseALaNouvelleGeneration iNbrDeVoisines
  • Next j
  • Next i
  • End Sub
'Classe cCellule :
Option Explicit

'Coordonnées de la cellule :
Private x As Integer, y As Integer

Dim bCelluleEnVie As Boolean 'Etat de la cellule
Dim bAncienEtat As Boolean 'Etat de la cellule à la génération d'avant

'Constructeur de cellule :
Public Sub InitialiseUneCellule(iCoordonneeX As Integer, iCoordonneeY As Integer)
    'Initialise les coordonnées X,Y de la cellule :
    x = iCoordonneeX
    y = iCoordonneeY
    'Met cette cellule morte ...
    bCelluleEnVie = False
End Sub

'Fonctoin qui retourne l'état de la case :
Public Function Etat() As Integer
    'Retourne 1 pour : EnVie
    'Retourne 0 pour : Mort
    IIf bAncienEtat, Etat = 1, Etat = 0
End Function

'Sub qui permet de sauvegarder la génération actuelle :
Public Sub SauvegardeLaGeneration()
    'On sauvegarde l'état actuelle d'une cellule dans l'etat de la précédente génération
    bAncienEtat = bCelluleEnVie
End Sub

'Sub qui permet de passer à la génération suivante :
Public Sub PasseALaNouvelleGeneration(iNbrDeVoisines As Integer)
    If bAncienEtat Then 'Si la cellule est déja vivante...
        'elle le reste, si elle a exactement 2 ou 3 cellules voisines :
        bCelluleEnVie = (iNbrDeVoisines = 2) Or (iNbrDeVoisines = 3)
    Else 'Sinon, une cellule nait si elle à exactement trois cellules voisines :
        bCelluleEnVie = (iNbrDeVoisines = 3)
    End If
    
    'Dans tous les autres cas elle meurt !!!
    
End Sub

'Sub qui permet de créer une cellule :
Public Sub CreerUneCellule()
    bCelluleEnVie = True
End Sub

'Sub qui permet d'afficher la cellule dans une PictureBox:
Public Sub AfficheLaCellule()
    Dim iDiametre As Integer: iDiametre = 100
    Dim XX As Integer: XX = (iDiametre * 2.5) * x
    Dim YY As Integer: YY = (iDiametre * 2.5) * y
    
    If bCelluleEnVie Then
        'Trace un cercle aux coordonnées (XX + 1, YY + 1) avec un diametre de iDiametre et de couleur bleu :
        frmMain.picTerrain.Circle (XX + 1, YY + 1), iDiametre, vbBlue
    'Else
    '    Picture.Circle (XX + 1, YY + 1), iDiametre, vbRed
    End If
End Sub



'Classe cTerrain :
Option Explicit

Dim Terrain(0 To 10 + 1, 0 To 10 + 1) As cCellule

'Sub qui permet d'initialiser le terrain :
Public Sub InitialiseLeTerrain()
    Dim i As Integer, j As Integer
    For i = 0 To 10 + 1
        For j = 0 To 10 + 1
            Set Terrain(i, j) = New cCellule
            Terrain(i, j).InitialiseUneCellule i, j
        Next j
    Next i
    
    'Met un premier motif :
    Terrain(5, 4).CreerUneCellule
    Terrain(5, 5).CreerUneCellule
    Terrain(5, 6).CreerUneCellule
End Sub

'Sub qui permet de passer à la génération suivante :
Public Sub MetAJour()
    Dim i As Integer, j As Integer
    
    'Affiche l'ancienne génération :
    For i = 1 To 10
        For j = 1 To 10
            Terrain(i, j).AfficheLaCellule
        Next j
    Next i
    
    'Mémorise l'état de l'ancienne génération :
    For i = 0 To 10 + 1
        For j = 0 To 10 + 1
            Terrain(i, j).SauvegardeLaGeneration
        Next j
    Next i
    
    Dim iNbrDeVoisines As Integer
    'Calcule la génération suivante :
    For i = 1 To 10
        For j = 1 To 10
            iNbrDeVoisines = Terrain(i - 1, j - 1).Etat _
                            + Terrain(i - 1, j).Etat _
                            + Terrain(i - 1, j + 1).Etat _
                            + Terrain(i, j - 1).Etat _
                            + Terrain(i, j + 1).Etat _
                            + Terrain(i + 1, j - 1).Etat _
                            + Terrain(i + 1, j).Etat _
                            + Terrain(i + 1, j + 1).Etat
            Terrain(i, j).PasseALaNouvelleGeneration iNbrDeVoisines
        Next j
    Next i
End Sub

 Conclusion

Le seul gros défaut de ce code !! c'est qu'il ne marche pas !!
Si vous pourrier m'aider, je serais l'homme le plus heureux du monde !!

Merci

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) BLOC-NOTES.NET
Source avec Zip AIDE SVJ HS CRYPTOGRAPHIE : VIGENEROR & CO
Source avec Zip BUROR : CONFIGURATION D'ICONES

 Sources de la même categorie

Source avec Zip Source avec une capture ASTROLEURRE par SaintMaur
Source avec Zip Source avec une capture PUISSANCE4 par SaintMaur
Source avec Zip Source avec une capture Source .NET (Dotnet) JEU DE PENDU (COUIC 1 DE +) par tresorsdevie
Source avec Zip Source avec une capture SEARCHMOTS par boscoauhunier
Source avec Zip Source avec une capture JEU DE TIR À L'ARC par xranto

Commentaires et avis

Commentaire de RaZoR le 30/08/2003 20:15:18

Je me suis mis 0 car :
"Je préfére un code qui marche, qu'un beau code !" (dsl mais je ne sais plus qui c'est qui a dis ça !!)

Commentaire de CAD9757 le 01/09/2003 10:07:16

LE MIEN Y MARCHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
LALALALALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
http://www.vbfrance.com/article.aspx?Val=10157
(bon d'accord, c'est pas "orienté objet" mais bon, :
LE MIEN Y MARCHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE)

Commentaire de Benouille le 03/09/2003 11:03:47

honnetement moi je préfère un beau code a un code qui marche ... parceque l'un on peut le faire marcher en cherchant, le maintenir, l'améliorer...
l'autre on peut l'utiliser puis le jeter car on en fera plus rien des qu'il n'est plus exactement conforme au besoin.

je mets 5 comme note

Commentaire de jon256 le 23/11/2003 10:33:52

donc si j'ai bien compris le jeu ne fonctionne pas et y a pas de capture ... Mais alors il sert à quoi ???????? ;(

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales