Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-11-2003, 12:04   #1
Aldalex
Member
 
Iscritto dal: Jun 2000
Messaggi: 60
Programma Forza 4 in C! Aiuto!

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.
Aldalex è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 12:19   #2
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
Non ho capito il problema? Crei una matrice di interi (per es.), la inizializzi a 0, visualizzi la schifezza. Quando uno inserisce la pedina nella matrice in quella riga nella prima posizione "0" inserisci 1 o 2 a secondo del giocatore. Crei una funzione a cui passi la matrice e la posizione della pedina inserita, la funz controlla se la pedina inserita "completa" una serie di 4 pedine. Si -> ha vinto, no -> controllo quante pedine sono rimaste al giocatore a cui tocca, se > 0 allora gioca altrimenti patta.

Va beh io lo buttata giù in 4 secondi magari ci sono un po' di controlli in + da fare
__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 12:22   #3
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Una cosa tipo

Codice:
char table[10][10];
int i;
for(i=0;i<10;i++)
   printf("%c|-\n", table[0][i]);
int j;
for(j=0;i<10;j++)
   printf("%c-|\n", table[i][i]);
Prova a vedere se ti puo essere utile
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 15:05   #4
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
ekkone una versione + utile al tuo scopo.
Codice:
#include <stdio.h>
#include <stdlib.h>

void inserisci(int * table[3][3], int x, int y, int val);

int main()
{
  int table[3][3] = {0};
  int i;
  int j;
  int y;
  for(i=0;i<3;i++)
    printf("\t%d", table[0][i]);
  printf("\n");  
  for(j=0;j<3;j++)
    printf("\t%d", table[1][j]); 
  printf("\n");   
  for(y=0;y<3;y++)
    printf("\t%d", table[2][y]);
  printf("\n");
  inserisci(&table, 1, 1, 1); 
  inserisci(&table, 1, 3, 2); 
  int sc;
  scanf("%d", &sc);      
  return 0;
}

void inserisci(int * table[3][3],int x, int y, int val)
{
    *table[x][y] = val;
}
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2003, 18:19   #5
Aldalex
Member
 
Iscritto dal: Jun 2000
Messaggi: 60
Forza 4

ho provato a far girare su DEVC++ il programma ideato da Luc@s

Va quasi bene, e infatto gia lo ringrazio davvero, grazie Luc@s!!

Pero ci sn dei ritocchi da fare, perche mi da 3 errori nella compilazione, e quando lo faccio giare parte la shell del terminale ma ad un certo punto dopo aver disegnato la matrice si blocca, la matrice cmq deve essere di 7 colonne e 6 righe:

Gli errori che mi da sn i seguenti:

[Warning] In function `main'

[Warning] passing arg 1 of `inserisci' from incompatible pointer type ( alla riga 21 )

[Warning] passing arg 1 of `inserisci' from incompatible pointer type ( alla riga 22 )

Sapresti dirmi perche me li da Luc@s?

Grazie di nuovo ,

Alessandro
Aldalex è offline   Rispondi citando il messaggio o parte di esso
Old 06-11-2003, 09:59   #6
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
Secondo me quel prog. non fa nulla
Cmq il problema credo sia nel puntatore, elimita l'asterisco in ogni punto
della funzione (anche dal prototipo) e quando la richiami dal main non ci mettere & davanti al nome della matrice.

Ciao
__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2003, 19:28   #7
Aldalex
Member
 
Iscritto dal: Jun 2000
Messaggi: 60
gioco forza 4

il programma mi da come output ina matrice 3*3 inizializzata a zero, e invece doverbbe darmi una matrice con 7 colonne e 6 righe... poi quando metto un numero mi si chiude subito la finestra del terminale, qualcuno sa come risolvere il problema ??

Ecco il programma

#include <stdio.h>
#include <stdlib.h>

void inserisci(int table[3][3], int x, int y, int val);

int main()
{
int table[3][3] = {0};
int i;
int j;
int y;
for(i=0;i<3;i++)
printf("\t%d", table[0][i]);
printf("\n");
for(j=0;j<3;j++)
printf("\t%d", table[1][j]);
printf("\n");
for(y=0;y<3;y++)
printf("\t%d", table[2][y]);
printf("\n");
inserisci(table, 1, 1, 1);
inserisci(table, 1, 3, 2);
int sc;
scanf("%d", &sc);
return 0;
}

void inserisci(int table[3][3],int x, int y, int val)
{
table[x][y] = val;
}
Aldalex è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2003, 03:28   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
int table[3][3] = {0};
Come fai a fare una matrice 6x7 se qui la dichiari 3x3 ?
Inoltre {0} non inizializza una matrice a zero...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2003, 03:30   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Re: gioco forza 4

Quote:
Originariamente inviato da Aldalex
poi quando metto un numero mi si chiude subito la finestra del terminale, qualcuno sa come risolvere il problema ??
Perchè il tuo programma fa proprio questo...fa diverse stampe, una scanf e poi esce...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2003, 11:28   #10
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
Re: Re: gioco forza 4

Quote:
Originariamente inviato da cionci
Perchè il tuo programma fa proprio questo...fa diverse stampe, una scanf e poi esce...
Secondo me lui voleva che il programmino lo facciamo noi
Non si è preso neanche la briga di leggere quelo che gli abbiamo scritto.

Non ho capito però cosa ci fa in programmazione uno che fa di tutto tranne programmare
__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2003, 15:04   #11
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Re: Re: Re: gioco forza 4

Quote:
Originariamente inviato da Icedguardian
Secondo me lui voleva che il programmino lo facciamo noi
Non si è preso neanche la briga di leggere quelo che gli abbiamo scritto.

Non ho capito però cosa ci fa in programmazione uno che fa di tutto tranne programmare
in effetti ha copiato il mio listato che nn era proprio ia massimi livelli della decenza
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2003, 23:18   #12
Manson666
Bannato
 
Iscritto dal: Oct 2000
Messaggi: 552
:-)

Fai informatica alla Sapienza?
Manson666 è offline   Rispondi citando il messaggio o parte di esso
Old 11-11-2003, 13:17   #13
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
Re: :-)

Quote:
Originariamente inviato da Manson666
Fai informatica alla Sapienza?
io?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
La missione con equipaggio Shenzhou-21 h...
Il Galaxy S26 Edge potrebbe essere ancor...
Google riaccenderà una centrale n...
Crollo per Pornhub nel Regno Unito:-77% ...
La Germania accende il suo cannone laser...
Il meglio di Amazon in 2 minuti: tira ar...
ECOVACS risponde a Eureka e dimezza il p...
Durissimo colpo per Nintendo: l'ufficio ...
Scope elettriche al minimo storico su Am...
Blue Jay e Project Eluna: robotica e AI ...
Scede a 949€ il Samsung Galaxy S25 Ultra...
Blue Yeti Nano in super offerta su Amazo...
Netflix sta preparando un'offerta per Wa...
Prezzo impossibile, è sceso ancor...
Torna il migliore dei mini PC economici:...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:32.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v