Life Game

Présentation

Images

Passez votre souris par dessus une image pour l'afficher.

Life Game Life Game


Life Game Life Game

Description

Ce jeu se place dans la continuité de World Of Sand : aucun but précis, juste le rêve et la distraction.

Comment «jouer» :

Le «moteur physique»

Il ne s'agit pas d'un moteur physique, loin de là ! Mais quelques fonctionalitées sont tout de même présentes :

  1. L'huile a une densité plus faible que l'eau et flotte.
  2. Le déplacement de particules isolées est aléatoire.
  3. Le sel et l'eau sont miscibles et forment un liquide de densité supérieur à l'huile et inférieure à l'eau.
  4. Il faut beaucoup de feu pour faire disparaitre de l'eau
  5. L'huile brûle
  6. Le sable stoppe le feu

Reste à faire :

  1. Le sel se consume
  2. Le système des vases communicants
  3. Ajout de paramètres physiques (température et pression)
  4. Gestion des différents états de la matière
  5. liste sans limite...

Téléchargement

Version Zippée : EXE + Code source

Version EXE

Code source

Le projet est écrit en Visual Basic 6. Il utilise les APIs Windows pour la sortie graphique.
Le langage Visual Basic n'étant pas extrêmement adapté à la gestion pixel par pixel, le programme est relativement lent.

La feuille :

Code source : Form1.frm
  • Langage : vb
  • ΔT : 0.052s
  • Taille :35684 caractères
'EN CAS DE BUG : Remplacer SetpixelV par setpixel, et ca remarchera !
"user32""user32""user32""kernel32""kernel32""kernel32""gdi32""TextOutA""gdi32"'38550
'10813439
'C'est le coeur qui sent Dieu et non la raison

'Evenements souris
'Evenements claviers
'Carte
'Outils
'Variables poubelles
'Variables API
'Le splash Screen
"LIFE GAME VII""Touches utilisées par le jeu :"" -Pavé numérique : taille du pinceau"" -Touches 1 à 9 : Vitesse d'apparition de la particule sélectionnée, Touche gauche et droite : emplacement d'apparition de la particule""  -A : Eau, B : Sable, C : Huile""  -Clic gauche : tracer un mur, clic droit efface, Clic sur la roulette (et non roulement) tout effacer""- F1 : Définir la priorité comme normale, F2 : Définir la priorité comme haute (ralentissements des autres applications), F3 : Très haute ! Risque de crash""Quitter : ECHAP""ATTENTION ! CE PROGRAMME SUPPRIME LES CONTROLES D'ERREURS WINDOWS.""NE PAS FAIRE APPARAITRE PLUS DE PARTICULES QUE CE QUE L'ECRAN PEUT CONTENIR !""Appuyez sur ESPACE pour commencer""By Neamar 2007""Le petit point rouge en bas indique la vitesse. Plus il est proche de la gauche, plus le déroulement d'une phase est rapide.""Chargement des objets..."'Initialisation
"LIFE GAME VII""By Neamar""________________""Objets :""-Eau (A)""-Sable (B)""-Huile (C)""-Sel (D)""-Feu (E)""________________""Taille du pinceau : 1 ""________________"'Ca commence
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Evenements externes
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Réglage de la priorité
'Taille du pinceau
'Objet selectionné
'Déplacer le flux à gauche / à droite
'Apothéose
'Acquérir la souris
'Apparition de particules
'Joindre le dernier point avec le nouveau
'Acquérir la souris, effacer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Algorithme
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Pour chaque particule
'Si c'est vide en dessous..c'est simple !
'Si c'est supérieur à 590 on vire...RemoveItem
'Faut tester les deux sens :
'Si ca marche des deux cotés on choisit aléatoirement
'Si c'est vide à gauche
'Si c'est vide à droite
'C'était les mvmts simples, maintenant on complique :


            'Pour les solides :
'Faire couler le solide, monter le liquide
'Caractérise la viscosité du sable.
'Si ca marche des deux cotés on choisit aléatoirement
'Le sable s'effondre dans l'eau...
'Le sable s'effondre..bis
'Et pour les liquides
'L'huile flotte au dessus de tout
'Si ca marche des deux cotés on choisit aléatoirement
'L'huile flotte au dessus de tout, et se déplace de façon quantique ;-) à gauche
'L 'huile flotte au dessus de tout, et se déplace de façon quantique ;-) à droite
'Un peu plus avancé : le double-droite.
'Un peu plus avancé : le double-gauche
'            'Et enfin on calcule la pression
'            If map(particules(tempo).x, particules(tempo).y - 1).Type <> type_de_beton And map(particules(tempo).x, particules(tempo).y - 1).Type <> VIDE Then map(particules(tempo).x, particules(tempo).y).Pression = map(particules(tempo).x, particules(tempo).y - 1).Pression + 1 Else map(particules(tempo).x, particules(tempo).y).Pression = 0
'            'If map(particules(tempo).x, particules(tempo).y).Pression > map(particules(tempo).x, particules(tempo).y + 1).Pression And map(particules(tempo).x, particules(tempo).y + 1).Type = type_de_beton Then map(particules(tempo).x, particules(tempo).y + 1) = Rien
'            SetPixelV c_hDc, particules(tempo).x, particules(tempo).y, particules(tempo).Couleur
'
'            'Si on trouve une différence significative entre deux eléments proches :
'            If map(particules(tempo).x, particules(tempo).y).Pression - 30 > map(particules(tempo).x + 1, particules(tempo).y).Pression Then
'                If map(particules(tempo).x + 1, particules(tempo).y).Type <> type_de_beton And 25 * Rnd < 1 Then
'                    'SetPixelV c_hDc, particules(tempo).x, particules(tempo).y, map(particules(tempo).x, particules(tempo).y).Pression
'                    distance = particules(tempo).x
'                    Do
'                        distance = distance + 1
'                    Loop While map(distance, particules(tempo).y - map(distance, particules(tempo).y).Pression - 1).Type = WATER
'                    SetPixelV c_hDc, distance, particules(tempo).y - map(distance, particules(tempo).y).Pression, RGB(256, 256, 256)
''                    If map(distance, particules(tempo).y).Type <> type_de_beton Then
''                        map(particules(tempo).x, particules(tempo).y) = Rien
''                        SetPixelV c_hDc, particules(tempo).x, particules(tempo).y, VIDE
''                        particules(tempo).y = particules(tempo).y - map(distance, particules(tempo).y).Pression - 1
''                        particules(tempo).x = distance
''                        map(particules(tempo).x, particules(tempo).y).Type = particules(tempo).Type
''                        map(particules(tempo).x, particules(tempo).y).IP = tempo
''                        SetPixelV c_hDc, particules(tempo).x, particules(tempo).y, particules(tempo).Couleur
''                    End If
'                End If
'            End If
'Du sel et de l'eau..
'Le feu ronge le béton
'Huile+feu=Schpouu Explosion
'Dégradé du feu
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Creation de nouvelles particules
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Auteur
Neamar
Date
2006­~2007
But
Divertis­sement
Langage
Visual Basic
Menu
Index des ressources

Chargement du sommaire...