Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Esercizio: gioco della dama
Forum - C/C++ - Esercizio: gioco della dama

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
alexxandro84 (Normal User)
Newbie


Messaggi: 10
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 11:07
Martedì, 28/04/2009
Ciao a tutti, devo fare un esercizio di Programmazione C: il gioco della dama

Ora ho il codice con la scacchiera vuota e devo riempirla, c'è qualcuno che potrebbe aiutarmi? è la prima volta che mi trovo a fare un esercizio del genere


grazie a chi mi vorrà aiutare!

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 13:37
Martedì, 28/04/2009
ciao e benvenuto, innanzitutto potresti iniziare a postare il codice che hai scritto :k:, poi dovresti creare una matrice con elementi tipo delle X per il nero e delle O per il bianco. per lo spostamento potresti usare delle coordinate tipo A3, che vengono inserite sia per selezionare che per spostare, il programma deve poi controllare che la mossa sia eseguibile, se lo è bisogna azzerare la locazione in cui si trovava prima il pezzo e spostarlo quindi nella casella selezionata.
se aspettavi che qualcuno ti desse pappa pronta ti sbagli di grosso, spero non sia il tuo caso, e spero che il mio aiuto non sia stato vano.
EDIT: comunque adesso lo sto scrivendo anch'io il codice :heehee:.

Ultima modifica effettuata da gio97 il 28/04/2009 alle 13:55


"Ditemi, sapete chi è... il ciaffo?"
"Questo essere trae origine da un arcaico lamer.
Tanto tempo fa, in una chat oscena oscena, il lamer f1192 si lamentava di non poter inserire le graffe, perché non aveva... IL CIAFFO"(L'uomo che sussurrava ai ciaffi)
PM Quote
Avatar
alexxandro84 (Normal User)
Newbie


Messaggi: 10
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 14:12
Martedì, 28/04/2009
Grazie per l'aiuto che mi dai, se posso in futuro mi sdebiterò!

