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

📄 games_fruit.c

📁 几个嵌入式手机平台小游戏c源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    yoffset= 0;
    st_hint_xi=0;
    st_hint_yj=0;
    st_hint_flag =OP_FALSE;
    inGame=OP_TRUE;
    gamePause=OP_FALSE;

    Fgame_state.Difficulty=1; 
    Fgame_state.Remain_operand=20; 
    Fgame_state.Clearance_time=30;
    st_time = Fgame_state.Clearance_time ;

    for(i=0;i<FRUITNEWGAME_COLUMN_NUM ;i++)
    {
        for(j=0;j<FRUITNEWGAME_LINE_NUM;j++)
        {           
            fruitnewgame_position[i][j]=Rand_Create();
        }
    }
    for(i=0;i<FRUITNEWGAME_COLUMN_NUM+1 ;i++)
    {
        fruitnewgame_position[i][FRUITNEWGAME_LINE_NUM]=0;
    }

    for( j=0;j<FRUITNEWGAME_LINE_NUM+1;j++)
    {
        fruitnewgame_position[FRUITNEWGAME_COLUMN_NUM][j]=0;
    }

    interval = 1000;
    TPO_SetCurrent_RPU(TPO_RUI_GAMES);

    if (gamesApp_data.audio_on == OP_TRUE)
    {
        SP_Audio_play_request(sound_list[0], gamesApp_data.volume, OP_FALSE);   
    }
    clear_full_screen(FRUIT_BG_COLOR);
    do
    {
        rc  = Init_Eliminate();        
    }while(rc);
    fruitnewgame_Score=0;  
    Paint();
    ds_set_softkeys_rm( PMPT_SKEY_EMPTY,PMPT_SKEY_EMPTY, PMPT_SKEY_BACK);
    ds_draw_text_rm(140,204, PMPT_SKEY_BACK, FONT_SIZE_SMALL|FONT_OVERLAP, 
    COLOR_RED,
    COLOR_FONTBG);
    ds_refresh();
    OPUS_Start_Timer(OPUS_TIMER_GAME_TIMING, interval, 0,  PERIODIC); 

}
/*==================================================================================================
    FUNCTION: Paint

    DESCRIPTION:
        Description of this specific function.

    ARGUMENTS PASSED:
        
    RETURN VALUE:

    IMPORTANT NOTES:
        
==================================================================================================*/
static void Paint(void)
{
    OP_UINT16  i,j;
    ds_draw_bitmap_image_rm (0,160,BMP_FRUIT_GREEN_SCORE);
    for(i=0;i<FRUITNEWGAME_LINE_NUM;i++)
    {
        for(j=0;j<FRUITNEWGAME_COLUMN_NUM;j++)
        {
            DrawSquare(i,j,  fruitnewgame_position[i][j]);
        }
    }
    ShowScore();
}
/*==================================================================================================
    FUNCTION: DrawSquare

    DESCRIPTION:
        Description of this specific function.

    ARGUMENTS PASSED:
        
    RETURN VALUE:

    IMPORTANT NOTES:
        
==================================================================================================*/
static void DrawSquare(OP_UINT16 col,OP_UINT16 line, OP_UINT16 state)
{
    OP_UINT16 x,y;
    RM_BMP_ID_T bitmap_id = NULL_BITMAP;

    line = (FRUITNEWGAME_LINE_NUM-1)-line ;
    x = xoffset+col*SQUAREWIDTH;
    y = yoffset+line*SQUAREHEIGHT;
    
    switch (state)
    {      
           
        case 1 :  
            bitmap_id =BMP_FRUIT_GREEN_PUTAO;
            break;
        case 2 : 
            bitmap_id = BMP_FRUIT_GREEN_YINGTAO;
            break;
        case 3 :  
            bitmap_id = BMP_FRUIT_GREEN_JUZI;
            break;
        case 4 :  
            bitmap_id = BMP_FRUIT_GREEN_LIZI;
            break;
        case 5 : 
            bitmap_id = BMP_FRUIT_GREEN_XIGUA;
            break;
        case 6 :  
            bitmap_id = BMP_FRUIT_GREEN_CHAOMEI;
            break;
        case 7:  
            bitmap_id = BMP_FRUIT_GREEN_APPLE;
            break;
        case 8:
            bitmap_id= BMP_FRUIT_GREEN_SCORE;
            break;
        case 9:
            bitmap_id= BMP_FRUIT_BACKGROUND;
            break;

        case 11 :  
            bitmap_id =  BMP_FRUIT_BLUE_PUTAO;
            break;
        case 12 : 
            bitmap_id =  BMP_FRUIT_BLUE_YINGTAO;
            break;
        case 13 :  
            bitmap_id =  BMP_FRUIT_BLUE_JUZI;
            break;
        case 14 :  
            bitmap_id =  BMP_FRUIT_BLUE_LIZI;
            break;
        case 15 : 
            bitmap_id =  BMP_FRUIT_BLUE_XIGUA;
            break;
        case 16 :  
            bitmap_id =  BMP_FRUIT_BLUE_CHAOMEI;
            break;
        case 17:  
            bitmap_id =  BMP_FRUIT_BLUE_APPLE;
            break;


         case 21 :  
            bitmap_id =  BMP_FRUIT_PRESS_PUTAO;
            break;
        case 22 : 
            bitmap_id =  BMP_FRUIT_PRESS_YINGTAO;
            break;
        case 23 :  
            bitmap_id =  BMP_FRUIT_PRESS_JUZI;
            break;
        case 24 :  
            bitmap_id =  BMP_FRUIT_PRESS_LIZI;
            break;
        case 25 : 
            bitmap_id =  BMP_FRUIT_PRESS_XIGUA;
            break;
        case 26 :  
            bitmap_id =  BMP_FRUIT_PRESS_CHAOMEI;
            break;
        case 27:  
            bitmap_id =  BMP_FRUIT_PRESS_APPLE;
            break;

        default:
            break;
    }
    if (bitmap_id != NULL_BITMAP)
    {
        ds_draw_bitmap_image_rm((OP_UINT16)x,(OP_UINT16)y,bitmap_id);
    }
   
}
/*==================================================================================================
    FUNCTION: ShowGameOver

    DESCRIPTION:
        
    ARGUMENTS PASSED:

    RETURN VALUE:

    IMPORTANT NOTES:
        
==================================================================================================*/
static void ShowGameOver(OP_INT16 wScore)
{
    char ss[4];
    OP_UINT8 ustr[MAX_STRING_LENGTH];
    OP_UINT8 tmpstr[MAX_STRING_LENGTH];
    
    inGame=OP_FALSE;
    if (gamesApp_data.audio_on == OP_TRUE)
    {
        SP_Audio_play_request(sound_list[3], gamesApp_data.volume, OP_FALSE); 
    }
    op_memset((void*)ustr, 0, MAX_STRING_LENGTH); 
    op_memset((void*)tmpstr, 0, MAX_STRING_LENGTH);

    OPUS_Stop_Timer(OPUS_TIMER_GAME_TIMING);
    OPUS_Stop_Timer(OPUS_TIMER_GAME_PEN);

    if (wScore > 0 && is_new_highscore(APP_GAMES_FRUIT, wScore))
    {
        util_get_text_from_res_w_max_len(PMPT_TEXT_CONGRATULATION,ustr,MAX_STRING_LENGTH);
        util_get_text_from_res_w_max_len(PMPT_TEXT_NEW_HIGHSCORE,tmpstr,MAX_STRING_LENGTH);
    }
    else
    {
        util_get_text_from_res_w_max_len(PMPT_TEXT_GAME_OVER,ustr,MAX_STRING_LENGTH);
        util_get_text_from_res_w_max_len(PMPT_TEXT_YOUR_SCORE,tmpstr,MAX_STRING_LENGTH);
    }
    Ustrcat(ustr,tmpstr);
    op_sprintf(ss,"%d",wScore);
    AtoU(tmpstr,(OP_UINT8 *)ss);
    Ustrcat(ustr,tmpstr);
    gamesApp_data.popupwin=ds_popup_message(OP_NULL, ustr, DS_POPUP_DEFAULT_MSG_TIME);
}
/*==================================================================================================
    FUNCTION: ShowScore

    DESCRIPTION:
        
    ARGUMENTS PASSED:

    RETURN VALUE:

    IMPORTANT NOTES:
        
==================================================================================================*/
static void ShowScore(void)
{
    RM_LANGUAGE_T Lang_state;
    OP_UINT8 text_str[MAX_STRING_LENGTH];   
    OP_UINT16 str_length; 
    OP_UINT8 diff_text_posi;
    OP_UINT8 score_text_posi;
    OP_UINT8 time_text_posi;
    OP_INT8 diff_str_posi;
    OP_INT8 score_str_posi;
    Lang_state=RM_GetCurrentLanguage();
    if(Lang_state==RM_LANG_CHN)
    {
        diff_text_posi=39;
        score_text_posi=99;
        time_text_posi=19;
        diff_str_posi=-10;
        score_str_posi=-6;

    }
    else if(Lang_state==RM_LANG_ENG)   
    {
        diff_text_posi=31;
        score_text_posi=96;
        time_text_posi=18;
        diff_str_posi=2;
        score_str_posi=-1;

    }
    ds_draw_bitmap_image_rm(0,160,BMP_FRUIT_GREEN_SCORE); 
    util_cnvrt_res_into_text(PMPT_LIST_FRUIT_DIFFI,text_str);
    if (text_str != OP_NULL)
    {
        draw_text(AREAMASK_TEXT, diff_text_posi, 162, LCD_MAX_X-1, text_str, FONT_SIZE_SMALL|FONT_OVERLAP, PMPT_SKEY_EMPTY, COLOR_LIGHT_VERDURE);
        str_length = (OP_INT8)ds_get_string_width(text_str, FONT_SIZE_SMALL);
        drawDigit(Fgame_state.Difficulty, (OP_UINT16)(diff_text_posi + str_length+diff_str_posi), 162);
    }

    util_cnvrt_res_into_text(PMPT_LIST_FRUIT_SCORE,text_str);
    if (text_str != OP_NULL)
    {
        draw_text(AREAMASK_TEXT, score_text_posi, 162, LCD_MAX_X-1, text_str, FONT_SIZE_SMALL|FONT_OVERLAP, PMPT_SKEY_EMPTY, COLOR_LIGHT_VERDURE);
        str_length = (OP_INT8)ds_get_string_width(text_str, FONT_SIZE_SMALL);        
        DisplayScore(fruitnewgame_Score, (OP_UINT16)(score_text_posi+ str_length+score_str_posi), 162);
    } 
    util_cnvrt_res_into_text(PMPT_LIST_FRUIT_CLEARANCE_TIME,text_str);
    if (text_str != OP_NULL)
    {
        draw_text(AREAMASK_TEXT, time_text_posi, 162, LCD_MAX_X-1, text_str, FONT_SIZE_SMALL|FONT_OVERLAP, PMPT_SKEY_EMPTY, COLOR_LIGHT_VERDURE);
        str_length = (OP_INT8)ds_get_string_width(text_str, FONT_SIZE_SMALL);               
        drawDigit(Fgame_state.Clearance_time,1, 162); 
    }       
    ds_refresh();
}
 /*==================================================================================================
    FUNCTION: Whole_Find

    DESCRIPTION:
        *cxp to transfer i,*cyp to transfer j,*countp to transfer the number of eliminated fruits.

    ARGUMENTS PASSED:
        
    RETURN VALUE:

    IMPORTANT NOTES:
        
==================================================================================================*/

