📄 game.h
字号:
/****************************************************************************** Product: "Fly'n'Shoot" game example* Last Updated for Version: 4.0.00* Date of the Last Update: Apr 07, 2008** Q u a n t u m L e a P s* ---------------------------* innovating embedded systems** Copyright (C) 2002-2008 Quantum Leaps, LLC. All rights reserved.** This software may be distributed and modified under the terms of the GNU* General Public License version 2 (GPL) as published by the Free Software* Foundation and appearing in the file GPL.TXT included in the packaging of* this file. Please note that GPL Section 2[b] requires that all works based* on this software must also be made publicly available under the terms of* the GPL ("Copyleft").** Alternatively, this software may be distributed and modified under the* terms of Quantum Leaps commercial licenses, which expressly supersede* the GPL and are specifically designed for licensees interested in* retaining the proprietary status of their code.** Contact information:* Quantum Leaps Web site: http://www.quantum-leaps.com* e-mail: info@quantum-leaps.com*****************************************************************************/#ifndef game_h#define game_henum GameSignals { /* signals used in the game */ TIME_TICK_SIG = Q_USER_SIG, /* published from tick ISR */ PLAYER_TRIGGER_SIG, /* published by Player (ISR) to trigger the Missile */ PLAYER_QUIT_SIG, /* published by Player (ISR) to quit the game */ GAME_OVER_SIG, /* published by Ship when it finishes exploding */ /* insert other published signals here ... */ MAX_PUB_SIG, /* the last published signal */ PLAYER_SHIP_MOVE_SIG, /* posted by Player (ISR) to the Ship to move it */ BLINK_TIMEOUT_SIG, /* signal for Tunnel's blink timeout event */ SCREEN_TIMEOUT_SIG, /* signal for Tunnel's screen timeout event */ TAKE_OFF_SIG, /* from Tunnel to Ship to grant permission to take off */ HIT_WALL_SIG, /* from Tunnel to Ship when Ship hits the wall */ HIT_MINE_SIG, /* from Mine to Ship or Missile when it hits the mine */ SHIP_IMG_SIG, /* from Ship to the Tunnel to draw and check for hits */ MISSILE_IMG_SIG, /* from Missile the Tunnel to draw and check for hits */ MINE_IMG_SIG, /* sent by Mine to the Tunnel to draw the mine */ MISSILE_FIRE_SIG, /* sent by Ship to the Missile to fire */ DESTROYED_MINE_SIG, /* from Missile to Ship when Missile destroyed Mine */ EXPLOSION_SIG, /* from any exploding object to render the explosion */ MINE_PLANT_SIG, /* from Tunnel to the Mine to plant it */ MINE_DISABLED_SIG, /* from Mine to Tunnel when it becomes disabled */ MINE_RECYCLE_SIG, /* sent by Tunnel to Mine to recycle the mine */ SCORE_SIG, /* from Ship to Tunnel to adjust game level based on score */ MAX_SIG /* the last signal (keep always last) */};typedef struct ObjectPosEvtTag { QEvent super; /* extend the QEvent class */ uint8_t x; /* the x-position of the object */ uint8_t y; /* new y-position of the object */} ObjectPosEvt;typedef struct ObjectImageEvtTag { QEvent super; /* extend the QEvent class */ uint8_t x; /* the x-position of the object */ int8_t y; /* the y-position of the object */ uint8_t bmp; /* the bitmap ID representing the object */} ObjectImageEvt;typedef struct MineEvtTag { QEvent super; /* extend the QEvent class */ uint8_t id; /* the ID of the Mine */} MineEvt;typedef struct ScoreEvtTag { QEvent super; /* extend the QEvent class */ uint16_t score; /* the current score */} ScoreEvt;#define GAME_SCREEN_WIDTH BSP_SCREEN_WIDTH#define GAME_SCREEN_HEIGHT BSP_SCREEN_HEIGHT#define GAME_MINES_MAX 5#define GAME_MINES_DIST_MIN 10#define GAME_SPEED_X 1#define GAME_MISSILE_SPEED_X 2#define GAME_SHIP_X 10#define GAME_SHIP_Y (GAME_SCREEN_HEIGHT / 2)enum GameBitmapIds { PRESS_BUTTON_BMP, SHIP_BMP, MISSILE_BMP, MINE1_BMP, MINE2_BMP, MINE2_MISSILE_BMP, EXPLOSION0_BMP, EXPLOSION1_BMP, EXPLOSION2_BMP, EXPLOSION3_BMP, MAX_BMP};/* active objects' "constructors" */void Tunnel_ctor (void);void Ship_ctor (void);void Missile_ctor(void);/* opaque pointers to active objects in the application */extern QActive * const AO_Tunnel;extern QActive * const AO_Ship;extern QActive * const AO_Missile;uint8_t do_bitmaps_overlap(uint8_t bmp_id1, uint8_t x1, uint8_t y1, uint8_t bmp_id2, uint8_t x2, uint8_t y2);/* instantiation of the Mines orthogonal components */QHsm *Mine1_ctor(uint8_t id);QHsm *Mine2_ctor(uint8_t id);#endif /* game_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -