Bonsoir tout le monde, voila je code actuellement en C avec la lib SDL, et je bute sur une erreur tout simple de syntaxe, que je n´arrive pas a résoudre...
Bon voici le code, j´espère que quelqu´un pourra m´aider
- include <stdlib.h>
- include <stdio.h>
// Includes SDL
- include <SDL/SDL.h>
- include <SDL/SDL_image.h>
- include <SDL/SDL_ttf.h>
const int MIN_WIDTH = 0;
const int MAX_WIDTH = 640;
int continuer = 1;
SDL_Surface *ecran = NULL, *Raquette = NULL, *Balle = NULL, *Score = NULL;
SDL_Rect raquette_pos, balle_pos, score_pos;
raquette_pos.x = 0;
raquette_pos.y = 464;
score_pos.x = 600;
score_pos.y = 50;
TTF_Font *police = NULL;
SDL_Color couleurNoire = {0, 0, 0};
void init()
{
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER); // Initialisation de la SDL
TTF_Init(); // init de TTF
police = TTF_OpenFont("data/police.ttf", 12);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); // Ouverture de la fenêtre
SDL_WM_SetCaption("Game in C & SDL", NULL);
SDL_ShowCursor(SDL_DISABLE); // efface le pointeur de la souris
}
void physique(SDL_Rect *pos)
{
if(pos->x < MIN_WIDTH)
{
pos->x = MIN_WIDTH;
}
if(pos->x + pos->w > MAX_WIDTH)
{
pos->x = MAX_WIDTH - pos->w;
}
}
void load()
{
Raquette = IMG_Load("data/raquette.png");
Score = TTF_RenderText_Blended(police, "TEST", couleurNoire);
}
void procces()
{
SDL_Event event;
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_MOUSEMOTION:
raquette_pos.x = event.motion.x - (Raquette->w / 2);
raquette_pos.y = (Raquette->h /2);
break;
}
}
void clean()
{
//Liberation des surfaces
SDL_FreeSurface(Balle);
SDL_FreeSurface(Raquette);
SDL_FreeSurface(ecran);
SDL_FreeSurface(Score);
TTF_CloseFont(police);
TTF_Quit(); // quitte la librairie TTF
//On quitte SDL
SDL_Quit();
}
int main(int argc, char *argv[])
{
init();
load();
while (continuer == 1)
{
process();
physique(&raquette_pos);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_BlitSurface(Raquette, NULL, ecran, &raquette_pos);
SDL_BlitSurface(Score, NULL, ecran, &score_pos);
SDL_Flip(ecran);
}
clean();
return 0;
}
/// J´essaye de rendre mon code le plus clair possible en utilisant le max de fonction pour automatiser le tout.
Requête n°2: Pour mon petit Casse brique j´aimerais savoir comment générer des rangées de briques sur la fenêtre, je me vois mal coder 100 brique a la "main"
je pensait a une fonction void brique() avec une boucle for
et un incrémentation des coordonnées x et y, mais je ne voi pa comment faire..
Et aussi comment supprimer une brique rentrée en contact avec la balle?
je vois bien un SDL_FreeSurface(Briquetouchée);..
Et ainsi cet fonction pourrai me permettre d´incrémenter ma variable score.
Merci a ceux qui auront le courage de lire et de m´aider a résoudre mes problèmes.