Funge in parte

This commit is contained in:
Giorgio Croci 2017-05-26 17:54:24 +02:00
parent c19a47c592
commit c2ccb780dd

55
main.go
View file

@ -90,6 +90,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
if elemento.Health<=0 { if elemento.Health<=0 {
Matrix[h][w] = nil Matrix[h][w] = nil
return
} }
direzCasOriz := rand.Intn(3) //numero da 0 a 2 direzCasOriz := rand.Intn(3) //numero da 0 a 2
direzCasOriz-- direzCasOriz--
@ -103,18 +104,16 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
return return
} }
tmpNewElem := Matrix[nuovaPosizioneH][nuovaPosizioneW] if Matrix[nuovaPosizioneH][nuovaPosizioneW] != nil {
if Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza != Matrix[h][w].Razza { //se non è dalla stessa razza
if tmpNewElem != nil { if Matrix[nuovaPosizioneH][nuovaPosizioneW].IsFood || (Matrix[nuovaPosizioneH][nuovaPosizioneW].Health+Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione) < (Matrix[h][w].Health+elemento.Evoluzione) { // se e' cibo o un insetto piu debole
if tmpNewElem.Razza != elemento.Razza { //se non è dalla stessa razza Matrix[h][w].Health += Matrix[nuovaPosizioneH][nuovaPosizioneW].Health //prelevamento energia essere fagocitato
if tmpNewElem.IsFood || (tmpNewElem.Health+tmpNewElem.Evoluzione) < (elemento.Health+elemento.Evoluzione) { // se e' cibo o un insetto piu debole Matrix[nuovaPosizioneH][nuovaPosizioneW] = Matrix[h][w] //inglobamento essere perito
elemento.Health += tmpNewElem.Health //prelevamento energia essere fagocitato Matrix[h][w] = nil
tmpNewElem = elemento //inglobamento essere perito Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov
elemento = nil
tmpNewElem.Health -= tmpNewElem.CostoMov
} else { //perdita nel combattimento per la sopravvivenza } else { //perdita nel combattimento per la sopravvivenza
tmpNewElem.Health += elemento.Health //il nemico prende l'energia Matrix[nuovaPosizioneH][nuovaPosizioneW].Health += Matrix[h][w].Health //il nemico prende l'energia
elemento = nil Matrix[h][w] = nil
} }
} else { //se sono amici } else { //se sono amici
if nuovaPosizioneH == h && nuovaPosizioneW == w { //se cerca di mangiare il suo amico if nuovaPosizioneH == h && nuovaPosizioneW == w { //se cerca di mangiare il suo amico
@ -122,41 +121,25 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
} }
} }
} else { //si muove sulla nuova casella } else { //si muove sulla nuova casella
tmpNewElem = elemento Matrix[nuovaPosizioneH][nuovaPosizioneW] = Matrix[h][w]
elemento = nil Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov
tmpNewElem.Health -= tmpNewElem.CostoMov Matrix[h][w] = nil
/*if rand.Intn(10) == 0 { //se ha fortuna (o sfortuna) si evolve if rand.Intn(10) == 0 { //se ha fortuna (o sfortuna) si evolve
if rand.Intn(3) == 0 { if rand.Intn(3) == 0 {
tmpNewElem.Evoluzione-- Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione--
} else { } else {
tmpNewElem.Evoluzione++ Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione++
}
} }
}*/
if (tmpNewElem.Health-tmpNewElem.Premura)>tmpNewElem.CostoSex { //se ha energia a sufficienza per riprodursi if (Matrix[nuovaPosizioneH][nuovaPosizioneW].Health-Matrix[nuovaPosizioneH][nuovaPosizioneW].Premura)>Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoSex { //se ha energia a sufficienza per riprodursi
//tmpNewElem = Costruttore(elemento.Razza, elemento.Evoluzione, elemento.CostoMov, elemento.CostoSex, elemento.Premura, SaluteIniziale) //Matrix[nuovaPosizioneH][nuovaPosizioneW] = Costruttore(Matrix[h][w].Razza, Matrix[h][w].Evoluzione, Matrix[h][w].CostoMov, Matrix[h][w].CostoSex, Matrix[h][w].Premura, SaluteIniziale)
} }
} }
} }
/*func stampaMatrice2() {
for i := 0; i < Altezza; i++ {
fmt.Printf("Riga %d:\n", i)
for j := 0; j < Larghezza; j++ {
var stringa string
elem := Matrix[i][j]
if elem == nil {
stringa = "Vuota"
} else {
stringa = elem.String()
}
fmt.Printf(" Colonna %d: %s\n", j, stringa)
}
}
}*/
func stampaMatrice() { func stampaMatrice() {
for i := 0; i < Altezza; i++ { for i := 0; i < Altezza; i++ {
for j := 0; j < Larghezza; j++ { for j := 0; j < Larghezza; j++ {