Vista 2.0
This commit is contained in:
parent
c86942007d
commit
90d8106551
1 changed files with 25 additions and 30 deletions
55
main.go
55
main.go
|
@ -21,8 +21,10 @@ var PremuraIniziale int = 10
|
||||||
var AgeMaxInizio int = 30
|
var AgeMaxInizio int = 30
|
||||||
var Clock uint
|
var Clock uint
|
||||||
var NumClock uint
|
var NumClock uint
|
||||||
var ValoreNutrizionale int =10
|
var ValoreNutrizionale int = 10
|
||||||
var ValoreNutrizionaleCarcassa int =5
|
var ValoreNutrizionaleCarcassa int = 5
|
||||||
|
var LivelloSblocco int = 2
|
||||||
|
var Possibilita int = 5
|
||||||
|
|
||||||
func main() { //FUNZIONE MAIN
|
func main() { //FUNZIONE MAIN
|
||||||
Clock = 1
|
Clock = 1
|
||||||
|
@ -62,6 +64,14 @@ func main() { //FUNZIONE MAIN
|
||||||
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)
|
||||||
|
fmt.Println("Inserisci la possibilità di evoluzione (numero da 1 a 10) [default = 5]: ")
|
||||||
|
fmt.Scan(&Possibilita)
|
||||||
|
if(Possibilita<1 || Possibilita>10) {
|
||||||
|
Possibilita=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)
|
||||||
}
|
}
|
||||||
Matrix = make([][]*Element, Altezza)
|
Matrix = make([][]*Element, Altezza)
|
||||||
for i := range Matrix { // inizializzazione matrice
|
for i := range Matrix { // inizializzazione matrice
|
||||||
|
@ -86,6 +96,7 @@ func main() { //FUNZIONE MAIN
|
||||||
Matrix[i][j] = new(Element) // cibo
|
Matrix[i][j] = new(Element) // cibo
|
||||||
Matrix[i][j].IsFood = true
|
Matrix[i][j].IsFood = true
|
||||||
Matrix[i][j].Health = ValoreNutrizionale
|
Matrix[i][j].Health = ValoreNutrizionale
|
||||||
|
Matrix[i][j].Razza = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,7 +104,6 @@ func main() { //FUNZIONE MAIN
|
||||||
go ServiHTML() // fai partire il server html
|
go ServiHTML() // fai partire il server html
|
||||||
|
|
||||||
fmt.Println("Situazione iniziale: ")
|
fmt.Println("Situazione iniziale: ")
|
||||||
stampaMatrice()
|
|
||||||
aggiorna()
|
aggiorna()
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +119,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()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,12 +129,14 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if elemento.Health<=0 {
|
if elemento.Health<=0 {
|
||||||
fmt.Printf("Il soggetto in cella %d, %d è morto di fame\n",h, w)
|
fmt.Printf("Il soggetto in cella %d, %d è morto di fame\n",h, w)
|
||||||
Matrix[h][w] = nil
|
Matrix[h][w] = nil
|
||||||
Matrix[h][w] = new(Element) // sostituisce con la carcassa
|
Matrix[h][w] = new(Element) // sostituisce con la carcassa
|
||||||
Matrix[h][w].IsFood = true
|
Matrix[h][w].IsFood = true
|
||||||
Matrix[h][w].Health = ValoreNutrizionaleCarcassa
|
Matrix[h][w].Health = ValoreNutrizionaleCarcassa
|
||||||
|
Matrix[h][w].Razza = 3
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
elemento.Age++
|
elemento.Age++
|
||||||
|
@ -137,6 +148,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
Matrix[h][w] = new(Element) // sostituisce con la carcassa
|
Matrix[h][w] = new(Element) // sostituisce con la carcassa
|
||||||
Matrix[h][w].IsFood = true
|
Matrix[h][w].IsFood = true
|
||||||
Matrix[h][w].Health = ValoreNutrizionaleCarcassa
|
Matrix[h][w].Health = ValoreNutrizionaleCarcassa
|
||||||
|
Matrix[h][w].Razza = 3
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +156,9 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
var w2 int
|
var w2 int
|
||||||
var direzCasOriz int
|
var direzCasOriz int
|
||||||
var direzCasVert int
|
var direzCasVert int
|
||||||
var trovato bool
|
var trovato bool = false
|
||||||
|
|
||||||
|
if Matrix[h][w].Evoluzione>=LivelloSblocco {
|
||||||
for i:=0;i<8;i++ {
|
for i:=0;i<8;i++ {
|
||||||
switch i {
|
switch i {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -174,7 +188,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
}
|
}
|
||||||
if ((h+h2)>=0) && ((h+h2)<Altezza) && ((w+w2)>=0) && ((w+w2)<Larghezza) {
|
if ((h+h2)>=0) && ((h+h2)<Altezza) && ((w+w2)>=0) && ((w+w2)<Larghezza) {
|
||||||
if Matrix[h+h2][w+w2]!= nil {
|
if Matrix[h+h2][w+w2]!= nil {
|
||||||
if Matrix[h+h2][w+w2].IsFood {
|
if Matrix[h+h2][w+w2].IsFood && !trovato {
|
||||||
direzCasVert= h2;
|
direzCasVert= h2;
|
||||||
direzCasOriz = w2;
|
direzCasOriz = w2;
|
||||||
trovato=true
|
trovato=true
|
||||||
|
@ -182,6 +196,7 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !trovato {
|
if !trovato {
|
||||||
direzCasVert = rand.Intn(2)
|
direzCasVert = rand.Intn(2)
|
||||||
|
@ -189,18 +204,17 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
direzCasOriz = rand.Intn(2)
|
direzCasOriz = rand.Intn(2)
|
||||||
direzCasOriz--
|
direzCasOriz--
|
||||||
}
|
}
|
||||||
nuovaPosizioneH := h + direzCasVert //aggiornamento posiozione verticale
|
nuovaPosizioneH := h + direzCasVert //aggiornamento posizione verticale
|
||||||
nuovaPosizioneW := w + direzCasOriz //aggiornamento posizione orizzontale
|
nuovaPosizioneW := w + direzCasOriz //aggiornamento posizione orizzontale
|
||||||
|
|
||||||
|
|
||||||
if nuovaPosizioneH >= Altezza || nuovaPosizioneH < 0 ||
|
if nuovaPosizioneH >= Altezza || nuovaPosizioneH < 0 ||
|
||||||
nuovaPosizioneW >= Larghezza || nuovaPosizioneW < 0 { //se esce dai bordi
|
nuovaPosizioneW >= Larghezza || nuovaPosizioneW < 0 { //se esce dai bordi
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
trovato=false
|
||||||
if Matrix[nuovaPosizioneH][nuovaPosizioneW] != nil {
|
if Matrix[nuovaPosizioneH][nuovaPosizioneW] != nil {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if Matrix[nuovaPosizioneH][nuovaPosizioneW].Razza != Matrix[h][w].Razza { //se non è dalla stessa razza
|
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*5)) < (Matrix[h][w].Health+(Matrix[h][w].Evoluzione)*5) { // se e' cibo o un insetto piu debole
|
if Matrix[nuovaPosizioneH][nuovaPosizioneW].IsFood || (Matrix[nuovaPosizioneH][nuovaPosizioneW].Health+(Matrix[nuovaPosizioneH][nuovaPosizioneW].Evoluzione*5)) < (Matrix[h][w].Health+(Matrix[h][w].Evoluzione)*5) { // se e' cibo o un insetto piu debole
|
||||||
Matrix[h][w].Health += Matrix[nuovaPosizioneH][nuovaPosizioneW].Health //prelevamento energia essere fagocitato
|
Matrix[h][w].Health += Matrix[nuovaPosizioneH][nuovaPosizioneW].Health //prelevamento energia essere fagocitato
|
||||||
|
@ -223,7 +237,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(10) == 0 { //se ha fortuna (o sfortuna) si evolve
|
if rand.Intn(Possibilita) == 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
|
||||||
|
@ -240,22 +254,3 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func stampaMatrice() {
|
|
||||||
|
|
||||||
/*for i := 0; i < Altezza; i++ {
|
|
||||||
for j := 0; j < Larghezza; j++ {
|
|
||||||
if Matrix[i][j] == nil {
|
|
||||||
fmt.Printf(" -- ")
|
|
||||||
} else {
|
|
||||||
if Matrix[i][j].IsFood {
|
|
||||||
fmt.Printf(" CC ")
|
|
||||||
} else {
|
|
||||||
fmt.Printf("%d %d ",Matrix[i][j].Razza, Matrix[i][j].Health)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Printf("\n")
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
Reference in a new issue