Conway's game of life

Blue_fighi

Utente Attivo
291
36
Salve a tutti,
Per la mia tesina di 5° superiore, come argomento d'esame, ho deciso di portare il famoso gioco "game of life". Per quanto riguarda informatica volevo sviluppare un programma che mostrava graficamente il gioco e su wikibook ho trovato l'algoritmo che mostra il gioco su riga di comando. Stavo pensando di adattarlo alle librerie grafiche wxwidget ma non riesco a capire alcune cose su questo algoritmo:
Codice:
[COLOR=#666666][FONT=monospace]// Author: BlakWolf, © 2004[/FONT][/COLOR] [COLOR=#666666]// Released under GPL v.2 or later, at your option[/COLOR]
 [COLOR=#339900]#include <iostream>[/COLOR]
 [COLOR=#339900]#include <cstdlib>[/COLOR]
 [COLOR=#339900]#include <vector>[/COLOR]
 [COLOR=#339900]#include <set> [/COLOR]
 
 [COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#0000DD]cout[/COLOR][COLOR=#008080];[/COLOR]
 [COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#0000DD]cin[/COLOR][COLOR=#008080];[/COLOR]
 [COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]dec[/COLOR][COLOR=#008080];[/COLOR]
 [COLOR=#0000FF]using[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]hex[/COLOR][COLOR=#008080];[/COLOR]
 
 [COLOR=#666666]// Osservabile e osservato contemporaneamente, gestisce le regole "biologiche"[/COLOR]
 [COLOR=#0000FF]class[/COLOR] Casella[COLOR=#008000]{[/COLOR]
 [COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
     [COLOR=#0000FF]enum[/COLOR] stato[COLOR=#008000]{[/COLOR]vuoto[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR],pieno[COLOR=#008000]}[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]typedef[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]set[/COLOR][COLOR=#000080]<[/COLOR]Casella [COLOR=#000040]*[/COLOR][COLOR=#000080]>[/COLOR] Container[COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]typedef[/COLOR] Container[COLOR=#008080]::[/COLOR][COLOR=#007788]iterator[/COLOR] Iterator[COLOR=#008080];[/COLOR] 
 
 [COLOR=#0000FF]private[/COLOR][COLOR=#008080]:[/COLOR]
     stato stato_[COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]int[/COLOR] vicini_futuri[COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]int[/COLOR] vicini[COLOR=#008080];[/COLOR]
     Container osservatori[COLOR=#008080];[/COLOR]
 
 [COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
     Casella[COLOR=#008000]([/COLOR] [COLOR=#0000FF]const[/COLOR] Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]stato[/COLOR] [COLOR=#000040]&[/COLOR] s [COLOR=#000080]=[/COLOR] Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]vuoto[/COLOR] [COLOR=#008000])[/COLOR] 
      [COLOR=#008080]:[/COLOR] stato_[COLOR=#008000]([/COLOR]s[COLOR=#008000])[/COLOR], vicini_futuri[COLOR=#008000]([/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR], vicini[COLOR=#008000]([/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]  
 
     [COLOR=#666666]//non copia gli osservatori[/COLOR]
     Casella[COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] Casella[COLOR=#000040]&[/COLOR] c[COLOR=#008000])[/COLOR][COLOR=#008080]:[/COLOR] vicini[COLOR=#008000]([/COLOR]c.[COLOR=#007788]vicini[/COLOR][COLOR=#008000])[/COLOR],
             vicini_futuri[COLOR=#008000]([/COLOR]c.[COLOR=#007788]vicini_futuri[/COLOR][COLOR=#008000])[/COLOR], stato_[COLOR=#008000]([/COLOR]c.[COLOR=#007788]stato_[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]
     [COLOR=#0000FF]virtual[/COLOR] ~Casella[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]  
 
     [COLOR=#666666]// Registra gli osservatori a cui notificare i cambiamenti[/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Registra[COLOR=#008000]([/COLOR]Casella[COLOR=#000040]&[/COLOR] c[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]&[/COLOR]c [COLOR=#000040]![/COLOR][COLOR=#000080]=[/COLOR] [COLOR=#0000DD]this[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
                osservatori.[COLOR=#007788]insert[/COLOR][COLOR=#008000]([/COLOR][COLOR=#000040]&[/COLOR]c[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         [COLOR=#008000]}[/COLOR]
     [COLOR=#008000]}[/COLOR] 
 
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Imposta[COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]stato[/COLOR][COLOR=#000040]&[/COLOR] s[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
        stato_[COLOR=#000080]=[/COLOR]s[COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Muori[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
       [COLOR=#0000FF]if[/COLOR][COLOR=#008000]([/COLOR]stato_[COLOR=#000080]==[/COLOR]pieno[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
        Imposta[COLOR=#008000]([/COLOR]Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]vuoto[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
        Notifica[COLOR=#008000]([/COLOR][COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
       [COLOR=#008000]}[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Nasci[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
        [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]stato_[COLOR=#000080]==[/COLOR]vuoto[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
         Imposta[COLOR=#008000]([/COLOR]Casella[COLOR=#008080]::[/COLOR][COLOR=#007788]pieno[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         Notifica[COLOR=#008000]([/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
        [COLOR=#008000]}[/COLOR]
     [COLOR=#008000]}[/COLOR] 
 
     [COLOR=#666666]// Aggiorna [/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Ciclo[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
       vicini[COLOR=#000080]=[/COLOR]vicini_futuri[COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#666666]// Regole del gioco[/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Verifica[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]stato_[COLOR=#000080]==[/COLOR]pieno[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
            [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]vicini[COLOR=#000080]<[/COLOR][COLOR=#0000DD]2[/COLOR] [COLOR=#000040]||[/COLOR] vicini[COLOR=#000080]>[/COLOR][COLOR=#0000DD]3[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#666666]// Modificare questa riga per cambiare le regole di morte[/COLOR]
               Muori[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         [COLOR=#008000]}[/COLOR][COLOR=#0000FF]else[/COLOR] [COLOR=#008000]{[/COLOR]
            [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]vicini[COLOR=#000080]==[/COLOR][COLOR=#0000DD]3[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#666666]// Modificare questa riga per cambiare le regole di nascita[/COLOR]
               Nasci[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
        [COLOR=#008000]}[/COLOR]
     [COLOR=#008000]}[/COLOR] 
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]bool[/COLOR] Leggi[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR][COLOR=#008000]{[/COLOR]
         [COLOR=#0000FF]return[/COLOR] stato_[COLOR=#000080]==[/COLOR]pieno[COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
 
 [COLOR=#0000FF]private[/COLOR][COLOR=#008080]:[/COLOR]
     [COLOR=#666666]// Notifica ai vicini nascita o morte[/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Notifica[COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] msg[COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR][COLOR=#008000]{[/COLOR]
         [COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR]Iterator it [COLOR=#000080]=[/COLOR] osservatori.[COLOR=#007788]begin[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR] it [COLOR=#000040]![/COLOR][COLOR=#000080]=[/COLOR] osservatori.[COLOR=#007788]end[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR] [COLOR=#000040]++[/COLOR]it[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
             [COLOR=#008000]([/COLOR][COLOR=#000040]*[/COLOR]it[COLOR=#008000])[/COLOR][COLOR=#000040]-[/COLOR][COLOR=#000080]>[/COLOR]RiceviNotifica[COLOR=#008000]([/COLOR]msg[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         [COLOR=#008000]}[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#666666]// Ricevi la notifica dai vicini[/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] RiceviNotifica[COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] msg[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
         vicini_futuri [COLOR=#000040]+[/COLOR][COLOR=#000080]=[/COLOR] msg[COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 [COLOR=#008000]}[/COLOR][COLOR=#008080];[/COLOR] 
 
 [COLOR=#666666]// Contenitore di caselle, che genera automaticamente le corrispondenze tra vicini. [/COLOR]
 [COLOR=#666666]// Gestisce le regole "topologiche"[/COLOR]
 [COLOR=#0000FF]class[/COLOR] Griglia[COLOR=#008000]{[/COLOR]
 [COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
     [COLOR=#0000FF]typedef[/COLOR] std[COLOR=#008080]::[/COLOR][COLOR=#007788]vector[/COLOR][COLOR=#000080]<[/COLOR]Casella[COLOR=#000080]>[/COLOR] Container[COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]typedef[/COLOR] Container[COLOR=#008080]::[/COLOR][COLOR=#007788]iterator[/COLOR] Iterator[COLOR=#008080];[/COLOR]
 
 [COLOR=#0000FF]private[/COLOR][COLOR=#008080]:[/COLOR]
     [COLOR=#0000FF]int[/COLOR] righe_[COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]int[/COLOR] colonne_[COLOR=#008080];[/COLOR]
     Container griglia[COLOR=#008080];[/COLOR]
 
 [COLOR=#0000FF]public[/COLOR][COLOR=#008080]:[/COLOR]
     [COLOR=#0000FF]virtual[/COLOR] ~Griglia[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR][COLOR=#008000]}[/COLOR]
 
     Griglia[COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] righe, [COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] colonne[COLOR=#008000])[/COLOR]
      [COLOR=#008080]:[/COLOR]righe_[COLOR=#008000]([/COLOR]righe[COLOR=#008000])[/COLOR], colonne_[COLOR=#008000]([/COLOR]colonne[COLOR=#008000])[/COLOR]    [COLOR=#008000]{[/COLOR]
       [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]righe_ [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]5[/COLOR][COLOR=#008000])[/COLOR] righe_[COLOR=#000080]=[/COLOR][COLOR=#0000DD]5[/COLOR][COLOR=#008080];[/COLOR]
       [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]colonne_ [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]5[/COLOR][COLOR=#008000])[/COLOR] righe_[COLOR=#000080]=[/COLOR][COLOR=#0000DD]5[/COLOR][COLOR=#008080];[/COLOR]
       griglia.[COLOR=#007788]reserve[/COLOR][COLOR=#008000]([/COLOR]righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
       griglia.[COLOR=#007788]resize[/COLOR][COLOR=#008000]([/COLOR]righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]inline[/COLOR] Casella[COLOR=#000040]&[/COLOR] operator[COLOR=#008000][[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR] n[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
       [COLOR=#0000FF]return[/COLOR] griglia[COLOR=#008000][[/COLOR]n[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Cicla[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]    
       [COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] i [COLOR=#000080]=[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] i [COLOR=#000080]<[/COLOR] righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]i[COLOR=#008000])[/COLOR]
           griglia[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR].[COLOR=#007788]Ciclo[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]void[/COLOR] Verifica[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
       [COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] i [COLOR=#000080]=[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] i [COLOR=#000080]<[/COLOR] righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]i[COLOR=#008000])[/COLOR]
           griglia[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR].[COLOR=#007788]Verifica[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Imposta [COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] pos[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]>=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#000040]&&[/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]<[/COLOR] griglia.[COLOR=#007788]size[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR]           
           griglia[COLOR=#008000][[/COLOR]pos[COLOR=#008000]][/COLOR].[COLOR=#007788]Nasci[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Resetta [COLOR=#008000]([/COLOR][COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR][COLOR=#000040]&[/COLOR] pos[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]>=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#000040]&&[/COLOR][COLOR=#008000]([/COLOR]pos [COLOR=#000080]<[/COLOR] griglia.[COLOR=#007788]size[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR]      
           griglia[COLOR=#008000][[/COLOR]pos[COLOR=#008000]][/COLOR].[COLOR=#007788]Muori[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#008000]}[/COLOR]
 
 
     [COLOR=#666666]// Modificare questa routine per cambiare le regole topologiche di vicinanza[/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]void[/COLOR] Genera[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
       [COLOR=#0000FF]bool[/COLOR] primo, ultimo[COLOR=#008080];[/COLOR]
       [COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] indice[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] indice[COLOR=#000080]<[/COLOR] righe_[COLOR=#000040]*[/COLOR]colonne_[COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]indice[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
         primo [COLOR=#000080]=[/COLOR] [COLOR=#008000]([/COLOR] [COLOR=#008000]([/COLOR]indice[COLOR=#000040]%[/COLOR]colonne_[COLOR=#008000])[/COLOR] [COLOR=#000080]==[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         ultimo [COLOR=#000080]=[/COLOR] [COLOR=#008000]([/COLOR] [COLOR=#008000]([/COLOR]indice[COLOR=#000040]%[/COLOR]colonne_[COLOR=#008000])[/COLOR] [COLOR=#000080]==[/COLOR] colonne_[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
 
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]indice [COLOR=#000080]>[/COLOR] colonne_[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]      
           [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]primo[COLOR=#008000])[/COLOR]
              griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR]colonne_ [COLOR=#000040]-[/COLOR] [COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
           griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR]colonne_[COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
           [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]ultimo[COLOR=#008000])[/COLOR]
              griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR]colonne_ [COLOR=#000040]+[/COLOR] [COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         [COLOR=#008000]}[/COLOR]
 
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]primo[COLOR=#008000])[/COLOR]
           griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]ultimo[COLOR=#008000])[/COLOR]
           griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
 
         [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]indice [COLOR=#000080]<[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR]colonne_[COLOR=#008000])[/COLOR][COLOR=#000040]*[/COLOR][COLOR=#008000]([/COLOR]righe_[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
           [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]ultimo[COLOR=#008000])[/COLOR]
             griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR]colonne_[COLOR=#000040]+[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
           griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR]colonne_[COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]      
           [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#000040]![/COLOR]primo[COLOR=#008000])[/COLOR]
             griglia[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Registra[/COLOR][COLOR=#008000]([/COLOR]griglia[COLOR=#008000][[/COLOR]indice[COLOR=#000040]+[/COLOR]colonne_[COLOR=#000040]-[/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
         [COLOR=#008000]}[/COLOR] 
       [COLOR=#008000]}[/COLOR] 
     [COLOR=#008000]}[/COLOR]
 
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR] Righe[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#008000]{[/COLOR] [COLOR=#0000FF]return[/COLOR] righe_[COLOR=#008080];[/COLOR] [COLOR=#008000]}[/COLOR]
     [COLOR=#0000FF]inline[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#0000FF]int[/COLOR] Colonne[COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#0000FF]const[/COLOR] [COLOR=#008000]{[/COLOR] [COLOR=#0000FF]return[/COLOR] colonne_[COLOR=#008080];[/COLOR] [COLOR=#008000]}[/COLOR]
 [COLOR=#008000]}[/COLOR][COLOR=#008080];[/COLOR] 
 
 
 [COLOR=#666666]//Stampa a schermo la griglia. Gestione statica delle dimensioni. Per variare, utilizzare griglia.Righe() e Colonne()[/COLOR]
 [COLOR=#0000FF]void[/COLOR] Stampa[COLOR=#008000]([/COLOR] Griglia[COLOR=#000040]&[/COLOR] g[COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
   [COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"[COLOR=#000099][B]\n[/B][/COLOR][COLOR=#000099][B]\n[/B][/COLOR]"[/COLOR][COLOR=#008080];[/COLOR]
   [COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"+--------------------+[COLOR=#000099][B]\n[/B][/COLOR]|"[/COLOR][COLOR=#008080];[/COLOR]
   [COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] indice[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR]indice [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]400[/COLOR][COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]indice[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
     [COLOR=#0000FF]bool[/COLOR] ultimo [COLOR=#000080]=[/COLOR] [COLOR=#008000]([/COLOR] [COLOR=#008000]([/COLOR]indice[COLOR=#000040]%[/COLOR][COLOR=#800080]20[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#000080]==[/COLOR] [COLOR=#0000DD]19[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     g[COLOR=#008000][[/COLOR]indice[COLOR=#008000]][/COLOR].[COLOR=#007788]Leggi[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080]?[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"O"[/COLOR][COLOR=#008080]:[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]" "[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]ultimo[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
       [COLOR=#0000FF]if[/COLOR] [COLOR=#008000]([/COLOR]indice [COLOR=#000040]![/COLOR][COLOR=#000080]=[/COLOR][COLOR=#0000DD]399[/COLOR][COLOR=#008000])[/COLOR]
         [COLOR=#008000]{[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"|[COLOR=#000099][B]\n[/B][/COLOR]|"[/COLOR][COLOR=#008080];[/COLOR][COLOR=#008000]}[/COLOR]
       [COLOR=#0000FF]else[/COLOR]
         [COLOR=#008000]{[/COLOR][COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"|[COLOR=#000099][B]\n[/B][/COLOR]"[/COLOR][COLOR=#008080];[/COLOR][COLOR=#008000]}[/COLOR]
     [COLOR=#008000]}[/COLOR]
   [COLOR=#008000]}[/COLOR]
   [COLOR=#0000DD]cout[/COLOR] [COLOR=#000080]<<[/COLOR] [COLOR=#FF0000]"+--------------------+[COLOR=#000099][B]\n[/B][/COLOR]"[/COLOR][COLOR=#008080];[/COLOR]
 [COLOR=#008000]}[/COLOR]
 
 
 [COLOR=#0000FF]int[/COLOR] main [COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008000]{[/COLOR]
   Griglia griglia[COLOR=#008000]([/COLOR][COLOR=#0000DD]20[/COLOR],[COLOR=#0000DD]20[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#008080];[/COLOR]
   griglia.[COLOR=#007788]Genera[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
 
   [COLOR=#666666]// Inizializza la griglia casualmente, con fattore di [/COLOR]
   [COLOR=#666666]// riempimento un ottavo.[/COLOR]
   [COLOR=#666666]// Gestione statica delle dimensioni. Per variare, utilizzare griglia.Righe() e Colonne()[/COLOR]
   [COLOR=#0000DD]srand[/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000DD]time[/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
   [COLOR=#0000FF]for[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000FF]int[/COLOR] i[COLOR=#000080]=[/COLOR][COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] i [COLOR=#000080]<[/COLOR] [COLOR=#0000DD]100[/COLOR][COLOR=#008080];[/COLOR][COLOR=#000040]++[/COLOR]i[COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
     griglia.[COLOR=#007788]Imposta[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000]([/COLOR][COLOR=#0000DD]rand[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#000080]>>[/COLOR][COLOR=#0000DD]4[/COLOR][COLOR=#008000])[/COLOR] [COLOR=#000040]%[/COLOR][COLOR=#800080]400[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
   [COLOR=#008000]}[/COLOR]
 
   [COLOR=#0000FF]while[/COLOR] [COLOR=#008000]([/COLOR][COLOR=#0000DD]1[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008000]{[/COLOR]
     Stampa[COLOR=#008000]([/COLOR]griglia[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]   
     griglia.[COLOR=#007788]Cicla[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]   
     griglia.[COLOR=#007788]Verifica[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
     [COLOR=#666666]// Aspetta la pressione di enter[/COLOR]
     [COLOR=#0000DD]cin[/COLOR].[COLOR=#007788]get[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
   [COLOR=#008000]}[/COLOR]
   [COLOR=#666666]// Mai raggiunto[/COLOR]
   [COLOR=#0000FF]return[/COLOR] [COLOR=#0000DD]0[/COLOR][COLOR=#008080];[/COLOR] [COLOR=#008000][FONT=monospace]}[/FONT][/COLOR]

perché sopra usa std::hex e std::dec? e le righe "typedef std::set<Casella *> Container; typedef Container::iterator Iterator;" a che servono?

- - - Updated - - -

Ho creato un algoritmo io molto più semplice da capire ma funziona. L'unica cosa che volevo capire di questo algoritmo è come fa a inizializzare le celle vive e morte.
Utilizza queste righe da quel che ho capito:
inline void Imposta (const int& pos) {
if ((pos >=0)&&(pos < griglia.size()))
griglia[pos].Nasci()
for (int i=0; i < 100;++i){ griglia.Imposta((rand()>>4) %400);
}

scrive poi un commento: // Inizializza la griglia casualmente, con fattore di riempimento un ottavo.
Non ho capito che vuol dire fattore di riempimento un ottavo
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
perché sopra usa std::hex e std::dec? e le righe "typedef std::set<Casella *> Container; typedef Container::iterator Iterator;" a che servono?
Sono importati nel namespace globale ma mai usati, quindi non servono. typedef.
 
  • Mi piace
Reazioni: Blue_fighi

Blue_fighi

Utente Attivo
291
36
Mi servirebbe anche una mano con le wxwidget in realtà...Non so bene come rappresentare la griglia visivamente (io so solo disegnare oggetti sopra al panel). Non c'è un modo per fare una griglia che colori le sue caselle automaticamente? (non so se mi sono spiegato)
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili