Tetris / graphic.h / gestion de palette vghi 256 /

Description

TETRIS ? Ca sert a jouer. lol.
J'aime bien les application purement graphique. J'ai pondu un Tetris en attendant de partir dans des simulations purement mathémathiques.
je vous montre ce que ca donne n'hésitez pas a réagir.

Source / Exemple :


#include <iostream.h>
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <time.h>
#include <string.h>

/*
#define Px  450
#define max 64

struct palettetype pal;
struct RGB
	{
	int R[16];
	int G[16];
	int B[16];
	};

void Initgraph();
void GestionPalette(int Key);
void LoadPal(palettetype *pal,RGB *tab);

void Initgraph()
{
     int gdriver = VGA, gmode = VGAHI, errorcode;
     initgraph(&gdriver, &gmode, "");

     errorcode = graphresult();
     if (errorcode != grOk)
     {
	printf("Graphics error: %s\n", grapherrormsg(errorcode));
	printf("Press any key to halt:");
	getch();
	exit(1);
     }

}

  • /
void LoadPal(palettetype *pal,RGB *tab) { char Formechar[15]; //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int R[16]={0 ,27,63,11,60,44,19,63,20,10,63, 0,63,6 ,63,63}; int G[16]={0 ,60, 0,60,11,27,38,63,20,10,63,63, 0,6 ,30,63}; int B[16]={0 ,63, 0,11,60, 1,63,21,20,10, 0,63,63,6 ,63,63}; for (int N=0;N<=15;N++)//copy dans la palette courante { tab->R[N]=R[N]; tab->G[N]=G[N]; tab->B[N]=B[N]; /* setfillstyle(1,0); setcolor(15); bar(Px+31,29*N,Px+200,29*(N+1)); bar(Px+130,0,Px+220,480); sprintf(Formechar,"{%d;%d;%d}",tab->R[N],tab->G[N],tab->B[N]); outtextxy(31 +Px,+29*N, Formechar);
  • /
setrgbpalette(pal->colors[N],tab->R[N],tab->G[N],tab->B[N]); /* setfillstyle(SOLID_FILL, N); bar(Px,29*N, Px+30, 29*(N+1));
  • /
} } void GestionPalette(int Key) { char Formechar[15]; RGB Temp; int Couleur=0; for (Couleur=0;Couleur<=15;Couleur++) { Temp.R[Couleur]=0; Temp.G[Couleur]=0; Temp.B[Couleur]=0; } Couleur=0; getpalette(&pal); do{ setfillstyle(1,Couleur); while (!kbhit()) //attend une r‚ponse {} if (Key!=108) {Key=getch();} //108 charge palette switch(Key) { case 52: Temp.R[Couleur]++; if (Temp.R[Couleur]==max) {Temp.R[Couleur]=0;}; setrgbpalette(pal.colors[Couleur],Temp.R[Couleur],Temp.G[Couleur],Temp.B[Couleur]);break; case 53: Temp.G[Couleur]++; if (Temp.G[Couleur]==max) {Temp.G[Couleur]=0;}; setrgbpalette(pal.colors[Couleur],Temp.R[Couleur],Temp.G[Couleur],Temp.B[Couleur]);break; case 54: Temp.B[Couleur]++; if (Temp.B[Couleur]==max) {Temp.B[Couleur]=0;}; setrgbpalette(pal.colors[Couleur],Temp.R[Couleur],Temp.G[Couleur],Temp.B[Couleur]);break; case 43 : Couleur++;if (Couleur>=16) {Couleur=0 ;}break;//touche + case 45 : Couleur--;if (Couleur<=-1) {Couleur=15;}break;//touche - case 103:Temp.R[Couleur]++; ///touche G/niveau de gris if (Temp.R[Couleur]==max) {Temp.R[Couleur]=0;}; Temp.G[Couleur]=Temp.R[Couleur];Temp.B[Couleur]=Temp.R[Couleur]; setrgbpalette(pal.colors[Couleur],Temp.R[Couleur],Temp.R[Couleur],Temp.R[Couleur]); break; case 108: LoadPal(&pal,&Temp); Key=32;break; //Touche L/ default:break; } setfillstyle(1,0); setcolor(WHITE); bar(Px+31,29*Couleur,Px+200,29*(Couleur+1)); bar(Px+130,0,Px+220,480); sprintf(Formechar,"{%d;%d;%d}",Temp.R[Couleur],Temp.G[Couleur],Temp.B[Couleur]);outtextxy(31 +Px,+29*Couleur, Formechar); sprintf(Formechar,"Col[%d]",Couleur);outtextxy(130+Px,29*Couleur, Formechar); setfillstyle(SOLID_FILL, Couleur); bar(Px,29*Couleur, Px+30, 29*(Couleur+1)); }while(Key!=32); setfillstyle(1,0); bar(Px,0,Px+300,480); //efface la palette } /* void main() { Initgraph(); GestionPalette(0); }
  • /

Conclusion :


Bon bin voila un outil pour modifié la palette RGB en cour...
virer les /**/ pour compiler
bon ya un truc pas propre, ca le ferrais si kelkun pouvais donner un tuyau.
j'ai crée une structure RGB temporaire pour les changement de couleur.
je sais pas comment les RGB sont convertis en char par setrgbpalette.
Il n'y a que 64 niveau de gris !!!!
or 256 / 4 = 64 ou sont les 64 couleur restantes ???
il doit y avoir une histoire d'hexa la dessous. bo je travail dessus.si kelkun peu m'éclairer.

A part ca le tetris est beau.
Mais fodrai gerrer le tableau[254] dynamiquement.
voila ya pas de bug évident.
bon jeu. amusez vous bien. bon ++ */

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.