From e6f14040830b3a73e90380534b2bacead1cd5a89 Mon Sep 17 00:00:00 2001 From: Giorgio Croci Date: Fri, 26 May 2017 16:54:51 +0200 Subject: [PATCH] Cose --- element.go | 4 ++-- main.go | 41 +++++++++++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/element.go b/element.go index c82d997..4d00568 100644 --- a/element.go +++ b/element.go @@ -6,7 +6,7 @@ type Element struct { //struttura che contiene sia cibo sia amebe IsFood bool //se il contenuto della cella è cibo Health int //la sua vita Age int //la sua età - Razza string //per distiguere amici da nemici + Razza int //per distiguere amici da nemici Evoluzione int //se evolve in positivo avrà un bonus in attacco che viene sommato a Health CostoMov int //quanta energia spende per muoversi CostoSex int //quanto spende per riprodursi @@ -17,7 +17,7 @@ func (e Element) String() string { return fmt.Sprintf("", e.IsFood, e.Health, e.Age) } -func Costruttore(razza string, evoluzione int, costomov int, costosex int, premura int, salute int) *Element { +func Costruttore(razza int, evoluzione int, costomov int, costosex int, premura int, salute int) *Element { nuovo := new(Element) nuovo.IsFood=false nuovo.Health=salute diff --git a/main.go b/main.go index 3603a99..50a4505 100644 --- a/main.go +++ b/main.go @@ -12,12 +12,15 @@ import ( var Matrix [][]*Element var Altezza int var Larghezza int -var SaluteIniziale int +var SaluteIniziale int = 50 +var CostoMovIniziale int = 5 +var CostoSexIniziale int = 100 +var EvoluzioneIniziale int = 0 +var PremuraIniziale int = 100 var Clock uint var NumClock uint func main() { //FUNZIONE MAIN - SaluteIniziale = 50 Clock = 1 NumClock = 0 rand.Seed(time.Now().UTC().UnixNano()) //inizializzazione rand @@ -42,6 +45,11 @@ func main() { //FUNZIONE MAIN Matrix[i][j].IsFood = false 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].Razza = rand.Intn(2) case 1: Matrix[i][j] = nil //vuota case 2: @@ -79,6 +87,10 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli if elemento == nil || elemento.IsFood { //controllo se 'elemento' è cibo o un altro essere return } + + if elemento.Health<=0 { + Matrix[h][w] = nil + } direzCasOriz := rand.Intn(3) //numero da 0 a 2 direzCasOriz-- direzCasVert := rand.Intn(3) @@ -90,12 +102,13 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli nuovaPosizioneW >= Larghezza || nuovaPosizioneW < 0 { //se esce dai bordi return } - - if tmpNewElem := Matrix[nuovaPosizioneH][nuovaPosizioneW]; tmpNewElem != nil { + tmpNewElem := Matrix[nuovaPosizioneH][nuovaPosizioneW] + if tmpNewElem != nil { if tmpNewElem.Razza != elemento.Razza { //se non è dalla stessa razza if tmpNewElem.IsFood || (tmpNewElem.Health+tmpNewElem.Evoluzione) < (elemento.Health+elemento.Evoluzione) { // se e' cibo o un insetto piu debole elemento.Health += tmpNewElem.Health //prelevamento energia essere fagocitato - Matrix[nuovaPosizioneH][nuovaPosizioneW] = elemento //inglobamento essere peritos + Matrix[nuovaPosizioneH][nuovaPosizioneW] = elemento //inglobamento essere perito + elemento.Health -= elemento.CostoMov } else { Matrix[h][w] = nil //perdita nel combattimento per la sopravvivenza tmpNewElem.Health += elemento.Health //il nemico prende l'energia @@ -106,20 +119,20 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli } } } else { //si muove sulla nuova casella - Matrix[nuovaPosizioneH][nuovaPosizioneW] = elemento + Matrix[nuovaPosizioneH][nuovaPosizioneW] = Matrix[h][w] Matrix[h][w] = nil - elemento.Health -= elemento.CostoMov + Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov if rand.Intn(10) == 0 { //se ha fortuna (o sfortuna) si evolve if rand.Intn(3) == 0 { - elemento.Evoluzione-- + Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione-- } else { - elemento.Evoluzione++ + Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione++ } } - if (elemento.Health-elemento.Premura)>elemento.CostoSex { //se ha energia a sufficienza per riprodursi - Matrix[h][w] = Costruttore(elemento.Razza, elemento.Evoluzione, elemento.CostoMov, elemento.CostoSex, elemento.Premura, SaluteIniziale) + if (Matrix[nuovaPosizioneH][nuovaPosizioneW].Health-Matrix[nuovaPosizioneH][nuovaPosizioneW].Premura)>Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoSex { //se ha energia a sufficienza per riprodursi + //Matrix[h][w] = Costruttore(elemento.Razza, elemento.Evoluzione, elemento.CostoMov, elemento.CostoSex, elemento.Premura, SaluteIniziale) } } @@ -145,12 +158,12 @@ func stampaMatrice() { for i := 0; i < Altezza; i++ { for j := 0; j < Larghezza; j++ { if Matrix[i][j] == nil { - fmt.Printf("-- ") + fmt.Printf(" -- ") } else { if Matrix[i][j].IsFood { - fmt.Printf("CC ") + fmt.Printf(" CC ") } else { - fmt.Printf("%d ", Matrix[i][j].Health) + fmt.Printf("%d %d ",Matrix[i][j].Razza, Matrix[i][j].Health) } } }