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

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

?? snake.c

?? 瑞星微公司RK27XX系列芯片的SDK開發包
?? C
?? 第 1 頁 / 共 3 頁
字號:
/**********************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Co.,Ltd.
*  Module name : snake game
*  Author:         Zushang Chen
*  Description:    貪吃蛇游戲
*  Calls:
*  Input:          無
*  Return:         無
*  Remark:
*
*  History:
*           <author>      <time>     <version>       <desc>
*           CZS          2007/08/13      1.0           ORG
*
$Log: snake.c,v $
Revision 1.4  2008/06/19 04:42:27  Administrator
代碼整理!

Revision 1.3  2008/06/06 03:14:56  XXX
更改游戲在RGB屏情況的問題

Revision 1.1.1.1  2008/03/06 13:28:25  Lingzhaojun
no message

Revision 1.9  2008/01/15 07:06:55  Lingzhaojun
RGB屏系統支持

Revision 1.8  2008/01/14 07:27:18  Chenzushang
去除DoLCDFlush函數

Revision 1.7  2008/01/10 13:02:35  Chenzushang
修改窗口ID

Revision 1.6  2008/01/07 08:23:39  Chenzushang
修改左右按鍵相反問題
修改對話框不能彈出問題

Revision 1.5  2007/11/03 01:52:01  Chenzushang
修改了部分的游戲按鍵

Revision 1.4  2007/10/26 03:53:02  Chenzushang
添加CVS版本自動注釋腳本

***********************************************************/
#include "snake.h"
#include "..\..\system\gui\guictrl\uidilog.h"
extern void RKWindowDestroyEx(WINDOW *win  , WMPARAM wParam, WLPARAM lParam);
//snake variable
int m_snakeCurDirTemp;
int m_snakeTotalScore;
int m_snakeLife;
int m_snakeLevel;
UINT8 m_bsnakePause;
int m_snakeArray[SNAKEGAME_SCOPE_COL][SNAKEGAME_SCOPE_ROW];
int m_snakeCurDir;
SnakePoint m_ptSnake[SNAKEGAME_SNAKE_MAXLEN];
int m_snakeLen;
int m_snakeInitY;
int m_snakeInitX;
int m_snakeBlockLen;
int m_snakeLenY;
int m_snakeLenX;
SnakePoint m_ptDisplay;
UINT8 m_bsnakeDied;
UINT8 m_bsnakeCanThrough;
UINT8 m_snakeGameState;
HTIMER m_snakeTimerID;
UINT8 m_bsnakeShowMessage;

