object.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*
  2. * File: object.h
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 7 décembre 2018
  6. */
  7. #ifndef OBJECT_H
  8. #define OBJECT_H
  9. /* --- Include --- */
  10. #include "constante.h"
  11. /* --- Constante --- */
  12. #define OBJ_BCLASSIC 0
  13. #define OBJ_BMINE 1
  14. #define OBJ_BREMOTE 2
  15. #define OBJ_BOMBUP 3
  16. #define OBJ_BOMBDOWN 4
  17. #define OBJ_FIREPOWER 5
  18. #define OBJ_SCOOTER 6
  19. #define OBJ_BROKENLEG 7
  20. #define OBJ_LIFEUP 8
  21. #define OBJ_LIFEMAX 9
  22. #define OBJ_MAJOR 10
  23. /* --- Structure --- */
  24. typedef struct obj_node obj_node;
  25. struct obj_node{
  26. int type;
  27. int x;
  28. int y;
  29. obj_node* prev;
  30. obj_node* next;
  31. };
  32. typedef struct{
  33. obj_node* first;
  34. obj_node* last;
  35. int size;
  36. }Object;
  37. /* --- Fonctions --- */
  38. /**
  39. * Initialisation de la structure
  40. * @param Object* La structure à initialiser
  41. */
  42. void object_ini(Object*);
  43. /**
  44. * Ajoute un noeud
  45. * @param Object* L'objet à modifier
  46. * @param int Le type de l'objet
  47. * @param int La position X de l'objet
  48. * @param int La position Y de l'objet
  49. * @return Le noeud
  50. */
  51. obj_node* object_add(Object*, int, int, int);
  52. /**
  53. * Recherche un noeud avec le type et la position
  54. * @param Object* L'objet à modifier
  55. * @param int Le type de l'objet
  56. * @param int La position X de l'objet
  57. * @param int La position Y de l'objet
  58. * @return Le noeud
  59. */
  60. obj_node* object_search(Object*, int, int, int);
  61. /**
  62. * Supprime un objet
  63. * @param Object* L'objet à modifier
  64. * @param obj_node* Le noeud à supprimer
  65. */
  66. void object_delete(Object*, obj_node*);
  67. /**
  68. * Vide la structure
  69. * @param Object* L'objet à vider
  70. */
  71. void object_clean(Object*);
  72. #endif /* OBJECT_H */