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

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

?? shape.cpp

?? 俄羅斯方塊源碼
?? CPP
字號:
/***************************************************************************/
/*                                                                         */
/*  Shape.cpp                                                              */
/*                                                                         */
/*    The main shape definition                                            */
/*    It was designed as a active object .                                 */
/*                                                                         */
/*  Copyright 2007 by                                                      */
/*                  Kan(EMail: k32459871@126.com.)                         */
/*  Data: 2007-5-1                                                         */
/*                                                                         */
/***************************************************************************/

#include "Shape.h"

#include "Enuos.h"
/*Constructor*/
Shape::Shape(Canvas* pCanvas):_pCanvas(pCanvas)
                             ,Intervals(Default_Intervals),_State(STOPING)
{
    NewEnuos* pMe = (NewEnuos*)GETAPPINSTANCE();
    ISHELL_CreateInstance(pMe->m_pIShell,AEECLSID_STATIC,(void**)&pLbl);

    Reset();
}
void Shape::DrawStr(AECHAR* pA,int len)
{    
    NewEnuos* pMe = (NewEnuos*)GETAPPINSTANCE();
    
    AEERect rc;
    rc.dx = 120;
    rc.dy = 40;
    rc.x = 50;
    rc.y = 130;

    ISTATIC_SetRect(pLbl,&rc);
    
    ISTATIC_SetText(pLbl, NULL, pA, AEE_FONT_BOLD, AEE_FONT_BOLD);
    
    ISTATIC_Redraw(pLbl);   
    rc.dx = 0;
    rc.dy = 0;
    rc.x = -1;
}

void Shape::Reset()
{
   
    uint32 randNo = 0;
    GETRAND((byte*)&randNo,sizeof(uint32));
    this->CurrentStateX = randNo%7;
    
    GETRAND((byte*)&randNo,sizeof(uint32));
    this->CurrentStateY = randNo%4;   
    /* 
    this->CurrentStateX = 0;
    this->CurrentStateY = 0;
    */
    StartPosY = 0;
    StartPosX = 3;
    
    if(FALSE == _pCanvas->GetClient()->Accept(StartPosX,StartPosY
        ,STATES[CurrentStateX][CurrentStateY]))   
    {
        _State = STOPING;
        
        DrawStr((unsigned short*)L"Game Over",10);
        DBGPRINTF("Game Over....");
    }
}

/*Desconstructor*/
Shape::~Shape()
{
    ISTATIC_Release(pLbl);
}

/*Getter & Setter*/
Canvas* Shape::GetCanvas() const
{
    return _pCanvas;
}

int Shape::GetCurrentStateX() const
{
    return this->CurrentStateX;
}

void Shape::SetCurrentStateX(const int state)
{
    this->CurrentStateX = state;
}

int Shape::GetCurrentStateY() const
{
    return this->CurrentStateY;
}

void Shape::SetCurrentStateY(const int state)
{
    this->CurrentStateY = state;
}


int Shape::GetIntervals() const
{
    return this->Intervals;
}

void Shape::SetIntervals(const int intervals)
{
    this->Intervals = intervals;
}

const Shape::APPState Shape::GetAppState() const
{
    return _State;
}

void Shape::Start()
{
    if(_State != RUNNING)
    {
        _State = RUNNING;
        _pCanvas->Draw();
    }
    Intervals = Default_Intervals;
    Run(this);
}

void Shape::Suspend()
{
    if(_State == RUNNING)
    {
        _State = SUSPENDING;
    }
    DrawStr((unsigned short*)L"Suspend",8);
    DBGPRINTF("++++++++++++++Suspend %d",Intervals);
}

void Shape::Resume()
{
    ISTATIC_Reset(pLbl);
    if(_State != RUNNING)
    {
        _State = RUNNING;
        _pCanvas->Draw();
    }
    DBGPRINTF("++++++++++++++Resume %d",Intervals);
    Run(this);
}

void Shape::Stop()
{
    DrawStr((unsigned short*)L"Stop",5);
    Intervals = Default_Intervals;
    _State = STOPING;
}

boolean Shape::MoveLeft()
{    
    if(_State != RUNNING)
        return FALSE;

    if(FALSE == _pCanvas->GetClient()->Accept(StartPosX - 1,StartPosY
        ,STATES[CurrentStateX][CurrentStateY]))   
    {
        return FALSE;
    }
    else
    {
        _pCanvas->GetClient()->DrawStyle(FALSE,StartPosX,StartPosY
            ,STATES[CurrentStateX][CurrentStateY]);
        _pCanvas->GetClient()->DrawStyle(TRUE ,--StartPosX,StartPosY
                                               ,STATES[CurrentStateX][CurrentStateY]);
    }

    return TRUE;
}