Questo è il testo dell'esercizio:
L'algoritmo considera una scacchiera regolamentare (8x8 caselle bianche e nere,
casella nera in basso a sinistra) e dispone a caso (usando la function rand) 5 Pedine
Bianche e 5 Pedine Nere (per semplicità, possono stare in una qualunque casella non
occupata da un'altra pedina). Si ricorda che nel gioco della Dama le Pedine di
qualunque colore possono occupare solo le caselle nere della scacchiera. L'algoritmo
deve visualizzare la scacchiera, mostrando una 'X' per le caselle nere non occupate,
mostrando uno spazio (blank) per le caselle bianche, mostrando una 'B' per le caselle
occupate dalle Pedine Bianche, una 'N' per le caselle occupate dalle Pedine Nere.
L'algoritmo determina, in base alla posizione di tutte le Pedine sulla scacchiera, quali
sono le Pedine Nere che possono essere catturate dalle Pedine Bianche. Fare
attenzione al fatto che una Pedina Bianca cattura una Pedine Nera solo se
quest'ultima si trova in una delle due caselle nere vicine lungo le due diagonali che
passano per la casella dove di trova la Pedina Bianca e se la successiva casella nera
esiste ed è libera. Infine l'algoritmo visualizza l'elenco delle Pedine Nere catturabili,
precisando anche da quale Pedina Bianca sono catturabili e utilizzando la notazione
usuale delle posizioni nel gioco della Dama, ovvero scrivendo, per esempio:

Pedina Nera in b2 catturabile da Pedina Bianca in a1, ..

Ricordare che nella notazione usuale le righe della scacchiera sono indicate mediante
numeri interi (da 1 ad 8, dal basso verso l'alto), mentre le colonne sono indicate
mediante lettere dell’alfabeto (da 'a' ad 'h' da sinistra a destra) e che la notazione
prevede di indicare prima la lettera (colonna) e poi il numero (riga). Le Pedine
possono catturare solo "in avanti" (dal basso verso l'alto, guardando la scacchiera),
cioè le Pedine Bianche possono catturare muovendosi verso caselle nere
contrassegnate da un indice maggiore di quello della casella nera dove di trova
Pedina Bianca e che le Pedine Nere possono catturare muovendosi verso caselle nere
contrassegnate da un indice minore di quello della casella nera dove di trova Pedina
Nera (dall'alto verso il basso, guardando la scacchiera).


Questo è il codice della scacchiera vuota:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. void DrawBoard()
  3. {
  4.     int y, x;
  5.     for(y=0; y<18; y++)  /* Righe: sono 18 perchè 8 righe X 2 (riga di celle più riga divisoria) + riga per le lettere + riga di chiusura */
  6.         for(x=0; x<26; x++) /* Colonne: sono 26 perchè 8 colonne X 3 (colonna divisoria + 2 caratteri per il contenuto cella) + riga di numeri + riga di chiusura */
  7.             if(y==0)
  8.                 if(x==25)       printf(" \n");
  9.                 else if(x%3==2) putchar(65+(x/3)); /* I caratteri vengono messi qui */    
  10.                 else            putchar(' ');
  11.             else if (y==1)
  12.                 if(x==0)        putchar(' ');
  13.                 else if(x==1)   putchar(218);
  14.                 else if(x==25)  printf("%c\n", 191);
  15.                 else if(x%3==1) putchar(194);
  16.                 else            putchar(196);
  17.             else if(y==17)
  18.                 if(x==0)        putchar(' ');
  19.                 else if(x==1)   putchar(192);
  20.                 else if(x==25)  printf("%c\n", 217);
  21.                 else if(x%3==1) putchar(193);
  22.                 else            putchar(196);
  23.             else if(y%2==1)
  24.                 if(x==0)        putchar(' ');
  25.                 else if(x==1)   putchar(195);
  26.                 else if(x==25)  printf("%c\n", 180);
  27.                 else if(x%3==1) putchar(197);
  28.                 else            putchar(196);
  29.             else  
  30.                 if (x==0)       putchar(48+(y/2));
  31.                 else if(x==25)  printf("%c\n", 179);
  32.                 else if(x%3==1) putchar(179);
  33.                 else if(x%3==2) printf("  "); /* qui il contenuto di tutte le celle */
  34. }
  35. void main()
  36. {
  37.     DrawBoard();
  38. }


e questo è il risultato:
http://img207.imageshack.us/img207/3262/151511.jpg

Questo è il codice della scacchiera con tutte x ma è sbagliata:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. void DrawBoard()
  3. {
  4.    int y, x;
  5.    int croce = 0;
  6.     for(y=0; y<18; y++)
  7.         for(x=0; x<26; x++)
  8.             if(y==0)
  9.                 if(x==25)       printf(" \n");
  10.                 else if(x%3==2) putchar(65+(x/3));    
  11.                 else            putchar(' ');
  12.             else if (y==1)
  13.                 if(x==0)        putchar(' ');
  14.                 else if(x==1)   putchar(218);
  15.                 else if(x==25)  printf("%c\n", 191);
  16.                 else if(x%3==1) putchar(194);
  17.                 else            putchar(196);
  18.             else if(y==17)
  19.                 if(x==0)        putchar(' ');
  20.                 else if(x==1)   putchar(192);
  21.                 else if(x==25)  printf("%c\n", 217);
  22.                 else if(x%3==1) putchar(193);
  23.                 else            putchar(196);
  24.             else if(y%2==1)
  25.                 if(x==0)        putchar(' ');
  26.                 else if(x==1)   putchar(195);
  27.                 else if(x==25)  printf("%c\n", 180);
  28.                 else if(x%3==1) putchar(197);
  29.                 else            putchar(196);
  30.             else  
  31.                 if (x==0)       putchar(48+(y/2));
  32.                 else if(x==25)  printf("%c\n", 179);
  33.                 else if(x%3==1) putchar(179);
  34.                 else if(x%3==2)
  35.             {
  36.                if(croce == 0) {
  37.                     printf("x ");
  38.                     croce = 1;
  39.                }
  40.                 else
  41.             {
  42.                     printf("  ");
  43.                     croce = 0;
  44.             }
  45.             }
  46. }
  47. void main()
  48. {
  49.    DrawBoard();
  50. }


Ultima modifica effettuata da alexxandro84 il 28/04/2009 alle 14:15
PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 14:33
Martedì, 28/04/2009
beh, a questo punto ti serve soltanto una matrice 8 x 8, usi poi un puntatore che punti a delle celle casuali della matrice-damiera e un contatore che fa terminare l'inserimento nel momento in cui è uguale a 5, nelle quali se c'è scritto X lo cancella e scrive rispettivamente N o B, se non c'è scritto nulla non aumenti il contatore, se c'è scritto N non metti B e non aumenti il contatore e viceversa se c'è scritto B. una volta disposti i pezzi fai scoprire al programma tutti i movimenti possibili, usando per esempio due contatori che aumentino assieme per controllare quindi solo le diagonali e se nei movimenti possibili c'è una N o una B (in base al colore), scrive la casella da cui parte il movimento e quella dove terminerebbe, ossia dove c'è l'altra pedina :k:


"Ditemi, sapete chi è... il ciaffo?"
"Questo essere trae origine da un arcaico lamer.
Tanto tempo fa, in una chat oscena oscena, il lamer f1192 si lamentava di non poter inserire le graffe, perché non aveva... IL CIAFFO"(L'uomo che sussurrava ai ciaffi)
PM Quote
Avatar
alexxandro84 (Normal User)
Newbie


Messaggi: 10
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 14:38
Martedì, 28/04/2009
Testo quotato

Postato originariamente da gio97:

beh, a questo punto ti serve soltanto una matrice 8 x 8, usi poi un puntatore che punti a delle celle casuali della matrice-damiera e un contatore che fa terminare l'inserimento nel momento in cui è uguale a 5, nelle quali se c'è scritto X lo cancella e scrive rispettivamente N o B, se non c'è scritto nulla non aumenti il contatore, se c'è scritto N non metti B e non aumenti il contatore e viceversa se c'è scritto B. una volta disposti i pezzi fai scoprire al programma tutti i movimenti possibili, usando per esempio due contatori che aumentino assieme per controllare quindi solo le diagonali e se nei movimenti possibili c'è una N o una B (in base al colore), scrive la casella da cui parte il movimento e quella dove terminerebbe, ossia dove c'è l'altra pedina :k:


grazie mille davvero


solo che io mi so bloccato qui....il fatto è che non ho mai fatto un esercizio del genere, un gioco e quindi non so che fare

non è che me lo sapresti fare tu? per favore

ps: magari poi mi dai in privato il tuo numero di telefono e ti regalo una ricarica :)

Ultima modifica effettuata da alexxandro84 il 28/04/2009 alle 14:45
PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 15:02
Martedì, 28/04/2009
Sarei anche capace a fartelo, ma come ti ho detto, niente pappa pronta, e comunque nemmeno io ho mai fatto giochi. l'importante è che tu capisca quello che fai, non ci devi corrompere per farlo, tu programmi perché ti piace e vuoi imparare, e la programmazione è piena di sfide, tutta la vita ne è piena, e non ci si può fermare perché si pensa di non essere capaci a far qualcosa, l'algoritmo è elaborato (e la sintassi la conosci), va solamente perfezionato, ma il perfezionamento lo puoi fare in fase di scrittura; e se hai scritto quella scacchiera fatta così minuziosamente mi chiedo per quale motivo tu non riesca a fare il programma, pensaci un po' su e capirai come farlo. magari ci saranno errori ai primi tentativi, ma sicuramente l'errore più grande è farsi scrivere il programma.

Ultima modifica effettuata da gio97 il 28/04/2009 alle 15:04


"Ditemi, sapete chi è... il ciaffo?"
"Questo essere trae origine da un arcaico lamer.
Tanto tempo fa, in una chat oscena oscena, il lamer f1192 si lamentava di non poter inserire le graffe, perché non aveva... IL CIAFFO"(L'uomo che sussurrava ai ciaffi)
PM Quote
Avatar
alexxandro84 (Normal User)
Newbie


Messaggi: 10
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 15:15
Martedì, 28/04/2009
ti capisco, anche io son fatto così, le cose me le faccio da solo e ci sbatto la testa da solo.....ma stavolta se non fosse stato di vitale importanza, non te l'avrei chiesto: è una questione di tempo, ne ho poco a disposizione e in quel che mi rimane, devo ripetere la teoria

ti ripeto, è una cosa importante, altrimenti non te l'avrei chiesto, se saresti così gentile da potermi aiutare, te ne sarei molto grato, altrimenti pazienza, grazie lo stesso per la disponibilità.

PM Quote
Avatar
gio97 (Ex-Member)
Guru


Messaggi: 715
Iscritto: 25/04/2009

Segnala al moderatore
Postato alle 15:38
Martedì, 28/04/2009
vabbè, per una volta... ti sto scrivendo una base, tra poco l'ho finita e te la posto.


"Ditemi, sapete chi è... il ciaffo?"
"Questo essere trae origine da un arcaico lamer.
Tanto tempo fa, in una chat oscena oscena, il lamer f1192 si lamentava di non poter inserire le graffe, perché non aveva... IL CIAFFO"(L'uomo che sussurrava ai ciaffi)
PM Quote
Avatar
alexxandro84 (Normal User)
Newbie


Messaggi: 10
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 15:42
Martedì, 28/04/2009
grazie mille, davvero sto facendo la corsa contro il tempo...mia madre è stata operata e ora mi trovo a far tutto in poco tempo, ecco perchè ho chiesto se me lo facevi tu

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo