commencement menu + addaptatif

This commit is contained in:
2024-12-21 11:45:49 +01:00
parent 40640698f7
commit 7f9433f505
12 changed files with 95 additions and 27 deletions

View File

@@ -5,7 +5,7 @@
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
void screenDisplay (char **tab, int size);
void screenDisplay (char **tab, int x, int y);
int getMaxSize (dis display_user);
void displayImage (SDL_Renderer *renderer, SDL_Texture *texture, vect pos,
int size);

View File

@@ -8,13 +8,14 @@
#include <stdlib.h>
#include <time.h>
#define EMPTY 0
#define WALL 1
#define EMPTY 1
#define WALL 0
#define BOX 2
#define TARGET 3
#define BOX_ON_TARGET 4
#define PLAYER 5
#define PLAYER_ON_TARGET 6
#define BUTTON 7
typedef struct Vecteur
{
@@ -39,9 +40,8 @@ typedef struct essential_sdl
unsigned int size_menu;
} dis;
char **creatArea2D (const unsigned int N);
void free2D (char **tab, int N);
void screenDisplay (char **tab, int size);
char **creatArea2D (const int x, const int y);
void free2D (char **tab, int x);
bool isWin (char **tab2d, vect *targets, int nbr_targets);
bool islose (char **tab2d, const int N);
bool blockBox (char **tab2d, vect box_coor);

View File

@@ -3,4 +3,6 @@
#include "function.h"
vect *fileToTab2D (const char *name_file, char **tab,
const unsigned N, vect *player, int *nbr_targets);
int countCustomMaps(char *name_directory);
char ** generatorMenu(char *name_directory, int *x , int *y);
#endif // !READ_H

8
maps/custom_0.txt Normal file
View File

@@ -0,0 +1,8 @@
################
# #
# IIIIIIIIIII #
# CCCCCCCCCCC #
# #
# #
# P #
################

8
maps/custom_1.txt Normal file
View File

@@ -0,0 +1,8 @@
################
# #
# IIIIIIIIIII #
# CCCCCCCCCCC #
# #
# #
# P #
################

View File

@@ -1,5 +1,5 @@
#####
#PCI#
#####
#####
# C #
#I #
#####

View File

@@ -17,17 +17,18 @@
/**
* \brief La fonction permet d'afficher simplement le plateau de jeu dans le
* terminal.
* \param tab Le tableau 2d carre du plateau.
* \param size La taille du plateau.
* \param tab Le tableau 2d du plateau.
* \param x Le mombre de ligne.
* \param y Le nombre de colonnes.
* \return Void
*/
void screenDisplay (char **tab, int size)
void screenDisplay (char **tab, int x ,int y )
{
// puts("0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ");
char element[7] = { ' ', '#', 'S', '.', '*', '@', '+' };
for (int i = 0; i < size; ++i)
char element[7] = { '#', '_', 'S', '.', '*', '@', '+' };
for (int i = 0; i < x; ++i)
{
for (int j = 0; j < size; ++j)
for (int j = 0; j < y; ++j)
{
printf ("%c ", element[(int)tab[i][j]]);
}

View File

@@ -23,20 +23,20 @@
* \param N La valeur N est le nombre d'élément dans le tableau.
* \return Le pointeur du tableau 2D carre de char (1 octet).
*/
char **creatArea2D (const unsigned int N)
char **creatArea2D (const int x, const int y)
{
char **tab2d;
tab2d = calloc (N, sizeof (char *));
tab2d = calloc (x, sizeof (char *));
if (tab2d == NULL)
{
return NULL;
}
bool fail = false;
unsigned int i;
for (i = 0; i < N && !fail; ++i)
int i;
for (i = 0; i < x && !fail; ++i)
{
tab2d[i] = calloc (N, sizeof (char));
tab2d[i] = calloc (y, sizeof (char));
if (tab2d[i] == NULL)
{
fail = true;
@@ -45,7 +45,7 @@ char **creatArea2D (const unsigned int N)
if (fail)
{
unsigned int j;
int j;
for (j = 0; j < i; ++j)
{
free (tab2d[j]);
@@ -62,10 +62,10 @@ char **creatArea2D (const unsigned int N)
* \param N Le nombre d'éléments.
* \return Void.
*/
void free2D (char **tab, int N)
void free2D (char **tab, int x)
{
int i;
for (i = 0; i < N; ++i)
for (i = 0; i < x; ++i)
{
free (tab[i]);
}
@@ -178,7 +178,7 @@ void move (char **tab, vect *playerPos, vect direction, score *score_user)
case 2:
// move player and the box
tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
tab[playerPos->x + direction.x][playerPos->y + direction.y] = PLAYER;
tab[playerPos->x + direction.x * 2][playerPos->y + direction.y * 2]
= BOX;
score_user->move_box++;

View File

@@ -26,18 +26,21 @@ int main ()
vect *targets;
int nbr_targets;
score playerScore;
char **tab2d = creatArea2D (SIZE_PLAY);
char **tab2d = creatArea2D (SIZE_PLAY, SIZE_PLAY);
score score_user = {0, 0, 0,0};
int x,y;
char**menu = generatorMenu("maps", &x, &y);
screenDisplay(menu, x, y);
targets
= fileToTab2D ("test.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
= fileToTab2D ("maps/original_1.txt", tab2d, SIZE_PLAY, playerPos, &nbr_targets);
screenDisplayGameSDL (tab2d, &display_user);
screenDisplay (tab2d, SIZE_PLAY);
inGameLoop (tab2d, SIZE_PLAY, playerPos, targets, nbr_targets,
&display_user, &score_user);
//screenDisplay(tab2d, SIZE_PLAY, SIZE_PLAY);
SDL_DestroyWindow (display_user.window);
SDL_DestroyRenderer (display_user.renderer);
free2D (tab2d, SIZE_PLAY);

View File

@@ -5,6 +5,7 @@
#include "../include/function.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* \brief La fonction permet de stocker la zone de jeu en fonction de la lecture d'un fichier.
@@ -68,3 +69,48 @@ vect *fileToTab2D (const char *name_file, char **tab,
fclose (file);
return targets;
}
int countCustomMaps(char *name_directory)
{
int nbr = 0;
char name_map[50] = "";
sprintf(name_map, "%s/custom_%d.txt",name_directory ,nbr);
FILE *file = fopen(name_map, "r");
while (file != NULL)
{
nbr++;
sprintf(name_map, "%s/custom_%d.txt",name_directory ,nbr);
printf("%p, %d, %s\n", file, nbr, name_map);
file = fopen(name_map, "r");
}
return nbr;
}
char ** generatorMenu(char *name_directory, int *x, int *y)
{
int nbr_custom = countCustomMaps("maps");
(*x) = 7;
(*y)= 5*(3+nbr_custom) +2;
char **menu = creatArea2D(*x,*y);
int i = 1;
for (i = 1;i < *y-1; ++i)
{
menu[4][i] = EMPTY;
}
int j,k ;
for (j = 5; j < *y; j+=5)
{
for (k = 1 ; k < 4; ++k)
{
menu[k][j] = EMPTY;
}
}
return menu;
}