diff --git a/README b/README index b0130e2..1688010 100644 --- a/README +++ b/README @@ -25,3 +25,16 @@ commande intégrée dans le jeu | 7 PI / 4 [SO] | PI / 4 [SE] 0 [ sud ] + +--[ Credits + +-[ Code + +- kcolin +- tchampio + +-[ Graphics + +- kcolin +- B. (perks, power switch) +- tchampio diff --git a/ressources/good_maps/testmap_2.cub b/ressources/good_maps/testmap_2.cub index 1654d82..7ee952e 100644 --- a/ressources/good_maps/testmap_2.cub +++ b/ressources/good_maps/testmap_2.cub @@ -8,7 +8,7 @@ C 225,30,0 1111111111111111111111111 1000000000110000000000001 - 1011000001110000000000001 + 1011000001110000z00000001 10D1000000000000000000001 111111111011000001110M00000000001 100000000011000001110111110111111 diff --git a/ressources/zombie.xpm b/ressources/zombie.xpm new file mode 100644 index 0000000..e4f87e3 --- /dev/null +++ b/ressources/zombie.xpm @@ -0,0 +1,70 @@ +/* XPM */ +static char *dummy[]={ +"64 64 3 1", +"# c #2c2c2c", +"a c #308ca3", +". c #ff00dc", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......######aa########aaaaaa##aa####aa####aaaaaa##########......", +"......######aa########aaaaaa##aa####aa####aaaaaa##########......", +"......########aa########aa####aaaa##aa######aa############......", +"......########aa########aa####aaaa##aa######aa############......", +"......##########aa######aa####aa##aaaa######aa############......", +"......##########aa######aa####aa##aaaa######aa############......", +"......########aa########aa####aa####aa######aa############......", +"......########aa########aa####aa####aa######aa############......", +"......######aa########aaaaaa##aa####aa######aa############......", +"......######aa########aaaaaa##aa####aa######aa############......", +"......####################################################......", +"......####################################################......", +"......################aaaa######aaaa####aa####aa##########......", +"......################aaaa######aaaa####aa####aa##########......", +"......##############aa####aa##aa##aaaa##aa####aa##########......", +"......##############aa####aa##aa##aaaa##aa####aa##########......", +"......##################aa####aaaa##aa##aaaaaaaa##########......", +"......##################aa####aaaa##aa##aaaaaaaa##########......", +"......################aa######aa####aa##aa####aa##########......", +"......################aa######aa####aa##aa####aa##########......", +"......##############aaaaaaaa####aaaa####aa####aa##########......", +"......##############aaaaaaaa####aaaa####aa####aa##########......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"......####################################################......", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................", +"................................................................"}; diff --git a/src/consts.h b/src/consts.h index ce437e1..536ce88 100644 --- a/src/consts.h +++ b/src/consts.h @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:54:36 by kcolin #+# #+# */ -/* Updated: 2025/08/14 21:23:25 by tchampio ### ########.fr */ +/* Updated: 2025/08/18 13:51:33 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,6 +39,7 @@ # define REV_TEX "ressources/revive.xpm" # define DBLTAP_TEX "ressources/doubletap.xpm" # define MYSTERY_TEX "ressources/box.xpm" +# define ZOMBIE_TEX "ressources/zombie.xpm" # ifdef BONUS # define COMPILED_TEXT "Compiled with bonuses" diff --git a/src/main.c b/src/main.c index 60523db..7a64ba5 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:14:30 by kcolin #+# #+# */ -/* Updated: 2025/08/18 13:23:26 by kcolin ### ########.fr */ +/* Updated: 2025/08/18 20:05:29 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,6 +63,9 @@ int main(int argc, char **argv) { t_cub3d_data data; + ft_printf("Cub3d - Call of Duty Zombies shareware edition. Credits to " + "\e[0;32mkcolin\e[0m, \e[0;32mB.\e[0m (for some textures) and " + "\e[0;32mtchampio\e[0m\n"); if (argc < 2) return (ft_printf("Error: Missing cub3d file\n"), 1); init_cub3d_data(&data, argv); diff --git a/src/map/forbidden_characters.c b/src/map/forbidden_characters.c index dbbdce5..138dbac 100644 --- a/src/map/forbidden_characters.c +++ b/src/map/forbidden_characters.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:18:13 by kcolin #+# #+# */ -/* Updated: 2025/08/12 16:18:08 by tchampio ### ########.fr */ +/* Updated: 2025/08/18 13:46:15 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ */ bool has_forbidden_characters(char *line) { - static const char *allowedchars = " 10NSEWMQJD\n"; + static const char *allowedchars = " 10NSEWMQJDz\n"; size_t strsize; int i; diff --git a/src/sprites/create_sprite.c b/src/sprites/create_sprite.c index 4e683bf..987d484 100644 --- a/src/sprites/create_sprite.c +++ b/src/sprites/create_sprite.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* create_sprite.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: tchampio +#+ +:+ +#+ */ +/* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2025/08/12 15:43:19 by tchampio #+# #+# */ -/* Updated: 2025/08/18 12:55:21 by tchampio ### ########.fr */ +/* Created: 2025/08/18 13:52:23 by kcolin #+# #+# */ +/* Updated: 2025/08/18 19:19:53 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,15 +35,22 @@ t_sprite *place_right_sprite(t_cub3d_data *data, char c, double x, double y) t_sprite *sprite; if (c == 'M') + { sprite = create_sprite(data, MYSTERY_TEX, x + 0.5, y + 0.5); + sprite->sprite_type = BOX; + } if (c == 'Q') - sprite = create_sprite(data, - REV_TEX, x + 0.5, y + 0.5); + sprite = create_sprite(data, REV_TEX, x + 0.5, y + 0.5); if (c == 'J') - sprite = create_sprite(data, - JUGG_TEX, x + 0.5, y + 0.5); + sprite = create_sprite(data, JUGG_TEX, x + 0.5, y + 0.5); if (c == 'D') - sprite = create_sprite(data, - DBLTAP_TEX, x + 0.5, y + 0.5); + sprite = create_sprite(data, DBLTAP_TEX, x + 0.5, y + 0.5); + if (c == 'z') + { + sprite = create_sprite(data, ZOMBIE_TEX, x + 0.5, y + 0.5); + sprite->sprite_type = ZOMBIE; + } + if (c == 'D' || c == 'Q' || c == 'J') + sprite->sprite_type = PERK; return (sprite); } diff --git a/src/sprites/move_sprites.c b/src/sprites/move_sprites.c index 47cfd90..4cbdcbb 100644 --- a/src/sprites/move_sprites.c +++ b/src/sprites/move_sprites.c @@ -6,22 +6,39 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/08/18 13:22:50 by kcolin #+# #+# */ -/* Updated: 2025/08/18 13:25:07 by kcolin ### ########.fr */ +/* Updated: 2025/08/18 19:51:41 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ #include "move_sprites.h" #include "sprite.h" +#include "../../libft/includes/libft.h" +#include void move_sprites(t_cub3d_data *data) { - int i; + int i; + double dx; + double dy; + double dist; + static double zombie_movement = MOVEMENT_SPEED / 1.5; i = 0; while (i < data->sprite_counter) { if (data->sprite_list[i]->sprite_type == ZOMBIE) - data->sprite_list[i]->sprite_pos_x += MOVEMENT_SPEED * data->delta; + { + dx = data->player.x - data->sprite_list[i]->x; + dy = data->player.y - data->sprite_list[i]->y; + dist = sqrt(dx * dx + dy * dy); + if (dist > 0.0001) + { + dx /= dist; + dy /= dist; + data->sprite_list[i]->x += dx * zombie_movement * data->delta; + data->sprite_list[i]->y += dy * zombie_movement * data->delta; + } + } i++; } } diff --git a/src/utils/inits.c b/src/utils/inits.c index cd281f0..5ea95c0 100644 --- a/src/utils/inits.c +++ b/src/utils/inits.c @@ -6,7 +6,7 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/31 13:43:05 by kcolin #+# #+# */ -/* Updated: 2025/08/18 13:13:22 by tchampio ### ########.fr */ +/* Updated: 2025/08/18 13:52:41 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,7 +65,7 @@ void place_base_sprites(t_cub3d_data *data, char **map) x = 0; while (x < (int)ft_strlen(map[y])) { - if (ft_strchr("MQJD", map[y][x])) + if (ft_strchr("MQJDz", map[y][x])) { if (data->sprite_counter < MAX_SPRITES) data->sprite_list[data->sprite_counter++]