⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eros.c

📁 基于QUALCOMM BREW平台实现俄罗斯方块游戏功能
💻 C
📖 第 1 页 / 共 5 页
字号:

        while(pt--)
        {
            if (buffer)
            {
                buffer[pt] = (char)('0' + (ueger % 10));
            }
            ueger /= 10;
        }
    }
    return (len + 1 + minusP);
}

//=====================================================================
// the following code for Russia frame
//Function: clearblock
//Description: clear a block
//Side effect: none
//=====================================================================
void ClearBlock(eros * pMe) /*clear the data within the block*/
{int i,j;
    for (i=0; i<4; i++)
        for (j=0; j<4; j++)
            pMe->block[i][j] = 0;
}
//====================================================================
// Function: write_video
// Description: draw a frame
// input value position(x,y)
// Side effect: play the bitmap_buf
//====================================================================
void write_video
(
    eros * pMe,
    int x,
    int y,
    RGBVAL color,
    unsigned char full
)
{
    AEERect rect;
    rect.x=x;
    rect.y=y+BREW_APP_Y+MENU_TITLE_HEIGHT;
    rect.dx=pMe->block_width;
    rect.dy=pMe->block_width;
    if(full)
    {

        IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                          &rect,
                          RGB_BLACK,// RGBVAL
                          color,// RGBVAL
                          IDF_RECT_FRAME | IDF_RECT_FILL);
        SETAEERECT(&rect,x+1,y+1+BREW_APP_Y+MENU_TITLE_HEIGHT,pMe->block_width-2,1);
        IDISPLAY_FillRect(pMe->a.m_pIDisplay,&rect,RGB_WHITE);
        SETAEERECT(&rect,x+1,y+1+BREW_APP_Y+MENU_TITLE_HEIGHT,1,pMe->block_width-2);
        IDISPLAY_FillRect(pMe->a.m_pIDisplay,&rect,RGB_WHITE);
    }
    else
    {
        IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                          &rect,
                          RGB_WHITE,// RGBVAL
                          RGB_WHITE,// RGBVAL
                          IDF_RECT_FRAME | IDF_RECT_FILL);
    }
}
/*===================================================================
Function: generateblock
Description: generate a block
input: block class
Side effect: none
====================================================================*/
void GenerateBlock(eros * pMe,int kind)   /*generate a block*/
{
    int val;
    val=kind%10;
    ClearBlock(pMe);
    switch (kind)
    {
    case  1:
        pMe->block[1][0] = pMe->block[2][0] = pMe->block[0][1] = pMe->block[1][1] = val;
        break;
    case 11:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[1][2] = val;
        break;
    case 21:
        pMe->block[1][0] = pMe->block[2][0] = pMe->block[0][1] = pMe->block[1][1] = val;
        break;
    case 31:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[1][2] = val;
        break;

    case  2:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[2][1] = val;
        break;
    case 12:
        pMe->block[1][0] = pMe->block[1][1] = pMe->block[0][1] = pMe->block[0][2] = val;
        break;
    case 22:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[2][1] = val;
        break;
    case 32:
        pMe->block[1][0] = pMe->block[1][1] = pMe->block[0][1] = pMe->block[0][2] = val;
        break;

    case  3:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
        break;
    case 13:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
        break;
    case 23:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
        break;
    case 33:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = val;
        break;

    case  4:
        pMe->block[1][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][1] = val;
        break;
    case 14:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[1][1] = val;
        break;
    case 24:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[1][1] = val;
        break;
    case 34:
        pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = val;
        break;

    case  5:
        pMe->block[2][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][1] = val;
        break;
    case 15:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[1][2] = val;
        break;
    case 25:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[0][1] = val;
        break;
    case 35:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = val;
        break;

    case  6:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][1] = val;
        break;
    case 16:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[0][1] = pMe->block[0][2] = val;
        break;
    case 26:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[2][1] = val;
        break;
    case 36:
        pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[0][2] = val;
        break;

    case  7:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[3][0] = val;
        break;
    case 17:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[0][3] = val;
        break;
    case 27:
        pMe->block[0][0] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[3][0] = val;
        break;
    case 37:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[0][3] = val;
        break;

    case  8:
        pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
        break;
    case 18:
        pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
        break;
    case 28:
        pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
        break;
    case 38:
        pMe->block[0][1] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = pMe->block[2][1] = val;
        break;

    case  9:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][1] = pMe->block[2][0] = pMe->block[2][1] = val;
        break;
    case 19:
        pMe->block[0][0] = pMe->block[0][2] = pMe->block[1][0] = pMe->block[1][1] = pMe->block[1][2] = val;
        break;
    case 29:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[1][0] = pMe->block[2][0] = pMe->block[2][1] = val;
        break;
    case 39:
        pMe->block[0][0] = pMe->block[0][1] = pMe->block[0][2] = pMe->block[1][0] = pMe->block[1][2] = val;
        break;
    default:
        break;
    }

    if ((kind == 7) || (kind == 27))
    {
        pMe->x_size = 4;
        pMe->y_size = 1;
    }
    else if ((kind == 17) || (kind == 37))
    {
        pMe->x_size = 1;
        pMe->y_size = 4;
    }
    else if (kind % 10 == 3)
    {
        pMe->x_size = 2;
        pMe->y_size = 2;
    }
    else if (kind % 10 == 8)
    {
        pMe->x_size = 3;
        pMe->y_size = 3;
    }
    else if ((kind / 10 == 0) || (kind / 10 == 2))
    {
        pMe->x_size = 3;
        pMe->y_size = 2;
    }
    else if ((kind / 10 == 1) || (kind / 10 == 3))
    {
        pMe->x_size = 2;
        pMe->y_size = 3;
    }
    pMe->current_block = kind;
}
//================================================================
//Funciton initialmemory
//Description: initial memory
//Side effect: none
//================================================================
void initialmemory(eros * pMe)
{
    int i,j;
    AEERect rect;
    //AECHAR szText[] ={'N','e','x','t','\0','S','c','o','r','e','\0'},game_title[30]={0};
    AECHAR szText[20] ={0},szScore[20] ={0},game_title[30]={0};
    uint32   dwTime = GET_UPTIMEMS();
    ISHELL_LoadResString(pMe->a.m_pIShell, gsErosResFile, IDS_GAME_TITLE, game_title, sizeof(game_title));
    ISHELL_LoadResString(pMe->a.m_pIShell, gsErosResFile, IDS_NEXT, szText, sizeof(szText));
    ISHELL_LoadResString(pMe->a.m_pIShell, gsErosResFile, IDS_SCORE, szScore, sizeof(szScore));
    rect.x=0;
    rect.y=0+BREW_APP_Y+MENU_TITLE_HEIGHT;
    rect.dx=pMe->m_Rect.dx; //screen width
    rect.dy=pMe->block_height;
    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                      &rect,
                      pMe->frame_color,// RGBVAL
                      pMe->frame_color,// RGBVAL
                      IDF_RECT_FRAME | IDF_RECT_FILL);
    rect.x=0;
    rect.y=MAP_HEIGHT*pMe->block_height+pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
    rect.dx=pMe->m_Rect.dx;//screen width
    rect.dy=pMe->block_height;
    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                      &rect,
                      pMe->frame_color,// RGBVAL
                      pMe->frame_color,// RGBVAL
                      IDF_RECT_FRAME | IDF_RECT_FILL);
    rect.x=MAP_WIDTH*pMe->block_width+pMe->block_width;
    rect.y=pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
    rect.dx=pMe->block_width;
    rect.dy=MAP_HEIGHT*pMe->block_height;

    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                      &rect,
                      pMe->frame_color,
                      pMe->frame_color,
                      IDF_RECT_FRAME | IDF_RECT_FILL);
    rect.x=0;
    rect.y=pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
    rect.dx=pMe->block_width;
    rect.dy=MAP_HEIGHT*pMe->block_height;
    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                      &rect,
                      pMe->frame_color,// RGBVAL
                      pMe->frame_color,// RGBVAL
                      IDF_RECT_FRAME | IDF_RECT_FILL);
    rect.x=pMe->m_Rect.dx-pMe->block_width;
    rect.y=pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT;
    rect.dx=pMe->block_width;
    rect.dy=MAP_HEIGHT*pMe->block_height;
    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                      &rect,
                      pMe->frame_color,// RGBVAL
                      pMe->frame_color,// RGBVAL
                      IDF_RECT_FRAME | IDF_RECT_FILL);
    IDISPLAY_DrawText(pMe->a.m_pIDisplay,    // Display instance
                      AEE_FONT_LARGE,       // Use BOLD font
                      szText,              // Text - Normally comes from resource
                      -1,                  // -1 = Use full string length
                      MAP_WIDTH*pMe->block_width+1+pMe->block_width+pMe->block_width,   // x-cordinate
                      pMe->block_height+4+BREW_APP_Y+MENU_TITLE_HEIGHT,                   // y-cordinate
                      NULL,                // No clipping
                      0);//IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
    IDISPLAY_DrawText(pMe->a.m_pIDisplay,    // Display instance
                      AEE_FONT_LARGE,       // Use BOLD font
                      szScore,//szText+5,              // Text - Normally comes from resource
                      -1,                  // -1 = Use full string length
                      MAP_WIDTH*pMe->block_width+1+pMe->block_width+pMe->block_width,  // x-cordinate
                      MAP_HEIGHT*pMe->block_height-48+pMe->block_height+BREW_APP_Y+MENU_TITLE_HEIGHT,                   // y-cordinate
                      NULL,                // No clipping
                      0);//IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
    Eros_DrawLevel(pMe);
