diff --git a/element.go b/element.go index d7192e2..7d93783 100644 --- a/element.go +++ b/element.go @@ -13,5 +13,5 @@ type Element struct { //struttura che contiene sia cibo sia amebe } 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.IsFood, e.Health, e.Age) } diff --git a/main.go b/main.go index cd50af0..ebe340a 100644 --- a/main.go +++ b/main.go @@ -14,9 +14,12 @@ var Altezza int var Larghezza int var SaluteIniziale int var Clock uint +var NumClock uint -func main() { //FUNZIONE MAIN +func main() { //FUNZIONE MAIN SaluteIniziale = 50 + Clock = 1 + NumClock = 0 height, err := strconv.Atoi(os.Args[1]) if err != nil { panic("height not valid") @@ -47,40 +50,41 @@ func main() { //FUNZIONE MAIN } } } + fmt.Println("Situazione iniziale: ") + stampaMatrice() - fmt.Println(Matrix) - - go aggiorna() + aggiorna() } -func aggiorna() { //FUNZIONE AGGIORNA: chiama la funzione muovi +func aggiorna() { //FUNZIONE AGGIORNA: chiama la funzione muovi for { - for i := 0; i Altezza || nuovaPosizioneH < 0 { //se esce dai bordi verticali - muovi(h, w) - } + nuovaPosizioneH := h + direzCasVert //aggiornamento posiozione verticale + nuovaPosizioneW := w + direzCasOriz //aggiornamento posizione orizzontale - if nuovaPosizioneW > Larghezza || nuovaPosizioneW < 0 { //se esce dai bordi orizzontali - muovi(h, w) + if nuovaPosizioneH >= Altezza || nuovaPosizioneH < 0 || + nuovaPosizioneW >= Larghezza || nuovaPosizioneW < 0 { //se esce dai bordi + return } if tmpNewElem := Matrix[nuovaPosizioneH][nuovaPosizioneW]; tmpNewElem != nil { @@ -97,10 +101,26 @@ func muovi(h int, w int) { //FUNZIONE MUOVI: aggiorna la posizione di tutti gli muovi(h, w) } } - } else { //si muove sulla nuova casella + } else { //si muove sulla nuova casella Matrix[nuovaPosizioneH][nuovaPosizioneW] = elemento Matrix[h][w] = nil } } + +func stampaMatrice() { + 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) + } + } +}