This commit is contained in:
Camille Chauvet
2023-01-19 13:41:58 +01:00
parent 7d7de10b7a
commit 8b200fb8ba
15 changed files with 164 additions and 41 deletions

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/01/06 14:23:00 by cchauvet #+# #+# */
/* Updated: 2023/01/13 16:03:54 by cchauvet ### ########.fr */
/* Updated: 2023/01/19 13:32:14 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
@ -30,12 +30,35 @@ static void *ft_gen_asset(char *color, size_t case_size, t_data *data)
return (img);
}
static char **ft_color_gen(void)
{
size_t i;
char **tab;
tab = ft_calloc(NB_COLORS + 1, sizeof(char *));
if (tab == NULL)
return (NULL);
i = 0;
while (i < NB_COLORS)
{
tab[i] = ft_ultoa_base(((1 << 23) * i) / NB_COLORS, HEX);
if (tab[i] == NULL)
{
ft_cancel(tab, i);
return (NULL);
}
i++;
}
tab[i] = NULL;
return (tab);
}
int ft_gen_assets(t_data *data)
{
char **colors;
size_t i;
colors = ft_split(COLORS, '|');
colors = ft_color_gen();
if (colors == NULL)
return (1);
i = 0;
@ -43,9 +66,14 @@ int ft_gen_assets(t_data *data)
{
data->assets[i] = ft_gen_asset(colors[i], CASE_SIZE, data);
if (data->assets[i] == NULL)
{
ft_freer_tab_ultimate(1, colors);
return (1);
}
data->assets[i + NB_COLORS] = ft_gen_asset(colors[i],
WINDOW_SIZE, data);
(RENDER_DISTANCE * 2 + 1) * CASE_SIZE, data);
if (data->assets[i + NB_COLORS] == NULL)
ft_freer_tab_ultimate(1, colors);
if (data->assets[i + NB_COLORS] == NULL)
return (1);
i++;

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/13 15:49:23 by cchauvet #+# #+# */
/* Updated: 2023/01/16 18:46:55 by cchauvet ### ########.fr */
/* Updated: 2023/01/19 13:39:23 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
@ -56,11 +56,12 @@ int ft_draw_map(t_data *data)
void *img;
ft_fill_pos(data->map);
data->nb_swaps = ++data->nb_swaps % NB_COLORS;
data->nb_swaps = ft_random_generator(0, NB_COLORS - 6);
patern = ft_get_player_map(*data->map);
if (patern == NULL)
return (1);
ft_draw_img(data, data->assets[data->nb_swaps + NB_COLORS], 0, 0);
ft_draw_img(data, data->assets[data->nb_swaps % NB_COLORS + NB_COLORS], 0,
0);
tab[1] = -1;
while (patern[++tab[1]] != NULL)
{

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/12 17:20:17 by cchauvet #+# #+# */
/* Updated: 2023/01/16 18:47:20 by cchauvet ### ########.fr */
/* Updated: 2023/01/19 13:30:11 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
@ -24,12 +24,15 @@ int ft_initialised(char *path, t_data *data)
}
data->mlx = mlx_init();
ft_printf("Generating assets ...");
ft_gen_assets(data);
if (ft_gen_assets(data))
ft_exit(data);
ft_printf("\rGenerating assets [FINISHED]\n");
data->map = map;
data->window = mlx_new_window(data->mlx, WINDOW_SIZE, WINDOW_SIZE, "long");
data->window = mlx_new_window(data->mlx,
(RENDER_DISTANCE * 2 + 1) * CASE_SIZE,
(RENDER_DISTANCE * 2 + 1) * CASE_SIZE, "long");
data->nb_foots = 0;
data->nb_swaps = ft_random_generator(0, NB_COLORS);
data->nb_swaps = ft_random_generator(0, NB_COLORS - 6);
ft_draw_map(data);
mlx_hook(data->window, 17, (0L), ft_exit, data);
mlx_hook(data->window, 2, (1L << 0), ft_key, data);

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/01/04 16:20:03 by cchauvet #+# #+# */
/* Updated: 2023/01/16 18:47:59 by cchauvet ### ########.fr */
/* Updated: 2023/01/19 13:40:52 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
@ -17,20 +17,19 @@
# include <unistd.h>
# include <fcntl.h>
# include "../minilibx-linux/mlx.h"
# define CASE_SIZE 64
# define CASE_SIZE 128
# define XPM_HEADER "\nstatic char * XFACE[] = {\""
# define COLORS "silver|gray|white|maroon|red|purple|fuchsia|green|lime|olive|yellow|navy|blue|teal|aqua|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"
# define NB_COLORS 93
# define RENDER_DISTANCE 5
# define WINDOW_SIZE (RENDER_DISTANCE * 2 + 1) * CASE_SIZE
# define RENDER_DISTANCE 4
# define NB_COLORS 100
# define HEX "0123456789abcdef"
typedef struct s_square
typedef struct s_square
{
char *color;
size_t size;
} t_square;
} t_square;
typedef struct s_map
typedef struct s_map
{
size_t x_len;
size_t y_len;
@ -38,9 +37,9 @@ typedef struct s_map
char **patern;
size_t player_pos[2];
size_t exit_pos[2];
} t_map;
} t_map;
typedef struct s_data
typedef struct s_data
{
void *mlx;
void *window;
@ -48,7 +47,7 @@ typedef struct s_data
t_map *map;
size_t nb_swaps;
size_t nb_foots;
} t_data;
} t_data;
int ft_test_map_is_finishable(t_map *map);
int ft_exit(t_data *data);

View File

@ -6,7 +6,7 @@
/* By: cchauvet <cchauvet@student.42angouleme.fr +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/01/04 13:53:03 by cchauvet #+# #+# */
/* Updated: 2023/01/11 16:53:45 by cchauvet ### ########.fr */
/* Updated: 2023/01/19 12:34:40 by cchauvet ### ########.fr */
/* */
/* ************************************************************************** */
@ -74,7 +74,7 @@ static char *ft_gen_xpm_content(t_square square)
free(temp);
if (content == NULL)
return (NULL);
temp = ft_strmerger(5, "/* XPM */", content, "a c ", square.color, "\",\n");
temp = ft_strmerger(5, "/* XPM */", content, "a c #", square.color, "\",\n");
free(content);
if (temp == NULL)
return (NULL);