Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Algoritmo scacchi
Forum - C/C++ - Algoritmo scacchi - Pagina 4

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


Messaggi: 13
Iscritto: 17/03/2009

Segnala al moderatore
Postato alle 18:49
Mercoledì, 18/03/2009
Testo quotato

Postato originariamente da gigisoft:

Testo quotato

Postato originariamente da pollon85:

Codice sorgente - presumibilmente C++

  1. void printScacchiera(char [][8]); //8metodi per i possibili spostamenti Cavallo//
  2. void UnPassoSuDueDestra(char [][8],char [], int, int);
  3. void UnPassoSuDueSinistra(char [][8],char [], int, int);
  4. void UnPassoGiuDueSinistra(char [][8],char [], int, int);
  5. void UnPassoGiuDueDestra(char [][8],char [], int, int);    
  6. void UnPassoDestraDueSu(char [][8],char [], int, int);
  7. void UnPassoDestraDueGiu(char [][8],char [], int, int);  
  8. void UnPassoSinistraDueSu(char [][8],char [], int, int);  
  9. void UnPassoSinistraDueGiu(char [][8],char [], int, int);






Scusa un dubbio, ma cosa fanno esattamente queste



Sono i possibili movimenti del Cavallo,visto che sulla scacchiera il Cavallo si muove a L,compie in totale 3 passi,per questo li ho chiamati 1passo sopra e 2 a dx...ho fatto la stessa cosa del programma di "clikkami" solo che lui faceva muovere la Regina e quindi gestiva solo i movimenti in verticale e in orizzontale senza limiti perchè la Regina non ha limiti e per questo lui li ha chiamati void ReginaNord,void ReginaSud.Nel mio caso invece devo gestire altri tipi di movimenti..spero di essere stata più chiara

:hail:


