Bonsoir!
Je suis actuellement en train de créer un "jeu de la vie" pour le fun, mais voici un petit problème...
De 1 je pense que ma technique d'affichage avec array est moisis du fait que le programme est hyyper long, ce qui n'est franchement pas agréable pour l'utilisateur...
De 2, Il y a surement une erreur, pourtant j'ai pris les règles sur wikipédia, mais l'affiche n'est pas celui escompté...
Je vous fourni le code pour d'éventuels conseils afin que mon programme marche si vous avez le cœur à me lire!
PS: J'ai mis les bornes des for avec un décalage de 3 pour pas prendre en compte les bordure d'écran (juste parce que je pensais que ma méthode d'affichage ne serais pas top, donc autant ne pas faire bouillir mon cerveau a des fins inutiles

)
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
HotKeySet("{ESC}","_Sort")
Global $Height=500,$Width=500
Global $Grid[$Height][$Width]
For $i=0 to UBound($Grid)-1
For $j=0 to UBound($Grid,2)-1
$Grid[$i][$j]=0
Next
Next
$Grid[50][50]=1
$Grid[51][50]=1
$Grid[50][49]=1
$Grid[51][49]=1
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", $Height, $Width, 500, 346)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_GDIPlus_Startup()
$graphHdl = _GDIPlus_GraphicsCreateFromHWND($Form1)
_GDIPlus_GraphicsClear($graphHdl, 0xFF000000)
$hPen = _GDIPlus_PenCreate(0xFFFFFFFF)
; _ArrayDisplay($Grid)
do
For $i=4 to $Height-4
for $j=4 to $Width-4
$Voisins=0
If $Grid[$i-1][$j]=1 Then
$Voisins+=1
EndIf
If $Grid[$i-1][$j-1]=1 Then
$Voisins+=1
EndIf
If $Grid[$i+1][$j]=1 Then
$Voisins+=1
EndIf
If $Grid[$i+1][$j+1]=1 Then
$Voisins+=1
EndIf
If $Grid[$i][$j+1]=1 Then
$Voisins+=1
EndIf
If $Grid[$i][$j-1]=1 Then
$Voisins+=1
EndIf
If $Grid[$i-1][$j+1]=1 Then
$Voisins+=1
EndIf
If $Grid[$i+1][$j-1]=1 Then
$Voisins+=1
EndIf
If $Voisins<2 Then $Grid[$i][$j]=0
If $Voisins>3 Then $Grid[$i][$j]=0
If $Voisins=3 Then $Grid[$i][$j]=1
If $Voisins=3 or $Voisins=2 Then $Grid[$i][$j]=1
ConsoleWrite($Voisins&@CRLF)
If $Grid[$i][$j]=1 Then
_GDIPlus_GraphicsDrawRect($graphHdl,$j,$i,1,1)
Else
_GDIPlus_GraphicsDrawRect($graphHdl,$j,$i,1,1,$hPen)
EndIf
Next
Next
Until GUIGetMsg()=-3
_Sort()
Func _Sort()
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($graphHdl)
_GDIPlus_Shutdown()
Exit
EndFunc