J'ai essayais de faire un petit quelque chose, pour la page des règles pour mon jeu.
Les règles sont sur 3 pages, regleP1 correspond à la première page, regleP2 à la deuxième et règleP3 à la troisième.
Mon but est de changer de page en cliquant sur le numéro voulu, numero1 renvoi a la première page des règle, numero2 à la deuxième et numero3 à la troisième.
Voici ce que j'ai fais, n'hésiter pas à faire toutes les remarques qui vous passent par la tête.
- Code: Tout sélectionner
/*
regle.c
---------
Par kentin7112,
Rôle : donner les regles.
*/
#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL/SDL_ttf.h>
#include "constantes.h"
#include "jeu.h"
void regle(SDL_Surface* ecran)
{
SDL_Surface *fond = NULL, *regleP1 = NULL, *regleP2 = NULL, *regleP3 = NULL, *numero1 = NULL, *numero2 = NULL, *numero3 = NULL, *retour = NULL, *cliqueX = NULL, *cliqueY = NULL;
SDL_Event event;
SDL_Color couleurOr = {210, 210, 0};
TTF_Font *police1 = NULL, *police2 = NULL;
int continuer = 1;
TTF_Init();
police1 = TTF_Openfont("RioGrande Striped.ttf, 50);
police2 = TTF_Openfont("varsity_regular.ttf, 50);
fond = IMG_Load("reglefond.gif");
SDL_Color couleurOr = {0, 0, 0};
numero1 = TTF_RenderText_Blended(police1, "1", couleurOr);
numero2 = TTF_RenderText_Blended(police1, "2", couleurOr);
numero3 = TTF_RenderText_Blended(police1, "3", couleurOr);
retour = TTF_RenderText_Blended(police2, "RETOUR", couleurOr);
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
}
position.x = 0;
position.y = 0;
SDL_BlitSurface(fond, NULL, ecran, &position); /* Blit du fond */
position.x = 70;
position.y = 500;
SDL_BlitSurface(numero1, NULL, ecran, &position); /* Blit du numero 1 par-dessus */
SDL_Flip(ecran);
position.x = 190;
position.y = 500;
SDL_BlitSurface(numero2, NULL, ecran, &position); /* Blit du numero 2 par-dessus */
SDL_Flip(ecran);
position.x = 310;
position.y = 500;
SDL_BlitSurface(numero3, NULL, ecran, &position); /* Blit du numero 3 par-dessus */
SDL_Flip(ecran);
position.x = 430;
position.y = 500;
SDL_BlitSurface(retour, NULL, ecran, &position); /* Blit du RETOUR par-dessus */
SDL_Flip(ecran);
}
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_MOUSEBUTTONUP:
event.button.x = cliqueX; /* Reperage en x du clique gauche de la souris */
event.button.y = cliqueY; /* Reperage en y du clique gauche de la souris */
if cliqueX > 70 && cliqueX < 120 && cliqueY > 500 && cliqueY < 550 /* zone du numero 1 */
fond = IMG_Load("regleP1.gif");
if cliqueX > 190 && cliqueX < 240 && cliqueY > 500 && cliqueY < 550 /* zone du numero 2 */
fond = IMG_Load("regleP2.gif");
if cliqueX > 310 && cliqueX < 350 && cliqueY > 500 && cliqueY < 550 /* zone du numero 3 */
fond = IMG_Load("regleP3.gif");
if cliqueX > 430 && cliqueX < 750 && cliqueY > 500 && cliqueY < 550 /* zone du mot "RETOUR" */
main(ecran);
break;
}
position.x = 0;
position.y = 0;
SDL_BlitSurface(fond, NULL, ecran, &position); /* Blit du fond */
position.x = 70;
position.y = 500;
SDL_BlitSurface(numero1, NULL, ecran, &position); /* Blit du numero 1 par-dessus */
SDL_Flip(ecran);
position.x = 190;
position.y = 500;
SDL_BlitSurface(numero2, NULL, ecran, &position); /* Blit du numero 2 par-dessus */
SDL_Flip(ecran);
position.x = 310;
position.y = 500;
SDL_BlitSurface(numero3, NULL, ecran, &position); /* Blit du numero 3 par-dessus */
SDL_Flip(ecran);
position.x = 430;
position.y = 500;
SDL_BlitSurface(numero2, NULL, ecran, &position); /* Blit du retour par-dessus */
SDL_Flip(ecran);
}
TTF_CloseFont(police1);
TTF_CloseFont(police2);
TTF_Quit();
SDL_FreeSurface(texte);
SDL_Quit();
return EXIT_SUCCESS;
}
Aux lignes 99-100, je veux que quand le clique dans cette zone là (qui correspond au mot "RETOUR"), sa me renvoi à ma page d'accueil de mon jeu. Est-ce comme sa que je dois écrire pour réaliser cette action?
Merci à tous ceux qui prendront le temps de me lire.