Gioco della vita ingegnoso

« Older   Newer »
  Share  
bradipooso
CAT_IMG Posted on 7/3/2012, 15:01     +1   -1




C'è poco da scrivere lol, ho usato i checkbox per poter interagire col gioco.
Per cambiare il tempo di refresh si deve cambiare una delle prime linee:
CODICE
Dim $refresh = 1000

[pigrizia di fare un input asd]
sorcio:
CODICE
#include <GUIConstants.au3>
#Include <GuiStatusBar.au3>

Opt("GUIOnEventMode", 1)

Dim $refresh = 1000
Dim $cam=0, $nas=0, $mor=0, $vcam=0, $check[30][25], $vicine[30][25], $b=0, $sparti[4] = [150, 300, 450, 500], $sst[4] = ["Generazione: 0", "Nascite: 0", "Decessi: 0", "Refresh: "&$refresh&"ms"], $gen=0

$gui = GUICreate("GdV", 610, 580)

$genera = GUICtrlCreateButton("Genera a caso", 10, 10, 100, 30)
$inizia = GUICtrlCreateButton("Inizia", 120, 10, 100, 30)
$stop = GUICtrlCreateButton("Ferma", 230, 10, 100, 30)
GUICtrlSetState($stop, $GUI_DISABLE)        

$sbar = _GUICtrlStatusBar_Create($gui, $sparti, $sst)

GUISetState(@SW_SHOW)

For $y = 50 To 530 Step 20
       $a=0
   For $x = 10 To 590 Step 20
       $check[$a][$b] = GUICtrlCreateCheckbox("", $x, $y, 20, 20)
               $a+=1
   Next
       $b+=1
Next

GUISetOnEvent($GUI_EVENT_CLOSE, "_esci")
GUICtrlSetOnEvent($inizia, "_inizia")
GUICtrlSetOnEvent($stop, "_ferma")
GUICtrlSetOnEvent($genera, "_genera")

While 1
Sleep(100)
WEnd

Func _esci()        
       Exit
EndFunc

Func _inizia()
       GUICtrlSetState($genera, $GUI_DISABLE)        
   GUICtrlSetState($inizia, $GUI_DISABLE)        
       GUICtrlSetState($stop, $GUI_ENABLE)
       AdlibRegister("_ngen", $refresh)
EndFunc

Func _ferma()        
       GUICtrlSetState($inizia, $GUI_ENABLE)        
       GUICtrlSetState($genera, $GUI_ENABLE)
       AdlibUnRegister("_ngen")
EndFunc

Func _genera()        
               For $y = 0 To 24
           For $x = 0 To 29
                               GUICtrlSetState($check[$x][$y], $GUI_UNCHECKED)
               Next
               Next        
       
   $vive = Random(250, 550, 1)
   For $i=1 To $vive
           GUICtrlSetState($check[Random(0, 29, 1)][Random(0, 24, 1)], $GUI_CHECKED)
   Next
   $cam=0
   $nas=0
   $mor=0
   $gen=0        
   _GUICtrlStatusBar_SetText($sbar, "Generazione: "&$gen)        
       _GUICtrlStatusBar_SetText($sbar, "Nascite: "&$nas, 1)
       _GUICtrlStatusBar_SetText($sbar, "Decessi: "&$mor, 2)        
EndFunc

Func _ngen()
   $gen+=1
       For $y = 0 To 24
       For $x = 0 To 29
                       $vicine[$x][$y]=0
                       For $b=$y-1 To $y+1
                           For $a=$x-1 To $x+1
                                       If $a>-1 And $b>-1 And $a<30 And $b<24 Then        
                                           If GUICtrlRead($check[$a][$b]) = $GUI_CHECKED Then
                                                       If $b<>$y Or $a<>$x Then
                                                           $vicine[$x][$y]+=1
                                                       EndIf
                                               EndIf        
                   EndIf
               Next
                       Next
       Next
       Next

       For $y=0 To 24
       For $x=0 To 29
                       If GUICtrlRead($check[$x][$y])=$GUI_CHECKED And $vicine[$x][$y]<>2 And $vicine[$x][$y]<>3 Then
                               GUICtrlSetState($check[$x][$y], $GUI_UNCHECKED)        
               $cam+=1        
               $mor+=1                                
                       ElseIf GUICtrlRead($check[$x][$y])=$GUI_UNCHECKED        And $vicine[$x][$y]=3 Then
                               GUICtrlSetState($check[$x][$y], $GUI_CHECKED)        
                               $cam+=1        
               $nas+=1                                
                       EndIf
                       $vicine[$x][$y]=0
       Next
   Next
   _GUICtrlStatusBar_SetText($sbar, "Generazione: "&$gen)        
       _GUICtrlStatusBar_SetText($sbar, "Nascite: "&$nas, 1)
       _GUICtrlStatusBar_SetText($sbar, "Decessi: "&$mor, 2)
       $vcam=$cam
       If $cam = 0 Then
           AdlibUnRegister("_ngen")        
               GUICtrlSetState($genera, $GUI_ENABLE)        
       GUICtrlSetState($inizia, $GUI_ENABLE)        
           GUICtrlSetState($stop, $GUI_DISABLE)
           MsgBox(0, "Gioco della vita", "Le celle si sono estinte o stabilizzate in "&$gen&" generazioni.")
       EndIf        
       $cam=0
EndFunc
 
Top
FrontBack
CAT_IMG Posted on 7/3/2012, 15:21     +1   -1




Non mettendo il download mi hai fatto risparmiare 20 minuti della mia vita e qualche insulto al SecureFile...
grazie! XD
 
Top
*Sym98*
CAT_IMG Posted on 7/3/2012, 15:25     +1   -1




CITAZIONE (FrontBack @ 7/3/2012, 15:21) 
Non mettendo il download mi hai fatto risparmiare 20 minuti della mia vita e qualche insulto al SecureFile...
grazie! XD

Se mi dai 20 euro non posto il download del mio prossimo programma. :troll:
 
Top
bradipooso
CAT_IMG Posted on 7/3/2012, 15:30     +1   -1




CITAZIONE (FrontBack @ 7/3/2012, 15:21) 
Non mettendo il download mi hai fatto risparmiare 20 minuti della mia vita e qualche insulto al SecureFile...
grazie! XD

XD
 
Top
»Master
CAT_IMG Posted on 7/3/2012, 17:31     +1   -1




ottimo xD
dovrei mettere anch'io quei pulsanti al mio, pero' ho avuto pigrizia xD
 
Top
*Sym98*
CAT_IMG Posted on 8/3/2012, 07:44     +1   -1




Ingegnoso. XD
Ho ammazzato più di 9000 celle, poi ho dovuto spegnere il pc. asd

Edited by *Sym98* - 8/3/2012, 13:40
 
Top
5 replies since 7/3/2012, 15:01   191 views
  Share