static void Whole_Find(OP_UINT16 *cxp,OP_UINT16 *cyp,OP_UINT16 * countp)  
{   
    OP_UINT16  i,j;
    OP_UINT16  continue_fruit=0;  
    OP_UINT16  temp;
    OP_UINT16  cx,cy,count;
    if ((cxp == OP_NULL)||(cyp == OP_NULL)||(countp == OP_NULL))
    {
        return;
    }
    for(i = 0;i<=FRUITNEWGAME_COLUMN_NUM; i++)
    {
        count=1;
        temp = fruitnewgame_position[i][0];
        for(j=1;j<=FRUITNEWGAME_LINE_NUM;j++)
        {
            if(temp==fruitnewgame_position[i][j])
            {   
                count++;                
            }

            else
            {
                if(count>=3)
                {   
                    cx=i;
                    cy=j;
                    for(continue_fruit=(cy- count);continue_fruit<=(cy-1);continue_fruit++)
                    {
                        fruitnewgame_position[cx][continue_fruit]=9;
                        DrawSquare(cx,continue_fruit,9);
                        whole_find_flag=2;
                    }   
                    ds_refresh();
                    *cxp=cx;
                    *cyp=cy;
                    *countp=count;
                    continue_fruit=0;
                    return ;
                }                   
                temp=fruitnewgame_position[i][j];
                count = 1;
                
            }

        }

    }

    for(j=0;j<=FRUITNEWGAME_LINE_NUM;j++)

    {
        count=1;
        temp = fruitnewgame_position[0][j];
        for(i = 1;i<=FRUITNEWGAME_COLUMN_NUM; i++)
        {
            if(temp==fruitnewgame_position[i][j])
            {   
                count++;
            }
            else
            {   
                if(count>=3)
                {   
                    cx=i;
                    cy=j;
                    for(continue_fruit=(cx-count);continue_fruit<=(cx-1);continue_fruit++)
                        {
                            fruitnewgame_position[continue_fruit][cy]=9;
                            DrawSquare(continue_fruit,cy,9);
                            whole_find_flag=1;
                        }            
                    ds_refresh();
                    *cxp=cx;
                    *cyp=cy;
                    *countp=count;
                    continue_fruit=0;
                    return ;
                }
                temp=fruitnewgame_position[i][j];
                count = 1;                
            }
        }

⌨️ 快捷键说明

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