BEGIN_CHILDMESSAGE_MAP(SnakeProcMap , NULL)
ON_MESSAGE(WM_PAINT ,   SnakeOnPaint)
// ON_MESSAGE( WM_DESTROY ,  SnakeOnDestroy)
ON_MESSAGE(WM_CREATE,   SnakeOnCreat)
ON_MESSAGE(WM_TIMER,   SnakeOnTimer)
ON_MESSAGE(WM_KEY,    SnakeOnKey)
ON_MESSAGE(WM_COMMAND,  SnakeOnCommand)
END_MESSAGE_MAP()
/******************************************************
Name: SnakeDrawBoard
Desc: 畫游戲的底板 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeDrawBoard()
{
    UHRECT rct;
    COLOR col = ColorBlack;
    rct.x = SNAKEGAME_BOARD_XPOS;
    rct.y = SNAKEGAME_BOARD_YPOS;
    rct.w = SNAKEGAME_BOARD_XSIZE;
    rct.h = SNAKEGAME_BOARD_YSIZE;
    GuiDspFillRect(&rct, col);
}
/******************************************************
Name: SnakeCleanWindow
Desc: 清除整個游戲窗口 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeCleanWindow()
{
    UHRECT rct;
    COLOR col = ColorWhite;
    rct.x = 0;
    rct.y = 0;
    rct.w = SNAKEGAME_WINDOW_XSIZE;
    rct.h = SNAKEGAME_WINDOW_YSIZE;
    GuiDspFillRect(&rct, col);

}
/******************************************************
Name: SnakeTimerWork
Desc: 游戲定時器的回調函數 
Param:WINDOW* win--父窗口
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeTimerWork(WINDOW* win)
{
    int i;
    if (SnakeCheckDie())
    {
        WinStopTimer(m_snakeTimerID);
        m_snakeGameState = SNAKEGAME_STOP;
        //if(m_bsnakeEnableSound)
        // ::PlaySound(MAKEINTRESOURCE(IDR_WAVDIE),AfxGetApp()->m_hInstance,SND_RESOURCE|SND_ASYNC);
        for (i = 0;i < m_snakeLen;i++)
            SnakeDrawBlock(m_ptSnake[i].x, m_ptSnake[i].y, FALSE, TRUE);
        m_snakeLife--;
        if (m_snakeLife >= 0)
        {
            //SnakeShowSnakeLife();
            // CreateDialogEx( focusWindow, DIALOG_NOTIFY, T_S_SNAKE_REDO , IDW_NOTIFY_DIALOG , 0 );
            SnakeShowDialog(win, SID_Snake_FailMessage);
            m_bsnakeShowMessage = 1;
            // SnakeDrawBoard();
            // SnakeReDoLevel();
        }
        else
        {
            // CreateDialogEx( focusWindow, DIALOG_NOTIFY, T_S_SNAKE_REDO , IDW_NOTIFY_DIALOG , 0 );
            SnakeShowDialog(win, SID_Snake_EndMessage);
            m_bsnakeShowMessage = 2;
            //  DestroyWindow(win);
        }

        return;
    }
    if (SnakeCheckCanEat())
    {
        m_snakeTotalScore += 10;
        SnakeDrawBlock(m_ptSnake[0].x, m_ptSnake[0].y, FALSE, FALSE);
        //  SnakeShowSnakeLen();
        //SnakeShowScore();
        //if(m_bsnakeEnableSound)
        // ::PlaySound(MAKEINTRESOURCE(IDR_WAVEAT),AfxGetApp()->m_hInstance,SND_RESOURCE|SND_ASYNC);
        if (m_snakeLen == SNAKEGAME_SNAKE_MAXLEN)
        {
            WinStopTimer(m_snakeTimerID);
            if (m_snakeLevel == SNAKEGAME_MAX_LEVEL)
            {
                SnakeShowDialog(win, SID_Snake_FinishMessage);
                m_bsnakeShowMessage = 2;
            }
            else
            {
                WinStopTimer(m_snakeTimerID);
                m_snakeLevel++;
                SnakeShowDialog(win, SID_Snake_PassMessage);
                m_bsnakeShowMessage = 3;

            }
        }
        else
        {
            SnakeCreateNewFood(SNAKEGAME_CELLTYPE_FOOD);
            if ((rand() % 5) == 0)
                SnakeCreateNewFood(SNAKEGAME_CELLTYPE_AWARD);
            if ((rand() % 25) == 0)
                SnakeCreateNewFood(SNAKEGAME_CELLTYPE_LIFE);
        }
    }
    else
    {

        m_snakeCurDirTemp = m_snakeCurDir;
        SnakeMoveSnake();
    }
}
/******************************************************
Name: SnakeDrawDispSectionTitle
Desc: 顯示游戲顯示區的標題 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeDrawDispSectionTitle()
{
    ColorDesc col;
    col.backward = ColorBlack;
    col.forward = 0x000000ff;
    col.mode = DSPM_Normal;
    DrawStringIdEx(SNAKEGAME_DISP_LEVEL_X, SNAKEGAME_DISP_LEVEL_Y, 60, SID_Snake_Level, Font12X12, &col, 0);
    DrawStringIdEx(SNAKEGAME_DISP_LENGTH_X, SNAKEGAME_DISP_LENGTH_Y, 60, SID_Snake_Length, Font12X12, &col, 0);
    DrawStringIdEx(SNAKEGAME_DISP_SCORE_X, SNAKEGAME_DISP_SCORE_Y, 60, SID_Snake_Score, Font12X12, &col, 0);
    DrawStringIdEx(SNAKEGAME_DISP_LIFE_X, SNAKEGAME_DISP_LIFE_Y, 60, SID_Snake_Life, Font12X12, &col, 0);

}
/******************************************************
Name: SnakeDrawGameState
Desc: 顯示游戲的當前狀態 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeDrawGameState()
{
    ColorDesc col;
    col.backward = ColorBlack;
    col.forward = 0x00ff0000;
    col.mode = DSPM_Normal;
    if (m_bsnakePause)
        DrawStringIdEx(SNAKEGAME_DISP_STATE_X, SNAKEGAME_DISP_STATE_Y, 60, SID_Snake_GamePause, Font12X12, &col, 0);
    else
        DrawStringIdEx(SNAKEGAME_DISP_STATE_X, SNAKEGAME_DISP_STATE_Y, 60, SID_Snake_GameRun, Font12X12, &col, 0);
}
/******************************************************
Name: SnakeDrawThroughState
Desc: 顯示游戲是否可以穿越邊界 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeDrawThroughState()
{
    ColorDesc col;
    col.backward = ColorBlack;
    col.forward = 0x00ff0000;
    col.mode = DSPM_Normal;
    if (m_bsnakeCanThrough)
        DrawStringIdEx(SNAKEGAME_DISP_THROUGH_X, SNAKEGAME_DISP_THROUGH_Y, 60, SID_Snake_CanThrough, Font12X12, &col, 0);
    else
        DrawStringIdEx(SNAKEGAME_DISP_THROUGH_X, SNAKEGAME_DISP_THROUGH_Y, 60, SID_Snake_NoThrough, Font12X12, &col, 0);
}
/******************************************************
Name: SnakeShowLevel
Desc: 顯示當前的關卡數 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeShowLevel()
{
    WCHAR strlevel[2];
    ColorDesc col;
    col.backward = 0x00000000;
    col.forward = 0x00ff0000;
    col.mode = DSPM_Normal;
    strlevel[0] = m_snakeLevel + '0';
    strlevel[1] = 0;
    DrawStringEx(SNAKEGAME_DISP_LEVEL_X, SNAKEGAME_DISP_LEVEL_Y + SNAKEGAME_DISP_H, 30, strlevel, Font12X12, &col, 0);


}
/******************************************************
Name: SnakeShowSnakeLen
Desc: 顯示貪吃蛇的長度 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeShowSnakeLen()
{
    WCHAR strsnakelen[3];
    ColorDesc col;
    col.backward = 0x00000000;
    col.forward = 0x00ff0000;
    col.mode = DSPM_Normal;
    strsnakelen[0] = m_snakeLen / 10 + '0';
    strsnakelen[1] = m_snakeLen % 10 + '0';
    strsnakelen[2] = 0;
    DrawStringEx(SNAKEGAME_DISP_LENGTH_X, SNAKEGAME_DISP_LENGTH_Y + SNAKEGAME_DISP_H, 30, strsnakelen, Font12X12, &col, 0);
}
/******************************************************
Name: SnakeShowSnakeLife
Desc: 顯示貪吃蛇的生命數 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeShowSnakeLife()
{
    WCHAR strsnakelife[2];
    ColorDesc col;
    col.backward = 0x00000000;
    col.forward = 0x00ff0000;
    col.mode = DSPM_Normal;
    strsnakelife[0] = m_snakeLife + '0';
    strsnakelife[1] = 0;
    DrawStringEx(SNAKEGAME_DISP_LIFE_X, SNAKEGAME_DISP_LIFE_Y + SNAKEGAME_DISP_H, 30, strsnakelife, Font12X12, &col, 0);

}
/******************************************************
Name: SnakeGameInit
Desc: 進行游戲的初始化 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeGameInit(void)
{
    m_snakeTotalScore = 0;
    m_snakeLife = SNAKEGAME_MAX_LIFE;
    m_snakeLen = 1;
    m_snakeLevel = 1;
    m_bsnakeDied = FALSE;
    SnakeClearArray();
    m_ptSnake[0].x = 7;
    m_ptSnake[0].y = 0;
    m_snakeCurDir = SNAKEDOWN;//1:down 2:Up 3:left 4:right
    m_snakeCurDirTemp = 1;
    ////////////////////////////////////////
    m_bsnakePause = FALSE;
    m_bsnakeCanThrough = 0;
    m_bsnakeDied = FALSE;
    m_bsnakeShowMessage = 0;
    //SnakeCleanWindow();
    //SnakeDrawBoard();
    SnakeSetLevel_00();
    SnakeCreateNewFood(SNAKEGAME_CELLTYPE_FOOD);
    //SnakeDrawGame();
    ////////////////////////////////////////
    //關值
    //SnakeDrawDispSectionTitle();
    //SnakeShowScore();
    //SnakeShowLevel();
    //SnakeShowSnakeLen();
    //SnakeShowSnakeLife();
    ////////////////////////////////////////
    m_snakeGameState = SNAKEGAME_RUN;
    //SnakeDrawThroughState();
    //SnakeDrawGameState();


}
/******************************************************
Name: SnakeShowScore
Desc: 顯示游戲的分數 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeShowScore()
{

    WCHAR pScore[6];
    unsigned long Score_tmp;
    ColorDesc col;
    col.backward = 0x00000000;
    col.forward = 0x00ff0000;
    col.mode = DSPM_Normal;
    Score_tmp = m_snakeTotalScore;
    pScore[0] = (INT16U)(Score_tmp / 10000 + '0');
    Score_tmp = Score_tmp % 10000;
    pScore[1] = (INT16U)(Score_tmp / 1000 + '0');
    Score_tmp = Score_tmp % 1000;
    pScore[2] = (INT16U)(Score_tmp / 100  + '0');
    Score_tmp = Score_tmp % 100;
    pScore[3] = (INT16U)(Score_tmp / 10   + '0');
    Score_tmp = Score_tmp % 10   + '0';
    pScore[4] = (INT16U)(Score_tmp);
    pScore[5] = 0;
    DrawStringEx(SNAKEGAME_DISP_SCORE_X, SNAKEGAME_DISP_SCORE_Y + SNAKEGAME_DISP_H, 60, pScore, Font12X12, &col, 0);
}
/******************************************************
Name: SnakeMoveSnake
Desc: 移動蛇,清除蛇的歷史痕跡,重畫蛇的現在位置 
Param:無
Return: 無
Global: 有
Note:
Author:czs
Log:
******************************************************/
void SnakeMoveSnake()
{
    int i;
    SnakePoint pt[SNAKEGAME_SNAKE_MAXLEN];
    int nDir;
    nDir = m_snakeCurDir;
    for (i = 0;i < SNAKEGAME_SNAKE_MAXLEN;i++)
        pt[i] = m_ptSnake[i];
    switch (nDir)
    {
        case 1://down
            m_ptSnake[0].y++;
            m_ptSnake[0].y = m_ptSnake[0].y % SNAKEGAME_SCOPE_COL;
            break;
        case 2://up
            m_ptSnake[0].y--;
            if (m_ptSnake[0].y == -1)
                m_ptSnake[0].y = (SNAKEGAME_SCOPE_COL - 1);
            break;
        case 3://left
            m_ptSnake[0].x--;
            if (m_ptSnake[0].x == -1)
                m_ptSnake[0].x = (SNAKEGAME_SCOPE_ROW - 1);
            break;
        case 4://right
            m_ptSnake[0].x++;
            m_ptSnake[0].x = m_ptSnake[0].x % SNAKEGAME_SCOPE_ROW;
            break;
    }

    if (m_snakeLen == 1)
        SnakeDrawBlock(pt[0].x, pt[0].y, TRUE, FALSE);
    if (m_snakeLen >= 2)
    {
        SnakeDrawBlock(m_ptSnake[m_snakeLen-1].x, m_ptSnake[m_snakeLen-1].y, TRUE, FALSE);
        for (i = 1;i < m_snakeLen;i++)
        {
            m_ptSnake[i] = pt[i-1];
        }
    }
    SnakeDrawBlock(m_ptSnake[0].x, m_ptSnake[0].y, FALSE, FALSE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色系网站成人免费| 国产99久久精品| 国产高清在线精品| 色欧美88888久久久久久影院| 欧美精品第1页| 国产精品每日更新| 夜夜精品视频一区二区| 日本午夜精品一区二区三区电影| 国产福利视频一区二区三区| 欧美日韩国产片| 国产精品乱人伦一区二区| 美女任你摸久久| 91国产丝袜在线播放| 中文字幕一区日韩精品欧美| 激情久久久久久久久久久久久久久久 | 亚洲激情五月婷婷| 国产精品18久久久久久久久久久久| 在线视频观看一区| 国产精品无码永久免费888| 美女国产一区二区| 91麻豆精品国产91久久久使用方法| 亚洲另类色综合网站| 成人福利视频在线| 中文字幕欧美日韩一区| 青草国产精品久久久久久| 欧美日韩免费高清一区色橹橹| 亚洲天堂免费在线观看视频| 成人在线综合网站| 国产视频视频一区| 国产黄色精品网站| 日本一区二区成人| 成人a免费在线看| 亚洲免费在线看| 色婷婷久久久综合中文字幕| 亚洲视频在线一区观看| 99热精品国产| 亚洲激情图片一区| 在线观看亚洲一区| 午夜精品久久久久久久| 欧美日韩dvd在线观看| 婷婷中文字幕综合| 日韩三级电影网址| 国产精品一级片在线观看| 国产精品嫩草影院com| 成人av电影在线| 亚洲资源在线观看| 欧美精品在线一区二区三区| 男人的天堂久久精品| 337p粉嫩大胆噜噜噜噜噜91av| 国产麻豆视频一区| 国产精品久久久久久久浪潮网站| 91在线高清观看| 亚洲aaa精品| 精品黑人一区二区三区久久| 午夜不卡在线视频| 麻豆精品一区二区综合av| 91精选在线观看| 国产一区二区毛片| 最新欧美精品一区二区三区| 色av一区二区| 麻豆精品新av中文字幕| 日韩美女一区二区三区| 一区二区三区日韩欧美精品 | 国产日韩在线不卡| 色琪琪一区二区三区亚洲区| 欧美精品久久一区二区三区| 免费的国产精品| 欧美激情一区二区三区全黄 | 亚洲男人的天堂一区二区| 欧美亚洲日本国产| 久久精品国产久精国产爱| 中文字幕日韩av资源站| 91精品国产综合久久久久久漫画 | 亚洲一区成人在线| 久久综合av免费| 欧美性大战久久久久久久蜜臀| 麻豆精品在线视频| 亚洲精品ww久久久久久p站 | 日韩一级免费一区| 91免费视频网址| 韩国精品主播一区二区在线观看| 一区二区三区精品在线观看| 2022国产精品视频| 欧美日韩免费观看一区二区三区| 国产91综合网| 日本麻豆一区二区三区视频| 国产精品久久久久久久久免费相片| 欧美肥妇free| 欧美影院一区二区三区| 成人在线一区二区三区| 蜜臀精品久久久久久蜜臀| 18成人在线视频| 久久久精品免费观看| 欧美日韩精品福利| 91啦中文在线观看| 国产精品77777| 轻轻草成人在线| 亚洲福利一二三区| 亚洲欧美日韩一区二区| 26uuu亚洲| 日韩一区二区在线观看视频播放| 91丨九色丨国产丨porny| 国产成人免费网站| 国产美女娇喘av呻吟久久| 麻豆精品视频在线观看视频| 首页综合国产亚洲丝袜| 一区二区三区欧美| 夜夜爽夜夜爽精品视频| 一区二区三区蜜桃网| 一区二区三区中文在线观看| 国产精品久久久久久亚洲伦 | 99r精品视频| 成人国产视频在线观看| 国产成人在线免费观看| 国产毛片精品视频| 国产精品99久久久久久久vr| 国产成人av电影在线播放| 国产精品456| 东方欧美亚洲色图在线| 国产成人精品www牛牛影视| 国产很黄免费观看久久| 大美女一区二区三区| 成人av在线观| 91女神在线视频| 欧美乱妇15p| 欧美成人激情免费网| 欧美videos中文字幕| 国产一区三区三区| 国产精品传媒在线| 综合久久久久久| 亚洲综合一二区| 日韩二区三区四区| 精品一区二区精品| 成人午夜私人影院| 99re这里都是精品| 欧美日韩大陆一区二区| 欧美一区二区三区啪啪| 精品久久久久av影院| 国产拍揄自揄精品视频麻豆| 国产精品国产馆在线真实露脸| 亚洲欧美偷拍卡通变态| 无吗不卡中文字幕| 国产在线视视频有精品| 国产成人在线色| 欧美日高清视频| 久久无码av三级| 一区二区不卡在线播放| 青青草精品视频| av中文一区二区三区| 欧美自拍偷拍午夜视频| 日韩欧美国产不卡| 成人免费在线视频观看| 久久精品久久精品| av亚洲精华国产精华| 欧美精品九九99久久| 欧美激情综合网| 日韩高清电影一区| 成人国产亚洲欧美成人综合网| 欧美精品在线一区二区| 国产精品美女久久久久久久久| 五月天久久比比资源色| 成熟亚洲日本毛茸茸凸凹| 91黄视频在线| 亚洲国产激情av| 日本欧美在线观看| 色呦呦网站一区| 久久青草国产手机看片福利盒子 | 性做久久久久久久久| 国产乱子伦一区二区三区国色天香| 色女孩综合影院| 亚洲国产成人午夜在线一区| 青草国产精品久久久久久| 在线视频一区二区三| 国产三级三级三级精品8ⅰ区| 天天av天天翘天天综合网色鬼国产 | 色噜噜狠狠色综合中国 | 日韩免费观看高清完整版在线观看| 国产精品毛片高清在线完整版| 蜜桃传媒麻豆第一区在线观看| 色综合久久综合网| 中文字幕国产精品一区二区| 麻豆成人91精品二区三区| 欧美性大战xxxxx久久久| **欧美大码日韩| 国产91色综合久久免费分享| 精品国精品自拍自在线| 国产美女av一区二区三区| 国产欧美一区二区精品久导航| 五月激情六月综合| 欧美亚洲日本一区| 一区二区三区在线观看欧美| 99久久99久久综合| 欧美激情一区二区三区在线| 激情小说亚洲一区| 欧美成人精品1314www| 韩国一区二区三区| 中文字幕一区二区三区不卡在线| 7777精品伊人久久久大香线蕉经典版下载 | 欧美视频一区在线| 亚洲激情在线激情|