Cose
This commit is contained in:
parent
2d6a0b72a6
commit
e6f1404083
2 changed files with 29 additions and 16 deletions
|
@ -6,7 +6,7 @@ type Element struct { //struttura che contiene sia cibo sia amebe
|
||||||
IsFood bool //se il contenuto della cella è cibo
|
IsFood bool //se il contenuto della cella è cibo
|
||||||
Health int //la sua vita
|
Health int //la sua vita
|
||||||
Age int //la sua età
|
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
|
Evoluzione int //se evolve in positivo avrà un bonus in attacco che viene sommato a Health
|
||||||
CostoMov int //quanta energia spende per muoversi
|
CostoMov int //quanta energia spende per muoversi
|
||||||
CostoSex int //quanto spende per riprodursi
|
CostoSex int //quanto spende per riprodursi
|
||||||
|
@ -17,7 +17,7 @@ func (e Element) String() string {
|
||||||
return fmt.Sprintf("<E'Cibo=%t Salute=%d Eta=%d>", e.IsFood, e.Health, e.Age)
|
return fmt.Sprintf("<E'Cibo=%t Salute=%d Eta=%d>", 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 := new(Element)
|
||||||
nuovo.IsFood=false
|
nuovo.IsFood=false
|
||||||
nuovo.Health=salute
|
nuovo.Health=salute
|
||||||
|
|
37
main.go
37
main.go
|
@ -12,12 +12,15 @@ import (
|
||||||
var Matrix [][]*Element
|
var Matrix [][]*Element
|
||||||
var Altezza int
|
var Altezza int
|
||||||
var Larghezza 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 Clock uint
|
||||||
var NumClock uint
|
var NumClock uint
|
||||||
|
|
||||||
func main() { //FUNZIONE MAIN
|
func main() { //FUNZIONE MAIN
|
||||||
SaluteIniziale = 50
|
|
||||||
Clock = 1
|
Clock = 1
|
||||||
NumClock = 0
|
NumClock = 0
|
||||||
rand.Seed(time.Now().UTC().UnixNano()) //inizializzazione rand
|
rand.Seed(time.Now().UTC().UnixNano()) //inizializzazione rand
|
||||||
|
@ -42,6 +45,11 @@ func main() { //FUNZIONE MAIN
|
||||||
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].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:
|
case 1:
|
||||||
Matrix[i][j] = nil //vuota
|
Matrix[i][j] = nil //vuota
|
||||||
case 2:
|
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
|
if elemento == nil || elemento.IsFood { //controllo se 'elemento' è cibo o un altro essere
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if elemento.Health<=0 {
|
||||||
|
Matrix[h][w] = nil
|
||||||
|
}
|
||||||
direzCasOriz := rand.Intn(3) //numero da 0 a 2
|
direzCasOriz := rand.Intn(3) //numero da 0 a 2
|
||||||
direzCasOriz--
|
direzCasOriz--
|
||||||
direzCasVert := rand.Intn(3)
|
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
|
nuovaPosizioneW >= Larghezza || nuovaPosizioneW < 0 { //se esce dai bordi
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
tmpNewElem := Matrix[nuovaPosizioneH][nuovaPosizioneW]
|
||||||
if tmpNewElem := Matrix[nuovaPosizioneH][nuovaPosizioneW]; tmpNewElem != nil {
|
if tmpNewElem != nil {
|
||||||
if tmpNewElem.Razza != elemento.Razza { //se non è dalla stessa razza
|
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
|
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
|
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 {
|
} else {
|
||||||
Matrix[h][w] = nil //perdita nel combattimento per la sopravvivenza
|
Matrix[h][w] = nil //perdita nel combattimento per la sopravvivenza
|
||||||
tmpNewElem.Health += elemento.Health //il nemico prende l'energia
|
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
|
} else { //si muove sulla nuova casella
|
||||||
Matrix[nuovaPosizioneH][nuovaPosizioneW] = elemento
|
Matrix[nuovaPosizioneH][nuovaPosizioneW] = Matrix[h][w]
|
||||||
Matrix[h][w] = nil
|
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(10) == 0 { //se ha fortuna (o sfortuna) si evolve
|
||||||
if rand.Intn(3) == 0 {
|
if rand.Intn(3) == 0 {
|
||||||
elemento.Evoluzione--
|
Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione--
|
||||||
} else {
|
} else {
|
||||||
elemento.Evoluzione++
|
Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (elemento.Health-elemento.Premura)>elemento.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
|
||||||
Matrix[h][w] = Costruttore(elemento.Razza, elemento.Evoluzione, elemento.CostoMov, elemento.CostoSex, elemento.Premura, SaluteIniziale)
|
//Matrix[h][w] = Costruttore(elemento.Razza, elemento.Evoluzione, elemento.CostoMov, elemento.CostoSex, elemento.Premura, SaluteIniziale)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -150,7 +163,7 @@ func stampaMatrice() {
|
||||||
if Matrix[i][j].IsFood {
|
if Matrix[i][j].IsFood {
|
||||||
fmt.Printf(" CC ")
|
fmt.Printf(" CC ")
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("%d ", Matrix[i][j].Health)
|
fmt.Printf("%d %d ",Matrix[i][j].Razza, Matrix[i][j].Health)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue