Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.1] Klikanie w tekst

Ostatnio zmodyfikowano 2014-11-27 19:09
Autor Wiadomość
Snaki
Temat założony przez niniejszego użytkownika
[SFML 2.1] Klikanie w tekst
» 2014-11-27 18:38:00
Witam.
Chcę stworzyć pewną gre, na początku chciałbym stworzyć menu. I tutaj mam mały problem. Gdy klikam "Wyjdź" - program nie zamyka się. Wydaje mi się, że wszystko napisałem poprawnie. Porównywałem inne kody... a to nie działa. Oto kod (to jeszcze mój poligon doświadczalny, kod nieupożądkowany):

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;
using namespace sf;

enum opcje{GRA,MENU,WYJDZ};

int wylosuj()
{
    return( rand() % 10 ) + 0;
}
int main()
{
    srand( time( 0 ) );
    opcje opcje;
    opcje = MENU;
    RenderWindow okno;
    okno.create(VideoMode(800,600), "Milionerzy");
    int ile = 2;
    Font font;
    if(!font.loadFromFile("font.otf"))
        cout << "Brak czcionki!" << endl;

    Texture tlo_menu;
    if(!tlo_menu.loadFromFile("tlo_menu.jpg"))
        cout << "Brak tla do menu!" << endl;
    Sprite tlo_menu1;
    tlo_menu1.setTexture(tlo_menu);
    Text tytul;
    Text wybor[ile];
    tytul.setFont(font);
    tytul.setString("Milionerzy 0.0.1 by Kacper");
    tytul.setColor(Color::Red);
    tytul.setStyle(Text::Bold);
    tytul.setCharacterSize(65);
    tytul.setPosition(800/2-tytul.getGlobalBounds().width/2,20);
    string nazwy[] = {"Graj!","Wyjdz"};
    for(int i = 0; i < ile; i++)
    {
        wybor[i].setFont(font);
        wybor[i].setStyle(Text::Bold);
        wybor[i].setCharacterSize(50);
        wybor[i].setString(nazwy[i]);
        wybor[i].setPosition(800/2-wybor[i].getGlobalBounds().width/2,250+i*90);
    }
    /*
    int wylosowana_liczba = wylosuj();
    string pyt[50], odpowiedzi[50], a, b, c, d, poprawna_odp[50];
    ifstream plik;
    plik.open("pytania.txt");
    if(!plik.good())
        cout << "Nie udalo sie :C" << endl;

    while(!plik.eof())
    {
     for(int n = 0; n < 11; n++)
     getline(plik,pyt[n]);

    }
    plik.close();
    plik.open("odpowiedzi.txt");
    if(!plik.good())
        cout << "Nie udalo sie :(";

    if(!plik.eof())
    {
        for(int n = 0; n < 3; n++)
            getline(plik,odpowiedzi[n]);
    }
    plik.close();
    plik.open("poprawne_odp.zablokowane");
    if(!plik.good())
        cout << "Nie udalo sie :(";

    if(!plik.eof())
    {
        for(int n = 0; n < 3; n++)
            getline(plik,poprawna_odp[n]);
    }
    cout << pyt[wylosowana_liczba] << endl;
    cout << odpowiedzi[wylosowana_liczba] << endl;
    cout << poprawna_odp[wylosowana_liczba] << endl; */
    while(okno.isOpen())
    {
        while(opcje == MENU)
        {
            Vector2f mysz(Mouse::getPosition()); //pobieranie pozycji myszki
            Event event;
            while(okno.pollEvent(event))
            {
              if(event.type==Event::Closed)
              {
                // ew. zapis
                okno.close();
               } //if
               if(wybor[1].getGlobalBounds().contains(mysz) &&
          event.type == Event::MouseButtonReleased && event.key.code == Mouse::Left)
               {
                   okno.close();
               }
            } //while

            okno.clear();
            okno.draw(tlo_menu1);
            okno.draw(tytul);
            for(int i = 0; i < ile; i++)
                okno.draw(wybor[i]);

            okno.display();



        } // while MENU

    }

    return 0;
}
P-121558
maly
» 2014-11-27 18:49:07
Vector2f mysz = okno.mapPixelToCoords( Mouse::getPosition( okno ) );
P-121560
Snaki
Temat założony przez niniejszego użytkownika
Działa :D
» 2014-11-27 19:04:54
Dzięki, działa! Tylko powiedz mi, dlaczego tamten sposób nie działał?
P-121561
NopeDotAvi
» 2014-11-27 19:07:14
Bierzesz pozycję myszki względem ekranu. Jeżeli chcesz względem aplikacji musisz dać:
sf::Mouse::getPosition( okno );
.
Kolejnym razem wstaw kod w znaczniki [ cpp ] [/ cpp ] to lepiej będzie się czytało.
P-121562
maly
» 2014-11-27 19:09:06
Pobierałeś pozycję myszy na ekranie zamiast na oknie.
P-121563
« 1 »
  Strona 1 z 1