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
GLScacchi - Scacchi.h

Scacchi.h

Caricato da: Oligoatria
Scarica il programma completo

  1. // Gioco degli scacchi (win32/linux)
  2. // by Rand
  3. // 27 / 03 / 2007 - adattato da Oligoatria a classe per il progetto GLWorld
  4.  
  5. #ifndef SCACCHI_H
  6. #define SCACCHI_H
  7.  
  8.  
  9. #define a 1
  10. #define b 2
  11. #define c 3
  12. #define d 4
  13. #define e 5
  14. #define f 6
  15. #define g 7
  16. #define h 8
  17.  
  18. #define bianco 0
  19. #define nero 1
  20.  
  21. #define vuoto 0
  22. #define bre 1
  23. #define bdon 2
  24. #define balf 3
  25. #define bcav 4
  26. #define btor 5
  27. #define bped 6
  28. #define nre 7
  29. #define ndon 8
  30. #define nalf 9
  31. #define ncav 10
  32. #define ntor 11
  33. #define nped 12
  34.  
  35.  
  36. class RandScacchi  
  37. {
  38. public:
  39.         RandScacchi();
  40.         void main_scacchi();  // restituisce la mossa del computer in (mossa)
  41.         short int scac[10][10]; //LA prime e ultime righe e colonne sono inutilizzate. C'è un bordo di caselle in più per evitare l'errore di segmentation fault in certi punti del programma.
  42.         char MiaMossa[4]; // lettera,numero - lettera,numero   
  43.         void sceglimossa (unsigned int m);
  44.         void calcolamosse (short int modo); //se modo=1 trova tutte le mosse di una posizione lasciandole nell'array globale possibili. Se modo=0 comincia una ricorsione indiretta con sceglimossa per trovare la mossa migliore.             
  45.         short int controllo(unsigned int m);   //Questa funzione è usata da acquisisci. COntrollo torna 0 se la mossa dell'utente non è accettabile.
  46.         short int controlloMossa(unsigned int m);   //Uguale dalla precedente, ma controlla che la mossa sia possibile senza guardare il tipo di pezzo
  47.         unsigned int possibili[100]; //array usato in fase di controllo di mossa dell'utente. Contiene tutte le mosse possibili di una posizione.
  48.         void modifica(unsigned int m); //accetta in ingresso una mossa ed esegue la mossa sulla scacchiera globale scac[][].
  49.         void cambiacolore();
  50.         int vincitore(); //capisce se la partita è terminata (re catturato) dichiara il vincitore all'utente.
  51.         short int livello; //è la profondità masima di analisi
  52.         bool CompMossaScelta;
  53.         int mossa;
  54.                
  55. private:               
  56.         void raccogli(unsigned int m); // CON O SENZA ARGOMENTO? //si occupa raccogliere le mosse prodotte da calcolamosse quando modo=1 riempendo l'array possibili.
  57.         void inizializza(); //prepara le variabili globali per l'inizio della ricorsione fra calcolamosse e sceglimossa
  58.         void stampam(unsigned int m); //accetta in ingresso una mossa e la stampa in formato: lettera,numero-lettera,numero.
  59.         void stampap(); //disegna la scacchiera globale scac e la relativa posizione dei pezzi sullo schermo.
  60.         unsigned int acquisisci(); //chiede all'utente di inserire una mossa in formato lettera,numero-lettera,numero e la traduce in formato unsigned int             
  61.         void apertura();  //inizializza l'array ap con le aperture (prime mosse di una partita di scacchi).
  62.         void apri(short int colore_utente); //A seconda che il computer giochi col bianco o col nero, apri sceglie una delle aperture contenute nell'array ap e la esegue. (gestisce le prime 2 mosse dela partita)    
  63.         void posiniz();  //Dispone i pezzi in posizione iniziale sulla scacchiera.
  64.         short int mossaimposs (unsigned int m);  //accetta una mossa in ingresso da calcolamosse, torna 0 o 1 se la mossa è accettabile, 2 se non lo è.
  65.  
  66.         unsigned int mossa_giocata,mossa_in_analisi;
  67.         short int col_prof; //colore profondità.
  68.         short int nmossa; //numero di mossa: viene incrementato ad ogni mossa compita dall'tente o dal computer.
  69.         float effe; //effetto: è una variabile usata in fase di analisi della posizione.rappresenta l'effetto di una certa mossa (cattura di un pezzo, promozione di un pedone ecc.)
  70.         short int prof; //profondità. é la profondità di analisi della posizione.      
  71.         float ramo[7]; //array usato in fase di analisi.
  72.        
  73.         unsigned int ap[2][4][2]; //contiene le prime 2 mosse della partita già preparate.
  74.         int cont; //è il contatore di possibili.
  75.         int vincitore_;
  76. };
  77.  
  78.  
  79. #endif /* SCACCHI_H */