#if 0

    IDISPLAY_DrawText(pMe->a.m_pIDisplay,    // Display instance
                      AEE_FONT_BOLD,       // Use BOLD font
                      game_title,              // Text - Normally comes from resource
                      -1,                  // -1 = Use full string length
                      0,   // x-cordinate
                      MAP_HEIGHT*pMe->block_height+pMe->block_height+pMe->block_height+8+BREW_APP_Y+MENU_TITLE_HEIGHT,                   // y-cordinate
                      NULL,                // No clipping
                      IDF_ALIGN_CENTER );
#endif

    HSComFunc_DrawTitleBGImage(pMe->a.m_pIDisplay,0,FALSE);
    Eros_DrawTitleText(pMe,IDS_GAME_TITLE);

    for (i=0; i<pMe->map_line; i++)
        for (j=0; j<pMe->map_col; j++)
            pMe->map[i][j]=0;
    ClearBlock(pMe);
    pMe->a0=0;

    //map_line=24;
    //map_col=12;
    pMe->block_x=0;
    pMe->block_y=20;
    pMe->gameover=0;
    pMe->x_size=0;
    pMe->y_size=0;
    pMe->score=0;
    pMe->dels=0;
    pMe->pause=FALSE;

    pMe->next_block=pMe->x_size+pMe->y_size+pMe->block_x+pMe->block_y+dwTime;
    pMe->next_block=pMe->next_block%pMe->difficult_level+pMe->a0;
    pMe->next_block=pMe->next_block%pMe->difficult_level+1;

}
//================================================================
//Function: restorememory
//Description: get over the memory
//Side effect: none
//================================================================
void restorememory(eros * pMe)
{
    int i,j;
    AEERect rect;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -