comparison examples/tank/tank.h @ 1100:fb79175e6cc3

Add AI for enemy tanks
author Thinker K.F. Li <thinker@codemud.net>
date Sun, 05 Dec 2010 12:23:29 +0800
parents
children
comparison
equal deleted inserted replaced
1096:c18ad321844d 1100:fb79175e6cc3
1 #ifndef __TANK_H_
2 #define __TANK_H_
3
4 #include <mb.h>
5 #include "svgs.h"
6
7 /*! \ingroup tank
8 * @{
9 */
10 /*! \brief Tile types in a map. */
11 enum { MUD, ROC, BRI, BSH };
12
13 /*! \brief Map of the game. */
14 extern char map[12][16];
15
16 #define MAP_W 16
17 #define MAP_H 12
18 /* @} */
19
20 /*! \defgroup bullet_elf Bullet Elf
21 * \ingroup tank
22 * @{
23 */
24 /*! \brief Information about bullet elf
25 */
26 struct _tank_bullet {
27 redraw_man_t *rdman;
28 coord_t *coord_pos;
29 coord_t *coord_rot;
30 bullet_t *bullet_obj;
31 int start_map_x, start_map_y;
32 int direction;
33 mb_progm_t *progm;
34 mb_timeval_t start_time;
35 observer_t *observer_redraw;
36 int hit_tmr;
37 mb_timer_man_t *timer_man;
38 };
39 typedef struct _tank_bullet tank_bullet_t;
40 /*! \brief The direction a bullet is going.
41 */
42 enum { BU_UP = 0, BU_RIGHT, BU_DOWN, BU_LEFT };
43 /* @} */
44
45 /*! \defgroup tank_elf Tank Elf
46 * \brief Tank elf module provides control functions of tanks in game.
47 * \ingroup tank
48 * @{
49 */
50 /*! \brief Information about a tank elf. */
51 struct _tank {
52 coord_t *coord_pos; /*!< \brief coordinate for position */
53 coord_t *coord_rot; /*!< \brief coordinate for rotation */
54 coord_t *coord_center;
55 int map_x, map_y;
56 int direction;
57 mb_progm_t *progm;
58 tank_bullet_t *bullet;
59 struct _tank_rt *tank_rt; /*!< \brief for bullet to check
60 * hitting on tanks.
61 */
62 };
63 typedef struct _tank tank_t;
64 enum { TD_UP = 0, TD_RIGHT, TD_DOWN, TD_LEFT };
65
66 /* @} */
67
68 /*
69 * \ingroup tank
70 * @{
71 */
72 typedef struct _tank_rt tank_rt_t;
73
74 /*! \brief Runtime information for tank, this game/example.
75 */
76 struct _tank_rt {
77 tank_t *tank1;
78 tank1_t *tank1_o;
79 tank_t *tank2;
80 tank2_t *tank2_o;
81 int n_enemy;
82 tank_t *tank_enemies[10];
83 tank_en_t *tank_enemies_o[10];
84 tank_t *tanks[12];
85 int n_tanks;
86 void *map[12][16];
87 mb_rt_t *mb_rt;
88 observer_t *kb_observer;
89 };
90
91 extern void tank_move(tank_t *tank, int direction, tank_rt_t *tank_rt);
92 extern void tank_fire_bullet(tank_rt_t *tank_rt, tank_t *tank);
93
94 /* From enemy.c */
95 extern void init_enemies(tank_rt_t *tank_rt);
96
97 /* @} */
98
99 #endif /* __TANK_H_ */