majkkel Temat założony przez niniejszego użytkownika |
C++ i SFML - problem z obsługą zdarzeń » 2015-05-24 17:03:16 Witam napisałem grę kółko i krzyżyk w c++ ale działała on tylko w okienku konsoli. Wy googlałem sobie informacje o bibliotece graficznej i wybrałem SFML. Gdy gracz kliknie na dane pole w grze to chcę wyświetlić stosowny obrazek. Kłania się tutaj obsługa zdarzeń i zdarzenie onClick. Gdy szukałem informacji o tym to w 100% przypadków było tak: "Musisz zrobić zdarzenie onClick dla tego obiektu". Problem polega na tym że wiem co zrobić, ale nie wiem jak to zrobić. Nikt nie pokazuje stosownych przykładów, a jak już pokazuje to są to duże i trudne dla mnie projekty. Wrzucam tutaj kod swojej aplikacji(narazie tylko dla jednego obiektu pole, gdy opanuje jak zrobić to zdarzenie dla jednego obiektu, to zrozumiem też dla pozostałych):
//////////////////////////// main.cpp:
#include <SFML/Graphics.hpp> #include <string> #include "pole.h";
using namespace std;
int main() { sf::RenderWindow OknoAplikacji(sf::VideoMode(640, 380, 32), "Kolko i Krzyzyk");
Pole p1("pole1","img/nic.bmp",24,24,105,105);
sf::Texture tekstura1; tekstura1.loadFromFile("img/nic.bmp");
sf::Sprite sprajt1; sprajt1.setTexture(tekstura1);
while (OknoAplikacji.isOpen()) { sf::Event zdarzenie; while (OknoAplikacji.pollEvent(zdarzenie)) { if (zdarzenie.type == sf::Event::Closed) { OknoAplikacji.close(); } }
sprajt1.setPosition(p1.left, p1.top);
OknoAplikacji.clear(sf::Color(255, 255, 255)); OknoAplikacji.draw(sprajt1); OknoAplikacji.display(); } return 0; }
/////////////////////////////// pole.h:
#include <string>
using namespace std;
class Pole { public: string name; string image; float left; float top; float width; float height;
Pole(string = "pole0", string = "img/nic.bmp", float = 24, float = 24, float = 105, float = 105); };
////////////////////////////////// pole.cpp:
#include <SFML/Graphics.hpp> #include <string> #include "pole.h";
using namespace std;
Pole::Pole(string n, string i, float l, float t, float w, float h) { name = n; image = i; left = l; top = t; width = w; height = h; }
Próbowałem zrobić metodę dla obiektu Pole, która tworzy teksurę i rysuje sprita, ale nic z tego nie wyszło, zostałem zaatakowany przez armię errorów. Póki co priorytetem jest dla mnie zrozumienie w jaki sposób tworzy się zdarzenia. Jeżeli czytasz ten post, to prosiłbym o zrobienie przykładowego zjawiska dla onClick, które podmieni obraz img/nic.bmp na img/kolko.bmp na podstawie kodu, który wysłałem. Z góry dziękuje i przepraszam za problem. |
majkkel Temat założony przez niniejszego użytkownika |
» 2015-05-24 23:20:25 Dziękuje za pomoc już opanowałem ten kod, który wysłałeś i zrozumiałem go w 100%. Jednak wcześniej nie miałem pojęcia o takiej metodzie, która porównuje współrzędne. |