Vantaggi svantaggi

1.0
This commit is contained in:
Giorgio Croci 2017-05-27 07:52:47 +02:00
parent 65136ffab7
commit 60bbe2da1c

65
main.go
View file

@ -6,7 +6,6 @@ import (
"time" "time"
"os" "os"
"os/exec" "os/exec"
) )
//VARIABILI //VARIABILI
@ -14,16 +13,16 @@ var def int
var Matrix [][]*Element var Matrix [][]*Element
var Altezza int var Altezza int
var Larghezza int var Larghezza int
var SaluteIniziale int = 50 var SaluteIniziale [2]int
var CostoMovIniziale int = 5 var CostoMovIniziale [2]int
var CostoSexIniziale int = 50 var CostoSexIniziale [2]int
var EvoluzioneIniziale int = 0 var EvoluzioneIniziale [2]int
var PremuraIniziale int = 10 var PremuraIniziale int = 10
var AgeMaxInizio int = 30 var AgeMaxInizio [2]int
var Clock uint var Clock uint
var NumClock uint var NumClock uint
var LivelloSblocco int = 1 var LivelloSblocco [2]int
var Possibilita int = 5 var Possibilita [2]int
var ValoreNutrizionale int = 10 var ValoreNutrizionale int = 10
var ValoreNutrizionaleCarcassa int = 5 var ValoreNutrizionaleCarcassa int = 5
var Supestiti bool=true var Supestiti bool=true
@ -56,27 +55,35 @@ func main() { //FUNZIONE MAIN
fmt.Scan(&def) fmt.Scan(&def)
if def!=1{ if def!=1{
fmt.Println("Inserisci la salute iniziale: ") fmt.Println("Inserisci la salute iniziale: ")
fmt.Scan(&SaluteIniziale) fmt.Scan(&SaluteIniziale[0])
fmt.Scan(&SaluteIniziale[1])
fmt.Println("Inserisci il costo di uno spostamento iniziale (riduce l'energia ad ogni movimento) [default = 5]: ") fmt.Println("Inserisci il costo di uno spostamento iniziale (riduce l'energia ad ogni movimento) [default = 5]: ")
fmt.Scan(&CostoMovIniziale) fmt.Scan(&CostoMovIniziale[0])
fmt.Scan(&CostoMovIniziale[1])
fmt.Println("Inserisci il costo di una riproduzione iniziale (riduce l'energia ad ogni riproduzione) [default = 50]: ") fmt.Println("Inserisci il costo di una riproduzione iniziale (riduce l'energia ad ogni riproduzione) [default = 50]: ")
fmt.Scan(&CostoSexIniziale) fmt.Scan(&CostoSexIniziale[0])
fmt.Scan(&CostoSexIniziale[1])
fmt.Println("Inserisci i secondi di vita massimi (limita la durata della vita) [default = 30]: ") fmt.Println("Inserisci i secondi di vita massimi (limita la durata della vita) [default = 30]: ")
fmt.Scan(&AgeMaxInizio) fmt.Scan(&AgeMaxInizio[0])
fmt.Scan(&AgeMaxInizio[1])
fmt.Println("Inserisci il valore nutrizionale del cibo (di quanto aumenta l'energia di chi lo mangia) [default = 10]: ") fmt.Println("Inserisci il valore nutrizionale del cibo (di quanto aumenta l'energia di chi lo mangia) [default = 10]: ")
fmt.Scan(&ValoreNutrizionale) fmt.Scan(&ValoreNutrizionale)
fmt.Println("Inserisci il valore nutrizionale delle carcasse (di quanto aumenta l'energia di chi lo mangia) [default = 5]: ") fmt.Println("Inserisci il valore nutrizionale delle carcasse (di quanto aumenta l'energia di chi lo mangia) [default = 5]: ")
fmt.Scan(&ValoreNutrizionaleCarcassa) fmt.Scan(&ValoreNutrizionaleCarcassa)
fmt.Println("Inserisci il grado di evoluzione iniziale (se maggiore di zero migliora le prestazioni vitali)[default = 0]: ") fmt.Println("Inserisci il grado di evoluzione iniziale (se maggiore di zero migliora le prestazioni vitali)[default = 0]: ")
fmt.Scan(&EvoluzioneIniziale) fmt.Scan(&EvoluzioneIniziale[0])
fmt.Scan(&EvoluzioneIniziale[1])
fmt.Println("Inserisci la possibilità di evoluzione (numero da 1 a 10) [default = 5]: ") fmt.Println("Inserisci la possibilità di evoluzione (numero da 1 a 10) [default = 5]: ")
fmt.Scan(&Possibilita) fmt.Scan(&Possibilita[0])
if(Possibilita<1 || Possibilita>10) { if(Possibilita[0]<1 || Possibilita[0]>10) {
Possibilita=1 Possibilita[0]=1}
fmt.Scan(&Possibilita[1])
if(Possibilita[1]<1 || Possibilita[1]>10) {
Possibilita[1]=1
} }
fmt.Println("Inserisci il livello di evoluzione visivo base (il livello evolutivo minimo che permette di vedere il cibo vicino)[default = 1]: ") fmt.Println("Inserisci il livello di evoluzione visivo base (il livello evolutivo minimo che permette di vedere il cibo vicino)[default = 1]: ")
fmt.Scan(&LivelloSblocco) fmt.Scan(&LivelloSblocco[0])
fmt.Scan(&LivelloSblocco[1])
} }
Matrix = make([][]*Element, Altezza) Matrix = make([][]*Element, Altezza)
for i := range Matrix { // inizializzazione matrice for i := range Matrix { // inizializzazione matrice
@ -88,13 +95,14 @@ func main() { //FUNZIONE MAIN
Matrix[i][j] = new(Element) // insetto Matrix[i][j] = new(Element) // insetto
Matrix[i][j].IsFood = false Matrix[i][j].IsFood = false
Matrix[i][j].Age = 0 Matrix[i][j].Age = 0
Matrix[i][j].Health = SaluteIniziale
Matrix[i][j].CostoMov = CostoMovIniziale
Matrix[i][j].CostoSex = CostoSexIniziale
Matrix[i][j].Evoluzione = EvoluzioneIniziale
Matrix[i][j].Premura = PremuraIniziale
Matrix[i][j].AgeMax = AgeMaxInizio
Matrix[i][j].Razza = rand.Intn(2) Matrix[i][j].Razza = rand.Intn(2)
Matrix[i][j].Health = SaluteIniziale[Matrix[i][j].Razza]
Matrix[i][j].CostoMov = CostoMovIniziale[Matrix[i][j].Razza]
Matrix[i][j].CostoSex = CostoSexIniziale[Matrix[i][j].Razza]
Matrix[i][j].Evoluzione = EvoluzioneIniziale[Matrix[i][j].Razza]
Matrix[i][j].Premura = PremuraIniziale
Matrix[i][j].AgeMax = AgeMaxInizio[Matrix[i][j].Razza]
case 1: case 1:
Matrix[i][j] = nil //vuota Matrix[i][j] = nil //vuota
case 2: case 2:
@ -131,9 +139,6 @@ func aggiorna() { //FUNZIONE AGGIORNA: chiama la funzione muovi
} }
fmt.Printf("\nSituazione dopo %d movimenti:\n", NumClock) fmt.Printf("\nSituazione dopo %d movimenti:\n", NumClock)
stampaMatrice()
//giraMatrice()
} }
func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli oggetti in tabella // h verticale, w orizzontale func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli oggetti in tabella // h verticale, w orizzontale
@ -172,7 +177,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
var direzCasVert int var direzCasVert int
var trovato bool = false var trovato bool = false
if Matrix[h][w].Evoluzione>=LivelloSblocco { if Matrix[h][w].Evoluzione>=LivelloSblocco[Matrix[h][w].Razza] {
for i:=0;i<8;i++ { for i:=0;i<8;i++ {
switch i { switch i {
case 0: case 0:
@ -251,7 +256,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov
Matrix[h][w] = nil Matrix[h][w] = nil
if rand.Intn(Possibilita) == 0 { //se ha fortuna (o sfortuna) si evolve if rand.Intn(Possibilita[Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza]) == 0 { //se ha fortuna (o sfortuna) si evolve
if rand.Intn(3) == 0 { if rand.Intn(3) == 0 {
Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione-- Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione--
Matrix[nuovaPosizioneH][nuovaPosizioneW].AgeMax-=5 Matrix[nuovaPosizioneH][nuovaPosizioneW].AgeMax-=5
@ -262,7 +267,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
} }
if (Matrix[nuovaPosizioneH][nuovaPosizioneW].Health-(Matrix[nuovaPosizioneH][nuovaPosizioneW].Premura)*10)>Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoSex { //se ha energia a sufficienza per riprodursi if (Matrix[nuovaPosizioneH][nuovaPosizioneW].Health-(Matrix[nuovaPosizioneH][nuovaPosizioneW].Premura)*10)>Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoSex { //se ha energia a sufficienza per riprodursi
Matrix[h][w] = Costruttore(Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza, Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione, Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov, Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoSex, Matrix[nuovaPosizioneH][nuovaPosizioneW].Premura, SaluteIniziale, AgeMaxInizio) Matrix[h][w] = Costruttore(Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza, Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione, Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov, Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoSex, Matrix[nuovaPosizioneH][nuovaPosizioneW].Premura, SaluteIniziale[Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza], AgeMaxInizio[Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza])
} }
} }