C++ Ve SFML Kütüphanesi İle İlgili Birkaç Sorun
-
Hocalar merhabalar, geçen sene başladığım c++ öğrenim işini artık biraz daha ilerlettim devc++ tan visual c++ a geçtim diyebilirim ancak belli başlı problemlerim var. Şimdi eskiden basitçe ekrandan veya dosyadan veri çekme işleri ile uğraşıyordum şimdi olayı bir tık daha ileri götürüp elimdeki herhangi bir gamepad ten komut almak istiyorum ancak bilgim yetersiz kaldı bu konuda. Yaptıklarımı yazayım ilk önce :
SFML diye bir kütüphane buldum visual studio ya ekledim herşey çok güzel diyebilirim denemesini ıvırını zıvırını yaptım çalışıyor gamepad tanınıyor ama birkaç sıkıntı var.
yazdığım örnek kod şöyle aslında kütüphanenin örnek koduna birkaç ekleme yaptım diyebilirim.
#include <SFML/Graphics.hpp> #include <SFML/Window.hpp> #include <iostream> using namespace std; int main() { cout << "basladi"; sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); bool connected = sf::Joystick::isConnected(0); if (connected){ cout << "connected"; } cout <<endl <<sf::Joystick::getButtonCount(0) << endl; cout << sf::Joystick::hasAxis(0, sf::Joystick::R); while (window.isOpen()) { if (sf::Joystick::isButtonPressed(0, 0)){ shape.setFillColor(sf::Color::Magenta); } if (sf::Joystick::isButtonPressed(0, 1)){ shape.setFillColor(sf::Color::Blue); } if (sf::Joystick::isButtonPressed(0, 2)){ shape.setFillColor(sf::Color::Red); } if (sf::Joystick::isButtonPressed(0, 3)){ shape.setFillColor(sf::Color::Transparent); } if (sf::Joystick::isButtonPressed(0, 4)){ shape.setFillColor(sf::Color::Cyan); } if (sf::Joystick::isButtonPressed(0, 5)){ shape.setFillColor(sf::Color::Yellow); } if (sf::Joystick::isButtonPressed(0, 6)){ shape.setFillColor(sf::Color::White); } if (sf::Joystick::isButtonPressed(0, 7)){ shape.setFillColor(sf::Color::Black); } if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) { cout << "left click"; } sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; }
Bu kod hali hazırda çalışıyor ancak sıkıntı şu elimdeki gamepad te 17 tane tuş olmasına rağmen bu kütüpane 12 tanesini algılıyor. Ayrıca gamepad'ten komut alma işlemini form application ile nasıl yapacağım ? Consol'da o küçük pencere açık kalıyor ama formdada öyle mi olacak ?
Ve bana gamepad kontrolü için smfl den başka tavsiye edebileceğiniz kütüphane var mıdır ?