boolean Shape::MoveRight()
{    
    if(_State != RUNNING)
        return FALSE;

    if(FALSE == _pCanvas->GetClient()->Accept(StartPosX + 1,StartPosY
        ,STATES[CurrentStateX][CurrentStateY]))   
    {
        return FALSE;
    }
    else
    {
        _pCanvas->GetClient()->DrawStyle(FALSE,StartPosX,StartPosY
            ,STATES[CurrentStateX][CurrentStateY]);
        _pCanvas->GetClient()->DrawStyle(TRUE ,++StartPosX,StartPosY
            ,STATES[CurrentStateX][CurrentStateY]);
    }

    return TRUE;
}

boolean Shape::MoveDown()
{
    if(_State != RUNNING)
        return FALSE;

    while(MoveStep() == TRUE)
    {

    }
    _pCanvas->GetClient()->FillStyle(TRUE ,StartPosX,StartPosY
            ,STATES[CurrentStateX][CurrentStateY]);
    
    int Score = _pCanvas->GetClient()->RemoveLine();
    Reset();
    SetIntervals(Default_Intervals - Score/10 * Add_Intervals);
    return TRUE;
}

boolean Shape::MoveStep()
{    
    if(StartPosY >= 0)
    {
         if(FALSE == this->_pCanvas->GetClient()->Accept(StartPosX,StartPosY+1
                                               ,STATES[CurrentStateX][CurrentStateY]))   
         {
             return FALSE;
         }
         _pCanvas->GetClient()->DrawStyle(FALSE,StartPosX,StartPosY
                                               ,STATES[CurrentStateX][CurrentStateY]);
         _pCanvas->GetClient()->DrawStyle(TRUE ,StartPosX,++StartPosY
                                               ,STATES[CurrentStateX][CurrentStateY]);
    }

    return TRUE;
}

boolean Shape::TurnNextStyle()
{
    int next = CurrentStateY == 3 ? 0 : CurrentStateY + 1;
    
    if(FALSE == this->_pCanvas->GetClient()->Accept(StartPosX,StartPosY
        ,STATES[CurrentStateX][next]))   
    {
        return FALSE;
    }

    _pCanvas->GetClient()->DrawStyle(FALSE,StartPosX,StartPosY
        ,STATES[CurrentStateX][CurrentStateY]);
    
    CurrentStateY = next;
    _pCanvas->GetClient()->DrawStyle(TRUE ,StartPosX,StartPosY
                                               ,STATES[CurrentStateX][CurrentStateY]);
    return TRUE;
}