pollon85 ha allegato un file: regole07.gif (5337 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 18:55
Mercoledì, 18/03/2009
Testo quotato

Postato originariamente da pollon85:

Testo quotato

Postato originariamente da gigisoft:

Testo quotato

Postato originariamente da pollon85:

Codice sorgente - presumibilmente C++

  1. void printScacchiera(char [][8]); //8metodi per i possibili spostamenti Cavallo//
  2. void UnPassoSuDueDestra(char [][8],char [], int, int);
  3. void UnPassoSuDueSinistra(char [][8],char [], int, int);
  4. void UnPassoGiuDueSinistra(char [][8],char [], int, int);
  5. void UnPassoGiuDueDestra(char [][8],char [], int, int);    
  6. void UnPassoDestraDueSu(char [][8],char [], int, int);
  7. void UnPassoDestraDueGiu(char [][8],char [], int, int);  
  8. void UnPassoSinistraDueSu(char [][8],char [], int, int);  
  9. void UnPassoSinistraDueGiu(char [][8],char [], int, int);






Scusa un dubbio, ma cosa fanno esattamente queste



Sono i possibili movimenti del Cavallo,visto che sulla scacchiera il Cavallo si muove a L,compie in totale 3 passi,per questo li ho chiamati 1passo sopra e 2 a dx...ho fatto la stessa cosa del programma di "clikkami" solo che lui faceva muovere la Regina e quindi gestiva solo i movimenti in verticale e in orizzontale senza limiti perchè la Regina non ha limiti e per questo lui li ha chiamati void ReginaNord,void ReginaSud.Nel mio caso invece devo gestire altri tipi di movimenti..spero di essere stata più chiara

:hail:



so come si muove il cavallo, intendevo dire, cosa ritornano?

PM Quote
Avatar
pollon85 (Normal User)
Newbie


Messaggi: 13
Iscritto: 17/03/2009

Segnala al moderatore
Postato alle 19:09
Mercoledì, 18/03/2009
Ti chiedo sempre scusa per la mia ignoranza in materia!!!!
Io avevo questo dubbio nel senso che io ho creato le mie funzioni sulla falsa riga di questa
Codice sorgente - presumibilmente C#

  1. void ReginaNordOvest(char scacchiera[][8],char colonne[], int posRiga, int posCol)
  2. {
  3. int i,j, pedoneTrovato = 0;
  4.  
  5. for(i=posCol, j=posRiga; i>=0 && j>=0;i--, j--)
  6. //solo che qui non ho messo il for,ma i=posRiga;j=posCol;1<i<8 && 1<j<8;i=i+1;j=j+2;//
  7. //da qui in poi dovrei modificare questo per il mio caso,ma ho grossa crisi//
  8. {
  9. if((scacchiera[j][i ] == 'P') && (pedoneTrovato == 0))
  10. {
  11. if((scacchiera[j-1][i-1] != 'P') && (scacchiera[j-1][i+1] != 'P'))
  12. {
  13. printf("Pedone in %c%d\n",colonne[i ],8-j);
  14. pedoneTrovato = 1;
  15. }
  16. else
  17. {
  18. pedoneTrovato = 1;
  19. }
  20. }
  21. }
  22. }



naturalmente GRAZIE sempre!!!!

Ultima modifica effettuata da pollon85 il 18/03/2009 alle 19:10
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 9:59
Giovedì, 19/03/2009
Testo quotato

Postato originariamente da pollon85:

Ti chiedo sempre scusa per la mia ignoranza in materia!!!!
Io avevo questo dubbio nel senso che io ho creato le mie funzioni sulla falsa riga di questa
Codice sorgente - presumibilmente Plain Text

  1. [...]



naturalmente GRAZIE sempre!!!!




Beh ti potresti semplicemente fare una cosa del genere:

Codice sorgente - presumibilmente C#

  1. void ReginaNordOvest(char scacchiera[][8],char colonne[], int posRiga, int posCol)
  2. {
  3.  int i = posCol, j = posRiga, pedoneTrovato = 0;
  4.  if ((scacchiera[j - 1][i - 2] == 'P') && ((j - 1) > 0) && ((i - 2) > 0))
  5.     {
  6.      printf("Pedone in %c%d\n",colonne[i - 2], j + 1);
  7.      pedoneTrovato++;
  8.     }
  9.  
  10.  if ((scacchiera[j + 1][i - 2] == 'P') ((j + 1) < 9) && ((i - 2) > 0))
  11.     {
  12.      printf("Pedone in %c%d\n",colonne[i - 2], j + 1);
  13.      pedoneTrovato++;
  14.     }
  15.  
  16.  if ((scacchiera[j + 2][i - 1] == 'P') && ((j + 2) < 9) && ((i - 1) > 0)) ||
  17.     {
  18.      printf("Pedone in %c%d\n",colonne[i - 1], j + 1);
  19.      pedoneTrovato++;
  20.     }
  21.  
  22.  if ((scacchiera[j + 2][i + 1] == 'P') && ((j + 2) < 9) && ((i + 1) < 9)) ||
  23.     {
  24.      printf("Pedone in %c%d\n",colonne[i + 1], j + 1);
  25.      pedoneTrovato++;
  26.     }
  27.  
  28.  if ((scacchiera[j + 1][i + 2] == 'P') && ((j + 1) < 9) && ((i + 2) < 9)) ||
  29.     {
  30.      printf("Pedone in %c%d\n",colonne[i + 2], j + 1);
  31.      pedoneTrovato++;
  32.     }
  33.  
  34.  if ((scacchiera[j - 1][i + 2] == 'P') && ((j - 1) > 0) && ((i + 2) < 9)) ||
  35.     {
  36.      printf("Pedone in %c%d\n",colonne[i + 2], j + 1);
  37.      pedoneTrovato++;
  38.     }
  39.  
  40.  if ((scacchiera[j - 2][i + 1] == 'P') && ((j - 2) > 0) && ((i + 1) < 9)) ||
  41.     {
  42.      printf("Pedone in %c%d\n",colonne[i + 1], j + 1);
  43.      pedoneTrovato++;
  44.     }
  45.  
  46.  if ((scacchiera[j - 2][i - 1] == 'P') && ((j - 2) > 0) && ((i - 1) > 0)))
  47.     {
  48.      printf("Pedone in %c%d\n",colonne[i - 1], j + 1);
  49.      pedoneTrovato++;
  50.     }
  51.    
  52. }



