Skip to content
Snippets Groups Projects
Commit 932ed74a authored by FOURREAUX Mathias's avatar FOURREAUX Mathias
Browse files

collisions et lecture de fichiers.txt

parent 316c52af
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,7 @@ int main(int argc, char *argv[])
SDL_Window *fenetre;
SDL_Event evenements;
SDL_Renderer *ecran;
SDL_Texture *fond, *perso, *balleLongueJaune;
SDL_Texture *fond, *perso, *balleLongueJaune, *mur;
SDL_Rect persoPos;
float mouseX, mouseY;
int vitesse = 25, tempsActuel = 0, tempsPrecedent = 0, tempsActuelTir = 0, tempsActuelAnim = 0, tempsPrecedentAnim = 0;
......@@ -26,7 +26,84 @@ int main(int argc, char *argv[])
ListeP persosListe;
Perso *joueur_ptr;
SDL_Texture *sprites[3];
SDL_Rect mur1;
mur1.x = 500;
mur1.y = 500;
mur1.h = 100;
mur1.w = 104;
SDL_Rect mur2;
mur2.x = 10;
mur2.y = 10;
mur2.h = 56;
mur2.w = 47;
SDL_Rect mur3;
mur3.x = 500;
mur3.y = 659;
mur3.h = 85;
mur3.w = 500;
SDL_Rect tabMur[3];
tabMur[0] = mur1;
tabMur[1] = mur2;
tabMur[2] = mur3;
/**
FILE* fichier = NULL;
fichier = fopen("map.txt", "r");
char caractereActuel;
char nombre = "";
if (fichier != NULL){
// Boucle de lecture des caract�res un � un
int i = 0;
do
{
if( 'M' == fgetc(fichier)){ // On lit le caract�re
printf("J'ai trouv� un mur !");
caractereActuel = fgetc(fichier);
while(caractereActuel != ':'){
caractereActuel = fgetc(fichier);
nombre = nombre + caractereActuel;
printf("%c", nombre);
}
printf("%c", nombre);
tabMur[i].x = nombre;
while(caractereActuel != ':'){
caractereActuel = fgetc(fichier);
}
while(caractereActuel != ':'){
caractereActuel = fgetc(fichier);
}
tabMur[i].y = fgetc(fichier);
while(caractereActuel != ':'){
caractereActuel = fgetc(fichier);
}
tabMur[i].w = fgetc(fichier);
while(caractereActuel != ':'){
caractereActuel = fgetc(fichier);
}
tabMur[i].h = fgetc(fichier);
i++;
}
else{
caractereActuel = fgetc(fichier);
}
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourn� EOF (fin de fichier)
fclose(fichier);
}
*/
//Initialisation SDL
if(SDL_Init(SDL_INIT_VIDEO < 0))
......@@ -38,7 +115,7 @@ int main(int argc, char *argv[])
IMG_Init(IMG_INIT_PNG);
//Cration fentre
//Création fenêtre
fenetre = SDL_CreateWindow("gameName", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1000, 720, SDL_WINDOW_RESIZABLE);
if(fenetre == NULL)
{
......@@ -46,12 +123,13 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
//Cration renderer
//Création renderer
ecran = SDL_CreateRenderer(fenetre, -1, SDL_RENDERER_ACCELERATED);
//Chargement images
balleLongueJaune = charger_image("sprites/projectiles/balle/balle_longue_jaune.png", ecran);
fond = charger_image("sprites/fond.png", ecran);
mur = charger_image("sprites/mur.png", ecran);
perso = charger_image("sprites/perso/handgun/idle/survivor_idle.png", ecran);
sprites[0] = perso;
perso = charger_image("sprites/perso/handgun/move/survivor_moving.png", ecran);
......@@ -64,18 +142,18 @@ int main(int argc, char *argv[])
p = nouvel_ennemi_1(ecran, sprites);
persosListe = cons_listeP(persosListe, p);
//Pareil pour la balle + ses autres paramtres (voir projectile.h)
//Pareil pour la balle + ses autres paramètres (voir projectile.h)
balle b = nouvelle_balle(balleLongueJaune, 0, persoPos);
ballesTirees = nouvelle_listeB(b);
//Boucle de jeu
while(!gameover)
{
//Petit timer pour pas dpasser 60 excutions/sec (provisoire)
//Petit timer pour pas dépasser 60 exécutions/sec (provisoire)
tempsActuel = SDL_GetTicks();
if (tempsActuel > tempsPrecedent + 16)
{
//Dtection vnements
//Détection événements
while(SDL_PollEvent(&evenements))
{
switch(evenements.type)
......@@ -128,18 +206,21 @@ int main(int argc, char *argv[])
//Gestion dplacement/angle de tir
deplacement_joueur(joueur_ptr);
//Gestion déplacement/angle de tir
deplacement_joueur(joueur_ptr, tabMur);
angle_joueur((joueur_ptr), mouseX, mouseY);
//Tir
tempsActuelTir = SDL_GetTicks();
ballesTirees = tir_update(ballesTirees, persosListe, tempsActuelTir, balleLongueJaune, vitesse);
//Affichage
SDL_RenderClear(ecran);
SDL_RenderCopy(ecran, fond, NULL, NULL);
for(int i = 0; i < 3; i++){
SDL_RenderCopyEx(ecran, mur, NULL, &tabMur[i], 0, NULL, SDL_FLIP_NONE);
}
afficher_listeP(ecran, persosListe);
afficher_listeB(ecran, ballesTirees);
SDL_RenderPresent(ecran);
......
M:322:523:20:40
M:20:231:100:30
M:800:600:60:40
\ No newline at end of file
......@@ -31,7 +31,7 @@ Perso nouvel_ennemi_1(SDL_Renderer *renderer, SDL_Texture **sprites){
Perso p;
p.tempsTirPrecedent = 0;
p.image = sprites[2];
//gnre des coordonnes de spawn alatoires(provisoire)
//génère des coordonnées de spawn aléatoires(provisoire)
p.pos.x = rand()%900 + 100;
p.pos.y = rand()%600 + 100;
p.pos.w = 60;
......@@ -55,7 +55,7 @@ void afficher_perso(SDL_Renderer *renderer, Perso p)
SDL_RenderCopyEx(renderer, p.image, &p.srcrect, &p.pos, p.angle, NULL, SDL_FLIP_NONE);
}
void deplacement_joueur(Perso *p)
void deplacement_joueur(Perso *p, SDL_Rect *tabMur)
{
int dX = 0;
int dY = 0;
......@@ -86,8 +86,29 @@ void deplacement_joueur(Perso *p)
dY = dY/4;
}
p->pos.x += dX * p->vitesse;
p->pos.y += dY * p->vitesse;
int res = 0;
if(p->pos.x + dX*p->vitesse < 950 && p->pos.x + dX*p->vitesse > 0 && p->pos.y + dY*p->vitesse < 670 && p->pos.y + dY*p->vitesse > 0){
for(int i = 0; i < 3; i++){
if (p->pos.x + dX*p->vitesse <= tabMur[i].x + tabMur[i].w && p->pos.x + p->pos.w + dX*p->vitesse >= tabMur[i].x && p->pos.y + dY*p->vitesse<= tabMur[i].y + tabMur[i].h
&& p->pos.h + p->pos.y + dY*p->vitesse >= tabMur[i].y ) {
//collision d�tect�e !
res = -100;
}
else{
res += 1;
}
}
}
if(res >= 1){
p->pos.x += dX * p->vitesse;
p->pos.y += dY * p->vitesse;
}
}
......
......@@ -28,6 +28,6 @@ struct s_Personnage
Perso nouveau_joueur(SDL_Renderer *renderer, SDL_Texture **sprites);
Perso nouvel_ennemi_1(SDL_Renderer *renderer, SDL_Texture **sprites);
void afficher_perso(SDL_Renderer *renderer, Perso p);
void deplacement_joueur(Perso *p);
void deplacement_joueur(Perso *p, SDL_Rect *tabMur);
void angle_joueur(Perso *p, float mouseX, float mouseY);
void animer_perso(Perso *p);
sprites/mur.png

37.6 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment