Homework 2 - Il gioco "Forza 4" (uso di matrici)
Vedi anche:
DomandeHomework2,
SoluzioneHomework2,
RisultatiHomework2.
Il gioco "Forza 4"
- Il gioco "Forza 4" si gioca in due giocatori (Giallo e Rosso) ciascuno dei quali ha un numero N di pedine del proprio colore.
- Si gioca a turno, inserendo dall'alto una pedina del proprio colore in una griglia verticale di 7 colonne e 6 righe.
- Il giocatore di turno inserisce una delle proprie pedine in una delle 7 colonne cercando di ottenere per primo un allineamento di 4 pedine del proprio colore in orizzontale, verticale o in diagonale.
- Quando una pedina viene inserita in una colonna, si va ad appoggiare sulla base della griglia o sulle pedine già inserite.
- Non è possibile inserire più di 6 pedine per colonna.
- Se la griglia viene completamente riempita senza che si presenti un allineamento di 4 o più pedine dello stesso colore, la partita è patta.
- Il numero di pedine N di ciascun giocatore è sufficiente a riempire tutta la griglia (sono 21 per giocatore).
Obiettivo dell'esercizio
Si sviluppi un programma C che implementa il gioco
Forza4.
Input del programma
Il programma inizia col giocatore
1 e per ogni turno riceve in input una cifra tra 0 e 6 compresi: il giocatore corrente vuole inserire la sua pedina nella corrispondente colonna.
Output del programma
- Il programma stampa per ogni mossa lo stato della griglia ESATTAMENTE secondo il seguente esempio:
| | | | | | | |
| | |1| | | | |
| | |1| | | | |
| | |1|2| | | |
| | |1|1|2| | |
| |2|2|2|1|2| |
---------------
0 1 2 3 4 5 6
- in cui:
- caselle non occupate => spazio
- caselle occupate dal giocatore 1 => carattere 1
- caselle occupate dal giocatore 2 => carattere 2
- stampate anche le barre verticali, la riga orizzontale di 'meno' e i numeri che indicano le colonne
- subito dopo la presentazione della griglia viene:
- presentato il prompt: Giocatore N: (senza accapo e con N uguale a 1 o 2)
- letto l'input ed eseguiti i controlli:
- ogni input diverso dai numeri tra 0 e 6 è errato e fa stampare ESATTAMENTE la stringa "Input errato" seguita da accapo (vedi esempio sotto) e si richiede di nuovo l'input.
- Se la colonna è già piena si stampa ESATTAMENTE la stringa "Mossa non valida" seguita da accapo e si richiede di nuovo l'input.
- Non appena viene scoperta la presenza di 4 (o più) pedine allineate (in orizzontale, verticale o diagonale) dello stesso colore si stampa:
- la situazione (finale) della griglia.
- la stringa "Ha vinto il giocatore N" seguita da accapo (con N= 1 o 2 a seconda del caso)
- e si esce.
- Se la partita termina in patta si stampa:
- la situazione (finale) della griglia.
- la stringa "Partita patta" seguita da accapo
- e si esce.
Esempio di partita
Ecco un esempio di partita. In rosso si evidenzia l'input del programma, battuto dai giocatori sulla tastiera.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
---------------
0 1 2 3 4 5 6
Giocatore 1: 3
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |1| | | |
---------------
0 1 2 3 4 5 6
Giocatore 2: 3
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | | |1| | | |
---------------
0 1 2 3 4 5 6
Giocatore 1: 4
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | | |1|1| | |
---------------
0 1 2 3 4 5 6
Giocatore 2: 2
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | |2|1|1| | |
---------------
0 1 2 3 4 5 6
Giocatore 1: 8
Input errato
Giocatore 1: 5
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | |2|1|1|1| |
---------------
0 1 2 3 4 5 6
Giocatore 2: 6
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Giocatore 1: 4
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |2|1| | |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Giocatore 2: 4
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | |2| | |
| | | |2|1| | |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Giocatore 1: 3
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | |1|2| | |
| | | |2|1| | |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Giocatore 2: 3
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | | |1|2| | |
| | | |2|1| | |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Giocatore 1: 2
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | | |1|2| | |
| | |1|2|1| | |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Giocatore 2: 5
| | | | | | | |
| | | | | | | |
| | | |2| | | |
| | | |1|2| | |
| | |1|2|1|2| |
| | |2|1|1|1|2|
---------------
0 1 2 3 4 5 6
Ha vinto il giocatore 2
Suggerimenti
- Usate (ovviamente) una matrice.
- Nella lezione del 30 (o 31) Ottobre si parlerà del gioco del Tris, che non è troppo diverso da Forza 4.
Scadenza
- L'esercizio va consegnato entro le ore 24:00 di domenica 9 Novembre
Consegna degli esercizi
- Attenzione: viste numerose richieste, ho deciso di prorogare la scadenza dell'homework 4 a mercoledì 22 dicembre sempre alle 23:59.
- La scadenza dell'Homework 5 è stata (ri)fissatta per venerdì 14 gennaio 2005 sempre alle 23:59.
- Dovete essere iscritti a twiki
- Dovete aver mostrato un documento di identità a Ivano Salvo (oppure mandatemene una scansione per email)
- Vi devo aver abilitato (controllate in StudentiProg1Group o ArchitettureUnoGroup )
- Gli esercizi vanno consegnati esclusivamente usando la pagina di consegna: ATTENZIONE in questo momento sono attive due pagine, una per l'homework 4 e una per l'homework 5.
Evitate di fare confusione!
-
- Io registro/abilito nuovi iscritti e aggiorno password solo fino al venerdì sera
- quindi fate una prova durante la settimana per controllare che tutto vi funzioni!
- Non verranno accettati esercizi consegnati per email
- Ora sono le 15:15
--
AndreaSterbini - 11 Oct 2003