dimmi che ne pensi :k:

Luigi

PM Quote
Avatar
pollon85 (Normal User)
Newbie


Messaggi: 13
Iscritto: 17/03/2009

Segnala al moderatore
Postato alle 13:01
Giovedì, 19/03/2009
Penso che va benissimo!!!:blush:
Non so come ringraziarti :hail:
Alla fine come mi hai dimostrato tu,posso dichiarare un'unica funzione
che mi gestisce tutte le mosse :k: giusto???Ho capito bene??? :doubt:
Comunque GRAZIE MILLE per tutto il tempo che hai perso per aiutarmi!!! :hail::hail:

PM Quote
Avatar
pollon85 (Normal User)
Newbie


Messaggi: 13
Iscritto: 17/03/2009

Segnala al moderatore
Postato alle 14:39
Giovedì, 19/03/2009
Scusami se ancora scrivo...alla fine  dopo averlo riprovato ho visto che non mi trovo sempre.Il codice finale che ho scritto è:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5.  
  6. void printScacchiera(char [][8]);
  7. void MossaCavallo(char [][8],char [], int, int);
  8. void main(void)
  9. {
  10.     int i;
  11.     int posRiga, posCol;
  12.  
  13.     char colonne[8] = {'a','b','c','d','e','f','g','h'};
  14.  
  15.     char scacchiera[][8] =                    
  16.     {{'b','n','b','n','b','n','b','n'},
  17.     {'n','b','n','b','n','b','n','b'},
  18.     {'b','n','b','n','b','n','b','n'},
  19.     {'n','b','n','b','n','b','n','b'},
  20.     {'b','n','b','n','b','n','b','n'},
  21.     {'n','b','n','b','n','b','n','b'},
  22.     {'b','n','b','n','b','n','b','n'},
  23.     {'n','b','n','b','n','b','n','b'}};
  24.  
  25.     srand(time(NULL));
  26.  
  27.     i = 0;
  28.  
  29.     while(i<8)
  30.     {
  31.         posRiga = rand()%8;
  32.         posCol = rand()%8;
  33.  
  34.         if(scacchiera[posRiga][posCol] == 'b' || scacchiera[posRiga][posCol] == 'n')
  35.         {
  36.             scacchiera[posRiga][posCol] = 'P';
  37.             i++;
  38.         }
  39.     }
  40.    
  41.     i = 0;
  42.  
  43.     while(i<1)
  44.     {
  45.         posRiga = rand()%8;
  46.         posCol = rand()%8;
  47.  
  48.         if(scacchiera[posRiga][posCol] == 'b' || scacchiera[posRiga][posCol] == 'n')
  49.         {
  50.             scacchiera[posRiga][posCol] = 'C'; // Cavallo
  51.             i++;
  52.         }
  53.     }
  54.  
  55.     printf("Regina in %c%d puo' catturare i seguenti pedoni: \n\n",colonne[posCol],8-posRiga);
  56.    MossaCavallo(scacchiera,colonne,posRiga,posCol);
  57.          printScacchiera(scacchiera);
  58. }
  59. void printScacchiera(char scacchiera[][8])
  60. {
  61.     int i,j;
  62.  
  63.     printf("\n");
  64.     printf("  a b c d e f g h\n\n");
  65.     for(i=0;i<8;i++)
  66.     {
  67.         printf("%d",8-i);
  68.         for(j=0;j<8;j++)
  69.         {
  70.             printf(" %c", scacchiera[i ][j]);
  71.            
  72.         }
  73.         printf("\n");
  74.     }
  75. }
  76.  
  77.  
  78. void MossaCavallo(char scacchiera[][8],char colonne[], int posRiga, int posCol)
  79. {
  80. int i = posCol, j = posRiga, pedoneTrovato = 0;
  81. if ((scacchiera[j - 1][i - 2] == 'P') && ((j - 1) > 0) && ((i - 2) > 0))
  82.     {
  83.      printf("Pedone in %c%d\n",colonne[i - 2], j + 1);
  84.      pedoneTrovato++;
  85.     }
  86.  
  87. if ((scacchiera[j + 1][i - 2] == 'P')&& ((j + 1) < 9) && ((i - 2) > 0))
  88.     {
  89.      printf("Pedone in %c%d\n",colonne[i - 2], j + 1);
  90.      pedoneTrovato++;
  91.     }
  92.  
  93. if ((scacchiera[j + 2][i - 1] == 'P') && ((j + 2) < 9) && ((i - 1) > 0))
  94.     {
  95.      printf("Pedone in %c%d\n",colonne[i - 1], j + 1);
  96.      pedoneTrovato++;
  97.     }
  98.  
  99. if ((scacchiera[j + 2][i + 1] == 'P') && ((j + 2) < 9) && ((i + 1) < 9))
  100.     {
  101.      printf("Pedone in %c%d\n",colonne[i + 1], j + 1);
  102.      pedoneTrovato++;
  103.     }
  104.  
  105. if ((scacchiera[j + 1][i + 2] == 'P') && ((j + 1) < 8) && ((i + 2) < 9))
  106.     {
  107.      printf("Pedone in %c%d\n",colonne[i + 2], j + 1);
  108.      pedoneTrovato++;
  109.     }
  110.  
  111. if ((scacchiera[j - 1][i + 2] == 'P') && ((j - 1) > 0) && ((i + 2) < 9))
  112.     {
  113.      printf("Pedone in %c%d\n",colonne[i + 2], j + 1);
  114.      pedoneTrovato++;
  115.     }
  116.  
  117. if ((scacchiera[j - 2][i + 1] == 'P') && ((j - 2) > 0) && ((i + 1) < 9))
  118.     {
  119.      printf("Pedone in %c%d\n",colonne[i + 1], j + 1);
  120.      pedoneTrovato++;
  121.     }
  122.  
  123. if ((scacchiera[j - 2][i - 1] == 'P') && ((j - 2) > 0) && ((i - 1) > 0))
  124.     {
  125.      printf("Pedone in %c%d\n",colonne[i - 1], j + 1);
  126.      pedoneTrovato++;
  127.     }
  128.  
  129. }


