home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 17
/
Freelog017.iso
/
BeOS
/
ababelone
/
Sources
/
PlateauDeJeuGraphique.h
< prev
next >
Wrap
C/C++ Source or Header
|
2000-11-21
|
6KB
|
164 lines
/*
Copyright (C) 2000 by Hervé PHILIPPE <rv@bemail.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _PLATEAUDEJEUGRAPHIQUE_H_
#define _PLATEAUDEJEUGRAPHIQUE_H_
#include <View.h>
#include <Bitmap.h>
#include <TranslationUtils.h>
#include <string.h>
#include <Entry.h>
#include "PlateauDeJeu.h"
#include "MenuDynamique.h"
#include "TextesDuLogiciel.h"
#define BOULE_CACHEE BRect(-1,-1,-1,-1)
#define ORIGINE_X 370 //370
#define ORIGINE_Y 110 //110
#define LARGEUR_PLATEAU 1024 //1024
#define HAUTEUR_PLATEAU 686 //686
#define LARGEUR_CASE_BOULE 58 //58
#define HAUTEUR_CASE_BOULE 50 //50
// REMARQUE : "LARGEUR_CASE_BOULE/2" toujours inférieur à "HAUTEUR_CASE_BOULE"
#define LARGEUR_BOULE 50 //50
#define HAUTEUR_BOULE 50 //50
#define LARGEUR_PETITE_BOULE 20 //20
#define HAUTEUR_PETITE_BOULE 20 //20
#define OBLIQUE_HAUTEUR_ENTRE_BOULES 6 //6
#define LARGEUR_ENTRE_BOULES 7 //7
#define RECT_BOULE_COULEUR_A_JOUER BRect(230,110,230+LARGEUR_BOULE+25,110+HAUTEUR_BOULE+25)
#define RECT_COURONNE_DE_LAURIER BRect(210,100,210+LARGEUR_BOULE+65,100+HAUTEUR_BOULE+65)
// Rectangle qui contient l'affichage des types des joueurs (humain, ordinateur...)
#define RECT_JOUEURS BRect(10,515,360,690)
// Rectangle qui contient l'affichage des score (nombre de boules pour chaque joueur)
#define RECT_SCORE BRect(40,380,180,400)
//#define RECT_SCORE BRect(10,100,360,505)
/* REMARQUE sur les directions :
1 2
\ /
0 -- -- 3
/ \
5 4
*/
class PlateauDeJeuGraphique : public PlateauDeJeu, public BView
{
// FONCTIONS
public:
PlateauDeJeuGraphique(BRect frame, char *name, TextesDuLogiciel* textes, MenuDynamique* menu_plateau, uint8 nombre_boules = 28, uint8 nombre_joueurs = 2);
virtual ~PlateauDeJeuGraphique();
virtual void Draw(BRect updateRect);
void MiseAJourBufferEntier();
void MiseAJourBuffer(BRect updateRect);
void ChangerEchelle(float echelle);
virtual void MouseDown(BPoint where);
virtual void MouseUp(BPoint where);
virtual void MouseMoved(BPoint where, uint32 transit, const BMessage *message);
void SetBouleInvisible(int8 numero_boule);
bool BouleVisible(int8 numero_boule);
BRect Boule(int8 numero_boule);
BRect DeplacerBoule(int8 numero_boule, int delta_x, int delta_y);
void SetBoule(int8 numero_boule, const BRect& rect);
BRect SetPositionBoule(int8 numero_boule, const BPoint& point);
void AfficherSelect(uint8 numero_select, int8 numero_boule);
void EffacerSelect(uint8 numero_select);
void AfficherFleche(uint8 numero_fleche, int8 numero_boule);
void EffacerFleche(uint8 numero_fleche);
BRect Fleche(uint8 numero_fleche);
void EffacerToutSelectEtFleche();
void InitialiserSelectEtFleche();
BPoint DirectionGraphique(int8 direction);
void AfficherBouleCouleurAJouer(int8 couleur, bool pause = false, bool couronne_de_Laurier = false);
void EffacerBouleCouleurAJouer();
void ChangerNombreBoules(uint8 nombre_boules);
void ChangerTypeJoueurs(uint8 nombre_joueurs, uint8* tableau_joueurs, uint8* tableau_boules_ejectees);
void ChangerPlateauDeJeu(uint8 numero_plateau_de_jeu = 0);
private:
BBitmap* Buffer();
BRect ConvertirAvecEchelle(const BRect& rect);
BPoint ConvertirAvecEchelleInverse(const BPoint& position);
// VARIABLES ET CONSTANTES
private:
// Image Bitmap pour le plateau de jeu
BBitmap* m_PlateauBitmap;
// Image Bitmap pour le buffer de la fenêtre (buffer non matériel...)
BBitmap* m_BufferBitmap;
// Tableau des images Bitmap pour les boules
BBitmap** m_TableauBoulesJoueursBitmap;
// Tableau des coordonnées graphiques pour les boules
BRect* m_TableauBoules;
// Tableau des images Bitmap pour les 3 types de sélections
BBitmap** m_TableauSelectBitmap;
// Tableau des coordonnées graphiques pour les 3 types de sélections
BRect* m_TableauSelect;
// REMARQUE : ."Select" n°1 est la 'sélection active'
// (uniquement quand le bouton de la souris est appuyé)
// ."Select" n°2 est la 'sélection permanente'
// (c'est la sélection normale)
// ."Select" n°3 est la 'sélection du milieu'
// (sélection 'active' quand 3 boules sont sélectionnées,
// en vue d'un déplacement latéral)
// Tableau des images Bitmap pour les 6 flèches
BBitmap** m_TableauFlechesBitmap;
// Tableau des coordonnées graphiques pour les 6 flèches
BRect* m_TableauFleches;
// Image Bitmap pour la croix (joueur qui a perdu)
BBitmap* m_CouronneDeLaurierBitmap;
// Booléen pour savoir si l'on doit ou non afficher la couronne de Laurier
// (pour le vainqueur)
bool m_CouronneDeLaurier;
// Booléen pour savoir si l'on doit ou non afficher "Pause"
bool m_Pause;
// Tableau du nombre de boules éjectées hors du plateau de jeu (par joueur)
// REMARQUE : ce n'est que le pointeur, puisque ce tableau est en fait créé
// dans l'objet "PlateauInterne"
uint8* m_TableauBoulesEjectees;
// Echelle pour l'affichage (en se servant de la fonction "SetScale" pour BeOS)
float m_Echelle;
// Couleur de la boule du joueur courant (joueur qui doit jouer)
int8 m_BouleCouleurAJouer;
// Tableau des chaînes de caractères pour le type des joueurs
char** m_TableauChainesJoueurs;
// Objet qui contient tous les textes de aba_Be_lone
TextesDuLogiciel* m_Textes;
// Objet qui sert pour l'image du plateau de jeu
MenuDynamique* m_MenuPlateauDeJeu;
// Tableau qui contient la définition des 6 directions (graphiquement)
static const BPoint m_kTableauDirectionGraphique[6];
};
#endif