void Shape::Run(void *pUser)
{
    Shape* pShape = (Shape*)pUser;

    if(pShape->GetAppState() == SUSPENDING)
    {
        return;
    }
    else if(pShape->GetAppState() == STOPING)
    {
        pShape->_pCanvas->GetClient()->Init();
        return;
    }
    else if(pShape->GetAppState() == RUNNING)
    {       
        if(FALSE == pShape->MoveStep())
        {
            pShape->_pCanvas->GetClient()->FillStyle(TRUE ,pShape->StartPosX,pShape->StartPosY
                                               ,STATES[pShape->CurrentStateX][pShape->CurrentStateY]);
            int Score = pShape->_pCanvas->GetClient()->RemoveLine();
            pShape->SetIntervals(Default_Intervals - Score/10 * Add_Intervals);
            pShape->Reset();
        }
       
        NewEnuos* pMe = (NewEnuos*)GETAPPINSTANCE();
        ISHELL_SetTimer(pMe->m_pIShell,pShape->Intervals,(PFNNOTIFY)Shape::Run,pUser);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
水蜜桃久久夜色精品一区的特点| 亚洲国产视频直播| 亚洲天堂中文字幕| 日韩成人午夜精品| 色欲综合视频天天天| 久久尤物电影视频在线观看| 亚洲欧美另类久久久精品| 国产一区视频导航| 欧美猛男gaygay网站| 国产精品视频一二三| 久久99精品久久久久久久久久久久| 一本一本大道香蕉久在线精品| 久久影视一区二区| 美女在线一区二区| 欧美日韩在线直播| 亚洲女人****多毛耸耸8| 成人成人成人在线视频| 欧美成人猛片aaaaaaa| 天天av天天翘天天综合网| 91在线观看地址| 中文字幕一区二区三区乱码在线| av在线播放成人| 精品久久久久久无| 久久精品久久综合| 91麻豆精品国产自产在线| 夜夜操天天操亚洲| 91福利区一区二区三区| 日韩理论片一区二区| 成人免费毛片app| 国产欧美精品日韩区二区麻豆天美| 久久综合综合久久综合| 日韩欧美区一区二| 黑人精品欧美一区二区蜜桃| 欧美一级二级三级乱码| 日韩av一级电影| 日韩三级中文字幕| 激情综合亚洲精品| 久久精品视频免费| 成人高清av在线| 成人免费一区二区三区在线观看| av中文字幕不卡| 亚洲欧美日本在线| 欧美日韩国产一级片| 日本美女一区二区| 久久久综合九色合综国产精品| 国产精品资源在线看| 中文字幕 久热精品 视频在线| 成人污视频在线观看| 亚洲色大成网站www久久九九| 日本精品视频一区二区| 亚洲成人av一区二区| 欧美一区二区三区在线电影| 美女网站色91| 欧美国产日韩精品免费观看| 色综合天天综合在线视频| 亚洲图片欧美视频| 欧美成人r级一区二区三区| 国产高清精品网站| 亚洲激情图片qvod| 欧美一二区视频| 国产91高潮流白浆在线麻豆| 亚洲黄色小说网站| 日韩女优av电影在线观看| 国产91精品一区二区麻豆亚洲| 亚洲精品ww久久久久久p站| 欧美一区二区三区精品| 高清beeg欧美| 亚洲成人1区2区| 日本一区二区视频在线| 欧美在线三级电影| 国产一区二区精品在线观看| 亚洲男同性视频| 18涩涩午夜精品.www| 欧美日韩黄色影视| 成人精品亚洲人成在线| 日韩一区精品字幕| 中文字幕欧美一区| 欧美大黄免费观看| 91久久久免费一区二区| 激情图片小说一区| 亚洲一区在线电影| 国产精品色噜噜| 日韩一级大片在线| 欧美亚一区二区| 国产成人av电影在线| 日韩高清不卡一区二区三区| 综合久久一区二区三区| 精品少妇一区二区三区在线播放 | 国产精品久久久久婷婷| 正在播放一区二区| 日本国产一区二区| 成人性生交大片| 激情伊人五月天久久综合| 亚洲国产一二三| 亚洲人成网站在线| 中文字幕不卡的av| 久久免费偷拍视频| 精品国产三级a在线观看| 欧美在线观看禁18| 色av综合在线| 91麻豆国产香蕉久久精品| 国产精品12区| 国产一区二区按摩在线观看| 青青青伊人色综合久久| 性欧美疯狂xxxxbbbb| 一区二区三区美女视频| 成人欧美一区二区三区小说| 国产色产综合产在线视频| 亚洲精品在线观看视频| 欧美tk丨vk视频| 日韩欧美国产成人一区二区| 91精品在线观看入口| 欧美老女人在线| 欧美日韩国产在线播放网站| 欧美日韩精品一二三区| 欧美日韩日日骚| 欧美日韩国产首页| 777久久久精品| 欧美一区二区三区思思人 | 不卡一区中文字幕| 不卡视频免费播放| 成人a区在线观看| 一本色道久久综合亚洲精品按摩 | 成人h精品动漫一区二区三区| 国产91富婆露脸刺激对白| eeuss国产一区二区三区| 成人黄色电影在线| av不卡在线播放| 在线视频一区二区三| 欧美午夜在线观看| 91精品国产全国免费观看| 日韩欧美自拍偷拍| 久久久不卡影院| 中文字幕一区二区三区色视频| 尤物视频一区二区| 午夜国产精品一区| 久草这里只有精品视频| 国产精品亚洲一区二区三区在线 | 国产精品网站导航| 中文字幕制服丝袜一区二区三区| 亚洲精品免费一二三区| 日韩精品久久久久久| 国内精品自线一区二区三区视频| 国产91精品免费| 欧美日韩久久久久久| 久久婷婷成人综合色| 亚洲欧美综合网| 日韩高清不卡一区二区| 丰满岳乱妇一区二区三区| 在线视频国产一区| 日韩网站在线看片你懂的| 国产欧美视频一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲国产精品久久人人爱蜜臀| 久久精品国产**网站演员| 成人午夜短视频| 欧美日本一区二区在线观看| 久久女同性恋中文字幕| 亚洲综合在线观看视频| 极品尤物av久久免费看| 欧洲人成人精品| 久久免费精品国产久精品久久久久| 中文字幕综合网| 极品瑜伽女神91| 欧美三级乱人伦电影| 国产日韩三级在线| 日本在线播放一区二区三区| 99热这里都是精品| 2021国产精品久久精品| 亚洲综合激情网| 国产·精品毛片| 日韩欧美一区二区在线视频| 亚洲视频你懂的| 风间由美一区二区三区在线观看 | 日本一区二区综合亚洲| 日本不卡视频在线观看| 一本到一区二区三区| 久久精品视频免费| 日本不卡一区二区三区| 91久久精品国产91性色tv | 风流少妇一区二区| 精品电影一区二区三区| 香蕉乱码成人久久天堂爱免费| av电影天堂一区二区在线观看| 精品av久久707| 久久国产免费看| 91精品欧美久久久久久动漫| 亚洲在线免费播放| 一本色道亚洲精品aⅴ| 综合久久给合久久狠狠狠97色| 国产精品1区2区3区在线观看| 日韩欧美综合一区| 美日韩黄色大片| 欧美成人综合网站| 美女视频网站久久| 日韩欧美在线影院| 激情亚洲综合在线| 久久久久久久电影| 福利91精品一区二区三区| 久久久国产精华|