La posizione del Cavallo la legge sempre bene,ma quella dei pedoni no
E ad esempio mandandolo in esecuzione,una delle volte mi ha detto che il pedone catturabile era in c6 e b6,mentre sulla scacchiera i pedoni stavano in c5 e b5...quindi dovrei modificare qualche iterazione?
SCUSAMI!!!!8-|

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 15:01
Giovedì, 19/03/2009
Testo quotato

Postato originariamente da pollon85:

La posizione del Cavallo la legge sempre bene,ma quella dei pedoni no
E ad esempio mandandolo in esecuzione,una delle volte mi ha detto che il pedone catturabile era in c6 e b6,mentre sulla scacchiera i pedoni stavano in c5 e b5...quindi dovrei modificare qualche iterazione?
SCUSAMI!!!!8-|




Piccolo errore ( D'oh!!! ) allora negli if è:
Codice sorgente - presumibilmente C/C++

  1. printf("Pedone in %c%d\n",colonne[i - 1], j);



:k:

Luigi

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 15:03
Giovedì, 19/03/2009
Testo quotato

Postato originariamente da pollon85:

La posizione del Cavallo la legge sempre bene,ma quella dei pedoni no
E ad esempio mandandolo in esecuzione,una delle volte mi ha detto che il pedone catturabile era in c6 e b6,mentre sulla scacchiera i pedoni stavano in c5 e b5...quindi dovrei modificare qualche iterazione?
SCUSAMI!!!!8-|




Piccolo errore ( D'oh!!! ) allora negli if è:
Codice sorgente - presumibilmente C/C++

  1. printf("Pedone in %c%d\n",colonne[i - 1], j);



:k:

Luigi

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