home *** CD-ROM | disk | FTP | other *** search
/ Freelog 17 / Freelog017.iso / BeOS / ababelone / Sources / PlateauDeJeuGraphique.h < prev    next >
C/C++ Source or Header  |  2000-11-21  |  6KB  |  164 lines

  1. /*
  2.     Copyright (C) 2000 by Herv├⌐ PHILIPPE <rv@bemail.org>
  3.  
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.  
  9.     This library is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.     Library General Public License for more details.
  13.  
  14.     You should have received a copy of the GNU Library General Public
  15.     License along with this library; if not, write to the Free
  16.     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. */
  18.  
  19. #ifndef _PLATEAUDEJEUGRAPHIQUE_H_
  20. #define _PLATEAUDEJEUGRAPHIQUE_H_
  21.  
  22. #include <View.h>
  23. #include <Bitmap.h>
  24. #include <TranslationUtils.h>
  25. #include <string.h>
  26. #include <Entry.h>
  27.  
  28. #include "PlateauDeJeu.h"
  29. #include "MenuDynamique.h"
  30. #include "TextesDuLogiciel.h"
  31.  
  32. #define BOULE_CACHEE                    BRect(-1,-1,-1,-1)
  33. #define ORIGINE_X                        370        //370
  34. #define ORIGINE_Y                        110        //110
  35. #define LARGEUR_PLATEAU                    1024    //1024
  36. #define HAUTEUR_PLATEAU                    686        //686
  37. #define LARGEUR_CASE_BOULE                58        //58
  38. #define HAUTEUR_CASE_BOULE                50        //50
  39. // REMARQUE : "LARGEUR_CASE_BOULE/2" toujours inf├⌐rieur ├á "HAUTEUR_CASE_BOULE"
  40. #define LARGEUR_BOULE                    50        //50
  41. #define HAUTEUR_BOULE                    50        //50
  42. #define LARGEUR_PETITE_BOULE            20        //20
  43. #define HAUTEUR_PETITE_BOULE            20        //20
  44. #define OBLIQUE_HAUTEUR_ENTRE_BOULES    6        //6
  45. #define LARGEUR_ENTRE_BOULES            7        //7
  46.  
  47. #define RECT_BOULE_COULEUR_A_JOUER        BRect(230,110,230+LARGEUR_BOULE+25,110+HAUTEUR_BOULE+25)
  48. #define RECT_COURONNE_DE_LAURIER        BRect(210,100,210+LARGEUR_BOULE+65,100+HAUTEUR_BOULE+65)
  49. // Rectangle qui contient l'affichage des types des joueurs (humain, ordinateur...)
  50. #define RECT_JOUEURS                    BRect(10,515,360,690)
  51. // Rectangle qui contient l'affichage des score (nombre de boules pour chaque joueur)
  52. #define RECT_SCORE                        BRect(40,380,180,400)
  53. //#define RECT_SCORE                        BRect(10,100,360,505)
  54.  
  55. /*    REMARQUE sur les directions :
  56.       1   2
  57.        \ /
  58.    0 --   -- 3
  59.        / \
  60.       5   4
  61. */
  62. class PlateauDeJeuGraphique : public PlateauDeJeu, public BView
  63. {
  64. // FONCTIONS
  65.     public:
  66.                         PlateauDeJeuGraphique(BRect frame, char *name, TextesDuLogiciel* textes, MenuDynamique* menu_plateau, uint8 nombre_boules = 28, uint8 nombre_joueurs = 2);
  67.         virtual            ~PlateauDeJeuGraphique();
  68.         virtual void    Draw(BRect updateRect);
  69.         void            MiseAJourBufferEntier();
  70.         void            MiseAJourBuffer(BRect updateRect);
  71.         void            ChangerEchelle(float echelle);
  72.         virtual void    MouseDown(BPoint where);
  73.         virtual void    MouseUp(BPoint where);
  74.         virtual void    MouseMoved(BPoint where, uint32 transit, const BMessage *message);
  75.         void            SetBouleInvisible(int8 numero_boule);
  76.         bool            BouleVisible(int8 numero_boule);
  77.         BRect            Boule(int8 numero_boule);
  78.         BRect            DeplacerBoule(int8 numero_boule, int delta_x, int delta_y);
  79.         void            SetBoule(int8 numero_boule, const BRect& rect);
  80.         BRect            SetPositionBoule(int8 numero_boule, const BPoint& point);
  81.  
  82.         void            AfficherSelect(uint8 numero_select, int8 numero_boule);
  83.         void            EffacerSelect(uint8 numero_select);
  84.  
  85.         void            AfficherFleche(uint8 numero_fleche, int8 numero_boule);
  86.         void            EffacerFleche(uint8 numero_fleche);
  87.         BRect            Fleche(uint8 numero_fleche);
  88.  
  89.         void            EffacerToutSelectEtFleche();
  90.  
  91.         void            InitialiserSelectEtFleche();
  92.         BPoint            DirectionGraphique(int8 direction);
  93.  
  94.         void            AfficherBouleCouleurAJouer(int8 couleur, bool pause = false, bool couronne_de_Laurier = false);
  95.         void            EffacerBouleCouleurAJouer();
  96.  
  97.         void            ChangerNombreBoules(uint8 nombre_boules);
  98.         void            ChangerTypeJoueurs(uint8 nombre_joueurs, uint8* tableau_joueurs, uint8* tableau_boules_ejectees);
  99.  
  100.         void            ChangerPlateauDeJeu(uint8 numero_plateau_de_jeu = 0);
  101.  
  102.     private:
  103.         BBitmap*        Buffer();
  104.         BRect            ConvertirAvecEchelle(const BRect& rect);
  105.         BPoint            ConvertirAvecEchelleInverse(const BPoint& position);
  106.  
  107. // VARIABLES ET CONSTANTES
  108.     private:
  109.     // Image Bitmap pour le plateau de jeu
  110.         BBitmap*        m_PlateauBitmap;
  111.     // Image Bitmap pour le buffer de la fen├¬tre (buffer non mat├⌐riel...)
  112.         BBitmap*        m_BufferBitmap;
  113.  
  114.     // Tableau des images Bitmap pour les boules
  115.         BBitmap**        m_TableauBoulesJoueursBitmap;
  116.     // Tableau des coordonn├⌐es graphiques pour les boules
  117.         BRect*            m_TableauBoules;
  118.  
  119.     // Tableau des images Bitmap pour les 3 types de s├⌐lections
  120.         BBitmap**        m_TableauSelectBitmap;
  121.     // Tableau des coordonn├⌐es graphiques pour les 3 types de s├⌐lections
  122.         BRect*            m_TableauSelect;
  123.     // REMARQUE :    ."Select" n┬░1 est la 's├⌐lection active'
  124.     //                    (uniquement quand le bouton de la souris est appuy├⌐)
  125.     //                ."Select" n┬░2 est la 's├⌐lection permanente'
  126.     //                    (c'est la s├⌐lection normale)
  127.     //                ."Select" n┬░3 est la 's├⌐lection du milieu'
  128.     //                    (s├⌐lection 'active' quand 3 boules sont s├⌐lectionn├⌐es,
  129.     //                    en vue d'un d├⌐placement lat├⌐ral)
  130.  
  131.     // Tableau des images Bitmap pour les 6 fl├¿ches
  132.         BBitmap**        m_TableauFlechesBitmap;
  133.     // Tableau des coordonn├⌐es graphiques pour les 6 fl├¿ches
  134.         BRect*            m_TableauFleches;
  135.     // Image Bitmap pour la croix (joueur qui a perdu)
  136.         BBitmap*        m_CouronneDeLaurierBitmap;
  137.     // Bool├⌐en pour savoir si l'on doit ou non afficher la couronne de Laurier
  138.     // (pour le vainqueur)
  139.         bool            m_CouronneDeLaurier;
  140.     // Bool├⌐en pour savoir si l'on doit ou non afficher "Pause"
  141.         bool            m_Pause;
  142.  
  143.     // Tableau du nombre de boules ├⌐ject├⌐es hors du plateau de jeu (par joueur)
  144.     // REMARQUE : ce n'est que le pointeur, puisque ce tableau est en fait cr├⌐├⌐
  145.     // dans l'objet "PlateauInterne"
  146.         uint8*            m_TableauBoulesEjectees;
  147.  
  148.     // Echelle pour l'affichage (en se servant de la fonction "SetScale" pour BeOS)
  149.         float            m_Echelle;
  150.     // Couleur de la boule du joueur courant (joueur qui doit jouer)
  151.         int8            m_BouleCouleurAJouer;
  152.     // Tableau des cha├«nes de caract├¿res pour le type des joueurs
  153.         char**            m_TableauChainesJoueurs;
  154.     // Objet qui contient tous les textes de aba_Be_lone
  155.         TextesDuLogiciel*    m_Textes;
  156.     // Objet qui sert pour l'image du plateau de jeu
  157.         MenuDynamique*    m_MenuPlateauDeJeu;
  158.  
  159.     // Tableau qui contient la d├⌐finition des 6 directions (graphiquement)
  160. static    const BPoint    m_kTableauDirectionGraphique[6];
  161. };
  162.  
  163. #endif
  164.