my_sokoban
Présentation par Loïc BRANSTETT
Le 19/12/2018
Sommaire
- Présentation du projet
- Organisation
- Architecture
- Tests automatisé
- Bonus
- Questions ?
Présentation du projet
Sokoban est un jeu vidéo de puzzle inventé au Japon.
Gardien d'entrepôt, le joueur doit ranger des caisses sur des cases cibles. Il peut se déplacer dans les quatre directions, et pousser (mais pas tirer) une seule caisse à la fois. Une fois toutes les caisses rangées le joueur gagne.
Organisation
49
48
Architecture
Traitement des entrées
Action des entrées
Vérification de la victoire
Vérification de l'échec
Affichage de la map
Chargement de
la map
Vérification de la map
Architecture
my_sokoban.h:
#define BLOCK_EMPTY 0
#define BLOCK_WALL 1
#define BLOCK_OBJ 2
#define BLOCK_LOC 3
#define BLOCK_PLAYER 4
#define BLOCK_PL_LOC 5
#define BLOCK_OBJ_LOC 6
map.c:
unsigned int map_get_chr(int v)
{
if (v == BLOCK_WALL)
return ('#');
if (v == BLOCK_PLAYER || v == BLOCK_PL_LOC)
return ('P');
if (v == BLOCK_OBJ || v == BLOCK_OBJ_LOC)
return ('X');
if (v == BLOCK_LOC)
return ('O');
if (v == BLOCK_EMPTY)
return (' ');
return (84);
}
Architecture
tab.h:
tab_t *tab_create(int width, int heigth);
int tab_delete(tab_t *tab);
int tab_get(tab_t *tab, int x, int y);
int tab_set(tab_t *tab, int x, int y, int val);
1 | 2 | 3 |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|
Tests automatisé
[===] Synthèse: Testés: 26 | Validés: 26 | Échoués: 0 | Plantages: 0
#include <criterion/criterion.h>
#include <criterion/redirect.h>
#include "my_sokoban.h"
Test(map, initialize_values)
{
map_t *map = tests_map_load();
cr_assert_eq(map->moves, 0);
cr_assert_eq(map->leaved_code, 0);
cr_assert_eq(map->leaved_reason, NULL);
}
Test(map, get_chr)
{
map_t *map = tests_map_load();
cr_assert_eq(map_get_chr(tab_get(map->tab, 0, 0)), '#');
cr_assert_eq(map_get_chr(tab_get(map->tab, 0, 1)), '#');
cr_assert_eq(map_get_chr(tab_get(map->tab, 1, 1)), ' ');
cr_assert_eq(map_get_chr(tab_get(map->tab, 4, 2)), 'P');
cr_assert_eq(map_get_chr(tab_get(map->tab, 1, 9)), 'O');
cr_assert_eq(map_get_chr(tab_get(map->tab, 2, 9)), 'X');
cr_assert_eq(map_get_chr(200), 84);
}
Tests automatisé
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: .
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
game.c 45 5 11% 14,16,...
game_check.c 38 26 68% 14-16,...
game_check_map.c 22 20 90% 38,40
game_movements.c 46 21 45% 13,...
map.c 77 71 92% 49-51,...
tab.c 33 31 93% 17,20
tests/test_map.c 175 175 100%
------------------------------------------------------------------------------
TOTAL 436 349 80%
------------------------------------------------------------------------------
Bonus
Bonus
Questions ?
FIN
my_sokoban
By urgau-1
my_sokoban
- 116