Aldalex
05-11-2003, 11:04
Qualcuno puo aiutarmi ad implementare in C il programma Forza 4 ? Dovrei consegnarlo per domenica....vale come esercizio...vi prego, help me.
Riporto qui sotto le indicazioni per il programma:
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.
Spero che qualche buon'anima mi aiuti, grazie.
Riporto qui sotto le indicazioni per il programma:
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.
Spero che qualche buon'anima mi aiuti, grazie.