diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/tank/tank.h	Sun Dec 05 12:23:29 2010 +0800
@@ -0,0 +1,99 @@
+#ifndef __TANK_H_
+#define __TANK_H_
+
+#include <mb.h>
+#include "svgs.h"
+
+/*! \ingroup tank
+ * @{
+ */
+/*! \brief Tile types in a map. */
+enum { MUD, ROC, BRI, BSH };
+
+/*! \brief Map of the game. */
+extern char map[12][16];
+
+#define MAP_W 16
+#define MAP_H 12
+/* @} */
+
+/*! \defgroup bullet_elf Bullet Elf
+ * \ingroup tank
+ * @{
+ */
+/*! \brief Information about bullet elf
+ */
+struct _tank_bullet {
+    redraw_man_t *rdman;
+    coord_t *coord_pos;
+    coord_t *coord_rot;
+    bullet_t *bullet_obj;
+    int start_map_x, start_map_y;
+    int direction;
+    mb_progm_t *progm;
+    mb_timeval_t start_time;
+    observer_t *observer_redraw;
+    int hit_tmr;
+    mb_timer_man_t *timer_man;
+};
+typedef struct _tank_bullet tank_bullet_t;
+/*! \brief The direction a bullet is going.
+ */
+enum { BU_UP = 0, BU_RIGHT, BU_DOWN, BU_LEFT };
+/* @} */
+
+/*! \defgroup tank_elf Tank Elf
+ * \brief Tank elf module provides control functions of tanks in game.
+ * \ingroup tank
+ * @{
+ */
+/*! \brief Information about a tank elf. */
+struct _tank {
+    coord_t *coord_pos;		/*!< \brief coordinate for position */
+    coord_t *coord_rot;		/*!< \brief coordinate for rotation */
+    coord_t *coord_center;
+    int map_x, map_y;
+    int direction;
+    mb_progm_t *progm;
+    tank_bullet_t *bullet;
+    struct _tank_rt *tank_rt;	/*!< \brief for bullet to check
+				 * hitting on tanks.
+				 */
+};
+typedef struct _tank tank_t;
+enum { TD_UP = 0, TD_RIGHT, TD_DOWN, TD_LEFT };
+
+/* @} */
+
+/*
+ * \ingroup tank
+ * @{
+ */
+typedef struct _tank_rt tank_rt_t;
+
+/*! \brief Runtime information for tank, this game/example.
+ */
+struct _tank_rt {
+    tank_t *tank1;
+    tank1_t *tank1_o;
+    tank_t *tank2;
+    tank2_t *tank2_o;
+    int n_enemy;
+    tank_t *tank_enemies[10];
+    tank_en_t *tank_enemies_o[10];
+    tank_t *tanks[12];
+    int n_tanks;
+    void *map[12][16];
+    mb_rt_t *mb_rt;
+    observer_t *kb_observer;
+};
+
+extern void tank_move(tank_t *tank, int direction, tank_rt_t *tank_rt);
+extern void tank_fire_bullet(tank_rt_t *tank_rt, tank_t *tank);
+
+/* From enemy.c */
+extern void init_enemies(tank_rt_t *tank_rt);
+
+/* @} */
+
+#endif /* __TANK_H_ */