#include <STDIO.H>
#include <STRING.H>
#include <STDLIB.H>
#include "SOURGAME/GAMEGRAP.H"
#include "SOURGAME/GAMETABL.H"
#include "SOURGAME/GAMEBOIT.H"
#include "SOURGAME/GAMEINFO.H"
#include "SOURGAME/GAMECHAR.H"
#define LG_BOITE 150
#define HT_BOITE 150
#define COUL_FOND 112
#define COUL_GH 96
#define COUL_DB 132
#define COUL_CAR_B 240
#define COUL_CAR_J 107
#define COUL_CAR_C 96
void Print_Cl (OCTET,float,float,OCTET,OCTET,char*);
void Combler_Zero (char*,char);
char *str;
void Afficher_Boite_Info (OCTET page,OCTET num)
{
char buffer [7];
unsigned long sc;
short tp;
Afficher_Boite (page);
switch (num)
{
case PAUSE:
{
Print_Cl (page,7,8,COUL_CAR_B,COUL_FOND,"PAUSE");
Print_Cl (page,5.5,16,COUL_CAR_C,COUL_FOND,"");
break;
}
case ECHAP:
{
Print_Cl (page,5,4,COUL_CAR_J,COUL_FOND,"C");
Print_Cl (page,6,4,COUL_CAR_B,COUL_FOND,"ONTINUER");
Print_Cl (page,4,9,COUL_CAR_J,COUL_FOND,"R");
Print_Cl (page,5,9,COUL_CAR_B,COUL_FOND,"ECOMMENCER");
Print_Cl (page,6,14,COUL_CAR_J,COUL_FOND,"Q");
Print_Cl (page,7,14,COUL_CAR_B,COUL_FOND,"UITTER");
break;
}
case BONUS:
{
Print_Cl (page,3,4,COUL_CAR_B,COUL_FOND,"SCORE");
sc = Lir_Score () ;
sprintf(buffer,"%ld",sc) ;
Combler_Zero (buffer,6);
Print_Cl (page,10,4,COUL_CAR_J,COUL_FOND,buffer);
Print_Cl (page,5,6,COUL_CAR_B,COUL_FOND,"+");
Print_Cl (page,3,8,COUL_CAR_B,COUL_FOND,"TEMPS");
tp = Lir_Temps () ;
sprintf(buffer,"%d",tp) ;
Combler_Zero (buffer,3);
Print_Cl (page,13,8,COUL_CAR_J,COUL_FOND,buffer);
Print_Cl (page,3,10,COUL_CAR_B,COUL_FOND,"_____________");
Print_Cl (page,5,13,COUL_CAR_B,COUL_FOND,"=");
Inc_Score ((unsigned long)tp) ;
sc = Lir_Score ();
sprintf(buffer,"%ld",sc) ;
Combler_Zero (buffer,6);
Print_Cl (page,10,13,COUL_CAR_J,COUL_FOND,buffer);
Print_Cl (page,5.5,16,COUL_CAR_C,COUL_FOND,"");
break;
}
case FIN_PARTIE:
{
Print_Cl (page,6.5,3,COUL_CAR_B,COUL_FOND,"PARTIE");
Print_Cl (page,5,6,COUL_CAR_B,COUL_FOND,"TERMINEE!");
Print_Cl (page,3.5,10,COUL_CAR_B,COUL_FOND,"VOTRE SCORE:");
sc = Lir_Score () ;
sprintf(buffer,"%ld",sc) ;
Combler_Zero (buffer,6);
Print_Cl (page,6.5,13,COUL_CAR_J,COUL_FOND,buffer);
Print_Cl (page,5.5,16,COUL_CAR_C,COUL_FOND,"");
break;
}
case LECTURE_TABLEAU:
{
Print_Cl (page,6,4,COUL_CAR_B,COUL_FOND,"LECTURE");
Print_Cl (page,8.5,9,COUL_CAR_B,COUL_FOND,"DU");
Print_Cl (page,6,14,COUL_CAR_B,COUL_FOND,"TABLEAU");
break;
}
}
}
void Afficher_Boite (OCTET page)
{
OCTET couleur;
short cptstr;
short origx;
short origy;
short cpty;
short cptx;
origx = ( ( X_MAX * LG_BOB ) - LG_BOITE ) / 2;
origy = ( ( Y_MAX * HT_BOB ) - HT_BOITE ) / 2;
str = (char *) malloc ( LG_BOITE * HT_BOITE );
cptstr = 0;
for (cpty = 0;
cpty < HT_BOITE;
cpty ++)
{
for (cptx = 0;
cptx < LG_BOITE;
cptx ++)
{
couleur = Lire_Point (page,origx + cptx,origy + cpty);
*(str + cptstr) = couleur;
cptstr ++;
}
}
for (cpty = 0;
cpty < 15;
cpty ++)
{
for (cptx = 0;
cptx < 15;
cptx ++)
{
Afficher_Bob (page,BOB_BLOC+1,
origx + ( cptx * 10 ),
origy + ( cpty * 10 ),
MASK_OFF);
}
}
Tracer_Droite (page,origx+LG_BOITE-1,origy+HT_BOITE-1,
origx+LG_BOITE-1,origy,COUL_DB);
Tracer_Droite (page,origx+LG_BOITE-1,origy+HT_BOITE-1,
origx,origy+HT_BOITE-1,COUL_DB);
Tracer_Droite (page,origx,origy,origx+LG_BOITE-1,origy,COUL_GH);
Tracer_Droite (page,origx,origy,origx,origy+HT_BOITE-1,COUL_GH);
}
void Effacer_Boite (OCTET page)
{
OCTET couleur;
short cptstr;
short origx;
short origy;
short cpty;
short cptx;
origx = ( ( X_MAX * LG_BOB ) - LG_BOITE ) / 2;
origy = ( ( Y_MAX * HT_BOB ) - HT_BOITE ) / 2;
cptstr = 0;
for (cpty = 0;
cpty < HT_BOITE;
cpty ++)
{
for (cptx = 0;
cptx < LG_BOITE;
cptx ++)
{
couleur = *(str + cptstr);
cptstr ++;
Afficher_Point (page,origx + cptx,origy + cpty,couleur);
}
}
free(str);
}
void Print_Cl (OCTET page,float x,float y,OCTET cl_car,OCTET cl_fond,
char *message)
{
short origx;
short origy;
short posx;
short posy;
origx = ( ( X_MAX * LG_BOB ) - LG_BOITE ) / 2;
origy = ( ( Y_MAX * HT_BOB ) - HT_BOITE ) / 2;
posx = ( origx + ( (x - 1) * 8 ) ) + 7;
posy = ( origy + ( (y - 1) * 8 ) ) + 7;
Print (page,posx,posy,cl_car,cl_fond,message);
}
void Combler_Zero (char *buffer,char lgnb)
{
char cpt;
char nbzero;
char backup [7];
nbzero = lgnb - strlen (buffer);
if (nbzero > 0)
{
strcpy (backup,"\0");
for (cpt = 0;
cpt < nbzero;
cpt ++)
strcat (backup,"0");
strcat (backup,buffer);
strcpy (buffer,backup);
}
}