Exemplo n.º 1
0
void Game::menu()
{
    VideoMode desktop = VideoMode::getDesktopMode();
    Vector2u windowSize = window.getSize();
    window.setPosition(Vector2i(desktop.width/2 - windowSize.x/2, 10));

    Text title;
    title.setFont(font);
    title.setString("SNAKE");
    title.setCharacterSize(200);
    title.setPosition(WIDTH/2 - title.getGlobalBounds().width/2, 20);
    title.setColor(Color::Green);
    title.setStyle(Text::Bold);

    const int optionsAmount = 2;
    Text options[optionsAmount];
    string str[optionsAmount] = {"Play", "Exit"};

    int currentOption = 0;

    for (int i = 0; i < optionsAmount; i++)
    {
        options[i].setFont(font);
        options[i].setString(str[i]);
        options[i].setCharacterSize(72);
        options[i].setPosition(WIDTH/2 - options[i].getGlobalBounds().width/2, 350 + i*100);
    }

    while (state == MENU)
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                state = END;
            if (event.type == Event::KeyPressed)
            {
                if (event.key.code == Keyboard::Escape)
                    state = END;
                if (event.key.code == Keyboard::Up)
                {
                    if (currentOption > 0){
                        currentOption--;
                    }
                }
                if (event.key.code == Keyboard::Down)
                {
                    if (currentOption < optionsAmount - 1){
                        currentOption++;
                    }
                }
                if (event.key.code == Keyboard::Return)
                {
                    switch (currentOption)
                    {
                        case 0: state = GAME; break;
                        case 1: state = END; break;
                    }
                }
            }
        }



        window.clear();

        window.draw(title);
        for (int i = 0; i < optionsAmount; i++)
        {
            if (i == currentOption){
                options[i].setColor(Color::Cyan);
            }
            else {
                options[i].setColor(Color::White);
            }
            window.draw(options[i]);
        }
        window.display();
    }
}