亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ship.c

?? 事件驅動程序設計很好的框架
?? C
字號:
/****************************************************************************** Product: "Fly'n'Shoot" game example* Last Updated for Version: 4.0.00* Date of the Last Update:  Apr 06, 2008**                    Q u a n t u m     L e a P s*                    ---------------------------*                    innovating embedded systems** Copyright (C) 2002-2007 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*****************************************************************************/#include "qp_port.h"#include "bsp.h"#include "game.h"/*Q_DEFINE_THIS_FILE */#define SHIP_WIDTH  5#define SHIP_HEIGHT 3/* local objects -----------------------------------------------------------*/typedef struct ShipTag {    QActive super;                              /* extend the QActive class */    uint8_t x;    uint8_t y;    uint8_t exp_ctr;    uint16_t score;} Ship;                                           /* the Ship active object */static QState Ship_initial  (Ship *me, QEvent const *e);static QState Ship_active   (Ship *me, QEvent const *e);static QState Ship_parked   (Ship *me, QEvent const *e);static QState Ship_flying   (Ship *me, QEvent const *e);static QState Ship_exploding(Ship *me, QEvent const *e);static Ship l_ship;          /* the sole instance of the Ship active object *//* global objects ----------------------------------------------------------*/QActive * const AO_Ship = (QActive *)&l_ship;  /* opaque pointer to Ship AO *//*..........................................................................*/void Ship_ctor(void) {    Ship *me = &l_ship;    QActive_ctor(&me->super, (QStateHandler)&Ship_initial);    me->x = GAME_SHIP_X;    me->y = GAME_SHIP_Y;}/* HSM definition ----------------------------------------------------------*//*..........................................................................*/QState Ship_initial(Ship *me, QEvent const *e) {    (void)e;                  /* avoid the "unreferenced parameter" warning */    QActive_subscribe((QActive *)me, TIME_TICK_SIG);    QActive_subscribe((QActive *)me, PLAYER_TRIGGER_SIG);    QS_OBJ_DICTIONARY(&l_ship);        /* object dictionary for Ship object */    QS_FUN_DICTIONARY(&Ship_initial); /* function dictionaries for Ship HSM */    QS_FUN_DICTIONARY(&Ship_active);    QS_FUN_DICTIONARY(&Ship_parked);    QS_FUN_DICTIONARY(&Ship_flying);    QS_FUN_DICTIONARY(&Ship_exploding);    QS_SIG_DICTIONARY(PLAYER_SHIP_MOVE_SIG, &l_ship);      /* local signals */    QS_SIG_DICTIONARY(TAKE_OFF_SIG,         &l_ship);    QS_SIG_DICTIONARY(HIT_WALL_SIG,         &l_ship);    QS_SIG_DICTIONARY(HIT_MINE_SIG,         &l_ship);    QS_SIG_DICTIONARY(DESTROYED_MINE_SIG,   &l_ship);    return Q_TRAN(&Ship_active);             /* top-most initial transition */}/*..........................................................................*/QState Ship_active(Ship *me, QEvent const *e) {    switch (e->sig) {        case Q_INIT_SIG: {                     /* nested initial transition */            return Q_TRAN(&Ship_parked);        }        case PLAYER_SHIP_MOVE_SIG: {            me->x = ((ObjectPosEvt const *)e)->x;            me->y = ((ObjectPosEvt const *)e)->y;            return Q_HANDLED();        }    }    return Q_SUPER(&QHsm_top);}/*..........................................................................*/QState Ship_parked(Ship *me, QEvent const *e) {    switch (e->sig) {        case TAKE_OFF_SIG: {               /* permition to take off granted */            return Q_TRAN(&Ship_flying);        }    }    return Q_SUPER(&Ship_active);}/*..........................................................................*/QState Ship_flying(Ship *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            ScoreEvt *sev;            me->score = 0;                               /* reset the score */            sev = Q_NEW(ScoreEvt, SCORE_SIG);            sev->score = me->score;            QActive_postFIFO(AO_Tunnel, (QEvent *)sev);            return Q_HANDLED();        }        case TIME_TICK_SIG: {            /* tell the Tunnel to draw the Ship and test for hits */            ObjectImageEvt *oie = Q_NEW(ObjectImageEvt, SHIP_IMG_SIG);            oie->x   = me->x;            oie->y   = me->y;            oie->bmp = SHIP_BMP;            QActive_postFIFO(AO_Tunnel, (QEvent *)oie);            ++me->score;  /* increment the score for surviving another tick */            if ((me->score % 10) == 0) {           /* is the score "round"? */                ScoreEvt *sev = Q_NEW(ScoreEvt, SCORE_SIG);                sev->score = me->score;                QActive_postFIFO(AO_Tunnel, (QEvent *)sev);            }            return Q_HANDLED();        }        case PLAYER_TRIGGER_SIG: {                   /* trigger the Missile */            ObjectPosEvt *ope = Q_NEW(ObjectPosEvt, MISSILE_FIRE_SIG);            ope->x = me->x;            ope->y = me->y + SHIP_HEIGHT - 1;            QActive_postFIFO(AO_Missile, (QEvent *)ope);            return Q_HANDLED();        }        case DESTROYED_MINE_SIG: {            me->score += ((ScoreEvt const *)e)->score;            /* the score will be sent to the Tunnel by the next TIME_TICK */            return Q_HANDLED();        }        case HIT_WALL_SIG:        case HIT_MINE_SIG: {            return Q_TRAN(&Ship_exploding);        }    }    return Q_SUPER(&Ship_active);}/*..........................................................................*/QState Ship_exploding(Ship *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            me->exp_ctr = 0;            return Q_HANDLED();        }        case TIME_TICK_SIG: {            if (me->exp_ctr < 15) {                ObjectImageEvt *oie;                ++me->exp_ctr;                  /* tell the Tunnel to draw the current stage of Explosion */                oie = Q_NEW(ObjectImageEvt, EXPLOSION_SIG);                oie->bmp = EXPLOSION0_BMP + (me->exp_ctr >> 2);                oie->x   = me->x;                         /* x of explosion */                oie->y   = (int8_t)((int)me->y - 4 + SHIP_HEIGHT);                QActive_postFIFO(AO_Tunnel, (QEvent *)oie);            }            else {                ScoreEvt *gameOver = Q_NEW(ScoreEvt, GAME_OVER_SIG);                gameOver->score = me->score;                QActive_postFIFO(AO_Tunnel, (QEvent *)gameOver);                return Q_TRAN(&Ship_parked);            }            return Q_HANDLED();        }    }    return Q_SUPER(&Ship_active);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区在线观看 | 国产一区二区在线影院| 亚洲欧美日韩一区二区三区在线观看| 欧美电影精品一区二区| 欧美久久高跟鞋激| 91麻豆精品国产91久久久久久| 欧美午夜精品久久久久久超碰| 91啪亚洲精品| 欧美午夜精品免费| 日韩三级视频在线观看| 精品欧美乱码久久久久久1区2区| 欧美刺激脚交jootjob| 欧美精品一区二区在线播放| 久久久久久一级片| 国产精品欧美经典| 亚洲一二三四区| 奇米精品一区二区三区四区| 九一久久久久久| 99国产精品久久久久| 欧美视频一区在线观看| 日韩视频中午一区| 国产精品看片你懂得| 一区二区成人在线视频| 天天综合天天综合色| 国产在线一区观看| 成人av资源站| 欧美一区二区网站| 中文一区一区三区高中清不卡| 亚洲欧洲综合另类| 美女视频一区在线观看| 99久久99久久精品国产片果冻| 欧美三级资源在线| 久久亚洲二区三区| 亚洲美女少妇撒尿| 国产一区二区三区久久久| 一本大道久久a久久综合| 日韩久久久精品| 一区二区三区欧美激情| 久久疯狂做爰流白浆xx| 一本久久综合亚洲鲁鲁五月天| 欧美猛男男办公室激情| 中文字幕一区二区三区在线观看 | 日韩国产欧美在线播放| 成人午夜私人影院| 日韩一级完整毛片| 亚洲男人的天堂av| 国产成人免费视频网站高清观看视频| 一本大道av一区二区在线播放| 日韩精品一区二区三区老鸭窝 | 欧美一级二级三级乱码| 自拍视频在线观看一区二区| 亚洲综合一二区| www.成人在线| 久久在线观看免费| 日韩精品久久理论片| kk眼镜猥琐国模调教系列一区二区| 日韩一卡二卡三卡国产欧美| 亚洲精品国产第一综合99久久| 国产99一区视频免费| 精品区一区二区| 久久国产生活片100| 欧美喷潮久久久xxxxx| 亚洲精品中文在线影院| 成人激情视频网站| 日本一区二区三级电影在线观看 | 成人激情校园春色| 亚洲精品一区二区三区蜜桃下载 | 国产日韩三级在线| 久久99国产精品尤物| 91精品国产福利| 午夜av区久久| 777欧美精品| 蜜桃久久久久久久| 91精品国产91综合久久蜜臀| 亚洲成年人影院| 欧美日韩在线播| 天天色图综合网| 91精品欧美综合在线观看最新 | 一区二区在线电影| 91蜜桃传媒精品久久久一区二区| 亚洲欧洲美洲综合色网| 91女人视频在线观看| 亚洲欧美视频一区| 欧美日韩在线一区二区| 日本人妖一区二区| 337p日本欧洲亚洲大胆色噜噜| 精品一区二区三区不卡| 久久九九全国免费| 不卡的av网站| 亚洲成人1区2区| 久久婷婷综合激情| 97久久精品人人做人人爽50路| 亚洲日本电影在线| 欧美日韩在线亚洲一区蜜芽| 日韩av网站在线观看| 久久日韩精品一区二区五区| 国产成人免费视| 亚洲一区影音先锋| 精品日产卡一卡二卡麻豆| 国产999精品久久久久久| 亚洲日韩欧美一区二区在线| 欧美人体做爰大胆视频| 国产麻豆精品视频| 一区二区三区在线影院| 日韩一区二区三区视频在线| 成人免费视频国产在线观看| 一区av在线播放| 精品美女在线观看| 99久久精品免费| 美日韩黄色大片| 中文字幕亚洲一区二区av在线| 欧美剧情电影在线观看完整版免费励志电影 | 欧亚洲嫩模精品一区三区| 日韩1区2区3区| 中文字幕一区三区| 精品剧情在线观看| 欧美日韩中文一区| www.av亚洲| 久久99国内精品| 天天av天天翘天天综合网色鬼国产 | 欧美日韩国产小视频| 国产成人免费视频精品含羞草妖精| 亚洲最新在线观看| 国产精品成人免费精品自在线观看 | 丝瓜av网站精品一区二区| 国产精品青草久久| 精品国产伦一区二区三区免费| 在线观看av不卡| 成人黄色国产精品网站大全在线免费观看| 午夜在线成人av| 亚洲精品日日夜夜| 国产日产亚洲精品系列| 日韩一区二区免费视频| 在线观看日韩毛片| 91蜜桃免费观看视频| 成人一区二区三区在线观看| 极品少妇xxxx偷拍精品少妇| 天堂av在线一区| 一区二区三区四区中文字幕| 日本一区二区三区免费乱视频| 日韩一区二区高清| 欧美日韩国产色站一区二区三区| 色哟哟一区二区| 91老师片黄在线观看| 不卡影院免费观看| 成人免费av资源| 成人精品gif动图一区| 国产精品一二三四区| 国产乱子伦一区二区三区国色天香| 日韩av不卡在线观看| 日韩av电影一区| 麻豆国产一区二区| 久久国产尿小便嘘嘘| 九九国产精品视频| 国产制服丝袜一区| 国产a区久久久| 成人国产精品免费网站| 懂色一区二区三区免费观看| 成人禁用看黄a在线| 99久久免费国产| hitomi一区二区三区精品| voyeur盗摄精品| 在线观看日韩国产| 制服丝袜日韩国产| 欧美精品一区二区三区一线天视频| 日韩免费观看2025年上映的电影| 欧美一级高清大全免费观看| 日韩你懂的在线播放| 久久久99精品久久| 亚洲欧美日韩国产综合| 亚洲午夜免费福利视频| 青草国产精品久久久久久| 极品少妇一区二区| 99久久精品情趣| 欧美一区二区三区免费| 久久久久国产精品麻豆| 中文字幕在线观看不卡| 五月综合激情日本mⅴ| 久久99国产精品久久99| 成人高清视频免费观看| 欧美视频三区在线播放| 日韩视频国产视频| 日韩理论片一区二区| 婷婷综合久久一区二区三区| 国产剧情一区二区| 精品视频在线视频| 国产欧美一区二区三区在线老狼| 亚洲欧美乱综合| 国产一区二区免费视频| 一本大道久久a久久精二百| 日韩欧美综合一区| 亚洲视频在线一区二区| 男女男精品视频| 99久久综合色| 中文字幕五月欧美| 日日嗨av一区二区三区四区| 国产成人午夜精品5599 | 另类小说一区二区三区| 国产成人啪免费观看软件| 91精品欧美综合在线观看最新 |