Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
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


Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Monitor gaming AOC Fast IPS da 24 pollic...
Su Amazon c'è lo Smart TV da 40 p...
Hai una Radeon? Controlla questo process...
Mini aspirapolvere per auto (e non solo)...
Il CEO di NVIDIA Jensen Huang ammette la...
Moon Base: la NASA amplia contratti e mi...
L'italiana Avio fa un passo indietro sul...
SpaceX Starship: Flight 15 punta al prim...
Smartbox colpita da un attacco hacker: e...
Un'IA risolve in 3 giorni un enigma che ...
TOP 10 Amazon weekend: tornano gli Smart...
ReactOS introduce il supporto USB 3.0: i...
TECLAST M60 a soli 159€ su Amazon: table...
Haier da 65 pollici a partire da 397€ su...
Google Pixel 11, Pro e Pro XL in offerta...
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: 07:33.


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