ALLEGRO5中的2D游戏主菜单

时间:2014-12-27 17:36:11

标签: c++ visual-studio-2013 menu allegro game-loop

我的大学项目存在很大问题。 我试图在Allegro5中制作简单的游戏,但我已停止制作主菜单。 我有基本代码,但有4个可能性:开始游戏,选项,积分,退出。我只能看到其中一个(退出)。不知道怎么修理它,你能帮帮我吗?

    ///////////// MENU
string menu[4] = { "Start Game", "Options", "Credits", "Exit" };

while (!quit)
{
    ALLEGRO_EVENT ev;
    al_wait_for_event(event_queue, &ev);

    if (ev.type == ALLEGRO_EVENT_TIMER)
    {
        redraw = true;
    }
    if (ev.type == ALLEGRO_EVENT_KEY_DOWN)
    {
        switch (ev.keyboard.keycode)
        {
        case ALLEGRO_KEY_UP:
            checked--;
            break;

        case ALLEGRO_KEY_DOWN:
            checked++;
            break;
        case ALLEGRO_KEY_ESCAPE:
            quit = true;
            break;
        case ALLEGRO_KEY_ENTER:
            active = true;
            break;

        }
    }
    if (checked < 0) //JAK NAM WYJEDZIE PONIZEJ ZERA TO USTAWIAMY NA 3 (ZAPETLA SIE MENU, JAKBYS CHCIAL ZABLOKOWAC TO DAJ NA 0)
    {
        checked = 3;
    }
    if (checked > 3)
    {
        checked = 0;
    }
    else if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
    {
        break;
    }

    **if (redraw && al_is_event_queue_empty(event_queue)) // JEZELI NIE WYKRYWA ZADNEGO RUCHU TO
    {
        redraw = false; // PRZERYSOWANIE WYNOSI 0
        al_clear_to_color(al_map_rgb(0, 0, 0));
        for (int i = 0; i < 4; i++)
        {
            int color;
            if (i == checked)
            {
                color = 255;
            }
            else
            {
                color = 11;
            }
            al_draw_bitmap(mmenu, 0, 0, NULL);
            al_draw_text(font, al_map_rgb(123, color, 45), 50, i * 60, NULL, menu[i].c_str()); // I PISZEMY TEKST
        }
    }
    /*else if () // JEDNAK JAK ZOSTANIE WYKRYTY RUCH TO
    {
        redraw = true; // NASTĘPUJE PRZERYSOWANIE BITMAPY ZE ZMIENIONA OPCJA MENU
    }*/**

    al_flip_display();
}


al_destroy_display(display);
al_destroy_timer(timer);
al_destroy_bitmap(mmenu);
al_destroy_event_queue(event_queue);

return 0;

}

0 个答案:

没有答案