Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

[HOMEWORK] Chiarimenti su HW6-obbligatorio

iacopomasi (5250 points)
46 65 95
in HW6 by (5.3k points) 1 flag
edited by
Aggiornamento 25 Novembre 2022 ore 15

Iera sera abbiamo aggiornato lo zip di HW6-req in quanto pensiamo che cosi sia piu chiaro anche se rimangono delle differenze con il gioco originale.
In generale, quello che dovete seguire sono le istruzioni, i chiarimenti e i risultati sui casi di test. Nei test segreti non saranno intenzionalmente inserite casistiche che non sono coperte da quanto scritto nella traccia o qui nei chiarimenti. Lo scopo dei test segreti non e' quello di ingannarvi ma semplicemente di cambiare input/ouput sempre in base alle stesse regole.

- Potete assumere che la posizione iniziale del serpente sia sempre scrivibile.
- Si assume che ci sia sempre almeno un comando fornito come input
- Il serpente puo' andare in diagonale ovviamene ma non puo' "incrociarsi" in diagonale. Si veda esempio nel testo ma ci sono altri casi anche. Si veda sotto per la definizione di "incrociarsi".
- Per gli incroci in diagonale, anche se vi sono diversi casi piu o meno complicati, HW copre il caso piu semplice in cui il serpente muore se quando si muove in diagonale gli altri pixel "adiacenti" in diagonale sono gia' occupati dal serpente. Nella traccia dell'HW e' descritto un solo caso ma ce ne sono altri da tenere conto a seconda di come si muove il serpentello, sempre e solo controllando se i pixel "adiacenti" in diagonale sono gia' occupati dal rettile.
- Quando si inizia il serpente e' ovviamente lungo un pixel (altrimenti vi avremmo passato una lunghezza iniziale)
- Abbiamo cambiato il comportamente del serpente in caso di morte e gestiamo un solo caso.
    - Se si urta un ostacolo, il serpente ovviamente non copre l'ostacolo e la testa rimane nella casella precedente
    - al contrario del gioco classico dello snake, in cui il serpente puo' "inseguirsi" ritraendo la coda e allo stesso tempo scrivendo la testa nella coda che si e' liberata, questa casistica NON e' coperta e adesso il serpente muore nel caso in cui si "acchippa" la coda. Avremmo dovuto differenziare i casi per renderlo piu simile al gioco dello snake ma cosi lo rendiamo piu semplice ed evitiamo di fare confusione e di penalizzare chi gia' lo ha risolto.
- Si possono ovviamente usare le classi per chi le sa gia' usare (le vedremo nelle prossime lezioni)
- Si possono utilizzare attributi statici delle classi (li vedremo nelle prossime lezioni)

Spero chiarisca e vi aiuti.

2 Answers

cromalde (680 points)
4 6 10
by (680 points)
Scusi la domanda ma facendo un po di ragionamenti mi è venuto in mente questo:

Sappiamo che l' "uscita" in diagonale dall'immagine è prevista, ma dobbiamo prevedere anche il caso in cui il serpente si trovi su uno dei quattro angoli ed esca "perpendicolarmente" all'angolo stesso ?

Cerco di farla facile, se ad esempio il serpente si trova in posizione [0,0] ( angolo in alto a sinistra) e il movimento è NE, quindi in alto a destra, teoricamente lo snake dovrebbe appunto uscire in alto a destra [-1,1] e rientrare in [1, 0] per fare il movimento richiesto (NE) che pero lo riporterebbe a [0,0], quindi un non movimento... o un movimento che causa collisione ( col "resto" del corpo che si muove di conseguenza) ?

e in caso il serpente fosse di 1 solo pixel ?

capisco che forse è un caso troppo limite per lo scopo del programma ho ritenuto il caso di chiedere un chiarimento.

Grazie
R
RoccoF (620 points)
1 2 5
by (620 points)
ma perchè dici che lo riporta in (0,0)?

poniamo caso che l'immagine sia 5x5

- parte in (0,0)

- va a N, quindi (0,5) e poi va a E, quindi (1,5)

O se preferisci va prima a E --> (1,0) e poi a N --> (1,5)

P _ _ _ _
_ _ _ _ _

_ _ _ _ _

_ _ _ _ _
_ A _ _ _
 

dove P partenza, A arrivo e gli altri trattini i vari pixel. No?
andrea.sterbini (208020 points)
756 1270 2377
by (208k points)