Rejoignez-nous sur le discord Urban Terror France !
Rejoignez-nous sur le discord Urban Terror France !
Envie de parler avec les autres membres de la communauté ? Alors venez vous connecter, vous vous sentirez moins seul !
Guide rapide concernant l'inscription sur le site officiel du jeu. Créez ainsi votre compte joueur qui permet d'être authentifié sur les serveurs de jeu de la 4.2 !
Statistiques globales et en temps réel de la totalité des serveurs d'Urban Terror. Suivez l'évolution du nombre de joueurs sur Urban Terror !
Code : Tout sélectionner
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <time.h>
#include <math.h>
#include "SDL/SDL_ttf.h"
#include "main.h"
int main (int argc, char *argv[])
{
double score = 0.0, tempsdepart = 0.0;
int continuer = 1, placementProgramme = 0;
srand(time(NULL));
TTF_Init();
SDL_Surface *ecran = NULL, *rectangle = NULL;
SDL_Rect position;
SDL_Event event;
SDL_Init(SDL_INIT_VIDEO);
SDL_WM_SetCaption ("Skill a la souris", NULL);
ecran = SDL_SetVideoMode(largeurFenetre, hauteurFenetre, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, tailleCarre, tailleCarre, 32, 0, 0, 0, 0);
TTF_Font *police = pageAccueil(&score, ecran, event, &continuer, &placementProgramme, &tempsdepart);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 15,150,150));
SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 10,10,10));
SDL_Flip(ecran);
afficherRect(rectangle, &position, ecran, score);
while (continuer)
{
attendreEvent(&continuer, event, &position, ecran, rectangle, &score, &placementProgramme);
}
pageAccueil(&score, ecran, event, &continuer, &placementProgramme, &tempsdepart);
SDL_FreeSurface(ecran);
SDL_FreeSurface(rectangle);
TTF_CloseFont(police);
TTF_Quit();
SDL_Quit();
return 0;
}
int attendreEvent(int *continuer, SDL_Event event, SDL_Rect *pointeurposition, SDL_Surface *ecran, SDL_Surface *rectangle, double *score, int *placementProgramme)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT :
*continuer = 0;
*placementProgramme = 1;
break;
case SDL_MOUSEBUTTONDOWN :
if ((event.motion.x) >= pointeurposition->x && event.motion.x <= ((pointeurposition->x)+tailleCarre-5*(*score-1)) && (event.motion.y) >= pointeurposition->y && event.motion.y <= ((pointeurposition->y)+tailleCarre-5*(*score-1)))
{
afficherRect(rectangle, pointeurposition, ecran, *score);
(*score)++;
}
else
{
if (*score >= 0)
{
*placementProgramme = 2;
*continuer = 0;
}
}
break;
}
}
int afficherRect(SDL_Surface *rectangle, SDL_Rect *pointeurposition, SDL_Surface *ecran, int score)
{
rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE, tailleCarre-5*score, tailleCarre-5*score, 32, 0, 0, 0, 0);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255,255-5*score,255-4*score));
SDL_FillRect(rectangle, NULL, SDL_MapRGB(ecran->format, 35,50,35));
pointeurposition->x = rand()%(800-(tailleCarre-5*score));
pointeurposition->y = rand()%(600-(tailleCarre-5*score));
SDL_BlitSurface(rectangle, NULL, ecran, pointeurposition);
SDL_Flip(ecran);
}
TTF_Font * pageAccueil(double *score, SDL_Surface *ecran, SDL_Event event, int *pointeurSurContinuer, int *placementProgramme, double *tempsdepart)
{
int continuer =1;
double tempsfinal = 0.0, skill=0.0;
TTF_Font *police = NULL;
police = TTF_OpenFont("calibri.ttf", 40);
SDL_Surface *texte = NULL, *texte2 = NULL;
SDL_Color couleurBlanche = {255,255,255};
SDL_Surface *imageDeFond= NULL, *boutonDepart;
SDL_Rect fond, bouton;
fond.x = 0;
fond.y = 0;
bouton.x = 3.0/8.0*largeurFenetre;
bouton.y = 3.0/8.0*hauteurFenetre;
boutonDepart = SDL_CreateRGBSurface(SDL_HWSURFACE, 2.0/8.0*largeurFenetre, 2.0/8.0*hauteurFenetre, 32, 0, 0, 0, 0);
SDL_FillRect(boutonDepart, NULL, SDL_MapRGB(ecran->format, 150, 50, 50));
imageDeFond = SDL_LoadBMP("Grandcanyon.bmp");
if (*score <= 0.5 && *placementProgramme < 1)
{
texte = TTF_RenderText_Blended(police, "commencer", couleurBlanche);
SDL_BlitSurface(imageDeFond, NULL, ecran, &fond);
SDL_BlitSurface(boutonDepart, NULL, ecran, &bouton);
bouton.y = 0.5*hauteurFenetre-0.5*texte->h;
SDL_BlitSurface(texte, NULL, ecran, &bouton);
SDL_Flip(ecran);
do
{
SDL_WaitEvent(&event);
switch (event.type)
{
case SDL_QUIT :
continuer = 0;
*pointeurSurContinuer = 0;
*placementProgramme=1;
break;
case SDL_MOUSEBUTTONDOWN :
if (event.motion.x>=(largeurFenetre-(5.0/8.0*largeurFenetre)) && event.motion.x <= (largeurFenetre-(3.0/8.0*largeurFenetre)) && event.motion.y<=(hauteurFenetre-(3.0/8.0*hauteurFenetre))&& event.motion.y>=(hauteurFenetre-(5.0/8.0*hauteurFenetre)))
{
continuer = 0;
*tempsdepart=SDL_GetTicks();
}
break;
}
}while(continuer == 1);
return police;
}
else if (*score > 0.5 && *placementProgramme != 1 || *placementProgramme == 2)
{
tempsfinal = SDL_GetTicks()-(*tempsdepart);
skill = *score/(tempsfinal/1000)+0.1*(*score-log(tempsfinal/1000));
char scoreFinal[40], texteTemps [40];
int scoreDebug = *score;
sprintf(scoreFinal, "Ton score : %d / 40", scoreDebug);
tempsfinal /=1000;
sprintf(texteTemps, "Ton temps : %f secondes", tempsfinal);
texte = TTF_RenderText_Blended(police, scoreFinal, couleurBlanche);
texte2 = TTF_RenderText_Blended(police, texteTemps, couleurBlanche);
bouton.x = 260;
SDL_BlitSurface(imageDeFond, NULL, ecran, &fond);
SDL_BlitSurface(texte, NULL, ecran, &bouton);
bouton.y +=60;
bouton.x -=100;
SDL_BlitSurface(texte2, NULL, ecran, &bouton);
SDL_Flip(ecran);
do
{
SDL_WaitEvent(&event);
switch (event.type)
{
case SDL_QUIT :
continuer = 0;
break;
}
}while(continuer == 1);
}
}