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 {
Matrix[h][w] = nil
return
}
direzCasOriz := rand.Intn(3) //numero da 0 a 2
direzCasOriz--
@ -103,18 +104,16 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
return
}
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
tmpNewElem = elemento //inglobamento essere perito
elemento = nil
tmpNewElem.Health -= tmpNewElem.CostoMov
if Matrix[nuovaPosizioneH][nuovaPosizioneW] != nil {
if Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza != Matrix[h][w].Razza { //se non è dalla stessa razza
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
Matrix[h][w].Health += Matrix[nuovaPosizioneH][nuovaPosizioneW].Health //prelevamento energia essere fagocitato
Matrix[nuovaPosizioneH][nuovaPosizioneW] = Matrix[h][w] //inglobamento essere perito
Matrix[h][w] = nil
Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].CostoMov
} else { //perdita nel combattimento per la sopravvivenza
tmpNewElem.Health += elemento.Health //il nemico prende l'energia
elemento = nil
Matrix[nuovaPosizioneH][nuovaPosizioneW].Health += Matrix[h][w].Health //il nemico prende l'energia
Matrix[h][w] = nil
}
} else { //se sono amici
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
tmpNewElem = elemento
elemento = nil
tmpNewElem.Health -= tmpNewElem.CostoMov
Matrix[nuovaPosizioneH][nuovaPosizioneW] = Matrix[h][w]
Matrix[nuovaPosizioneH][nuovaPosizioneW].Health -= Matrix[nuovaPosizioneH][nuovaPosizioneW].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 {
tmpNewElem.Evoluzione--
Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione--
} else {
tmpNewElem.Evoluzione++
Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione++
}
}*/
}
if (tmpNewElem.Health-tmpNewElem.Premura)>tmpNewElem.CostoSex { //se ha energia a sufficienza per riprodursi
//tmpNewElem = 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[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() {
for i := 0; i < Altezza; i++ {
for j := 0; j < Larghezza; j++ {