通过游戏中的按钮逃脱延迟

时间:2017-05-07 15:01:55

标签: c avr

我的游戏代码存在问题。我想知道,如果我按下按钮,如何打破时间延迟。

List of files

最后,游戏将你的最终得分写在液晶显示屏上10秒钟。然后回到等待开始。我想保持原样 - 我想要包括的唯一一件事就是如果我在10秒钟内按下按钮,我希望它立即回到等待开始。

功能代码在这里

my.function <- function(a,b,x){a*x^2+b}
x <- 1:10
y <- my.function(a=1,b=0,x=x)
plot(y~x)

当游戏结束时,此功能会根据您的等级绘制您的分数。在下一个函数中,我调用了drawgamescore函数,它位于dsip_end_score makro中。

void DrawGameScore()
{   //&amp;RFONT_8X12 &amp;RFONT_16X26
    //char key;
    //key = KBD_GetKey();
    char txt[10];
    UG_FontSelect(&amp;RFONT_16X26);
    UG_SetForecolor(C_WHITE);
    switch (level){
        case 1:

            UG_PutString(60,130,"Peasant Score:");
            sprintf(txt,"%d",score);
            UG_PutString(120,160,txt);
            _delay_ms(10000);
            break;
        case 2:
            UG_PutString(60,130,"Knight Score:");
            sprintf(txt,"%d",score);
            UG_PutString(120,160,txt);
            _delay_ms(10000);
            break;
        case 3:
            UG_PutString(60,130,"Queen Score:");
            sprintf(txt,"%d",score);
            UG_PutString(120,160,txt);
            _delay_ms(10000);
            break;
        case 4:
            UG_PutString(60,130,"King Score:");
            sprintf(txt,"%d",score);
            UG_PutString(120,160,txt);
            _delay_ms(10000);
            break;
        case 5:
            UG_PutString(60,130,"God Score:");
            sprintf(txt,"%d",score);
            UG_PutString(120,160,txt);
            _delay_ms(10000);
            break;
    }
    //UG_PutString(60,130,"Final Score:");

    //sprintf(txt,"%d",score);


    //UG_PutString(120,160,txt);
    //_delay_ms(1000);
}

这是主要的游戏功能

int EndOfGame()
{
    char key;
    //static int state;
    int result = 1;
    key = KBD_GetKey();

    display_msg = DSIP_END_SCORE;
    if (key == BTN_OK){
        //display_msg = DISP_REFRESH_ALL;
        //display_msg = DSIP_END_SCORE;
        return result;
    } 
    return result;
}

感谢。

我试过

void Game()
{
    static int state;
    int result;

    switch (state)
    {
        case 1: //waiting for the game start
            result = WaitForStart();
            if (result == 1) state++;
            break;
        case 2: //Play the game
            result = PlayTheGame();
            if (result == 1) state++;
            break;
        case 3: //Display the score
            result = EndOfGame();
            if (result == 1) state=0;
            break;
        default: //0 or unknown value: reset the game
            state = 1;
            break;
    }
}

0 个答案:

没有答案