Skocz do zawartości

smmsz1

Użytkownicy
  • Zawartość

    12
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O smmsz1

  • Ranga
    2/10
  • Urodziny 04.08.2000

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Poznań
  • Języki programowania
    C++, Matlab
  • Zainteresowania
    Matematyka, fizyka, astronomia, elektronika, programowanie, chemia

Ostatnio na profilu byli

115 wyświetleń profilu
  1. Trochę to problematyczne bo metody pause() i play() są typu void
  2. Witam Piszę małą grę w C++ korzystając z SFML i natknąłem się na pewien problem programistyczny. Mam klasę Button dziedziczącą po klasie sf::RectangleShape. Tworze sobie kilka obiektów tej klasy będących przyciskami w menu gry. Problem pojawią się gdy któryś przycisk ma pełnić więcej niż jedną funkcję tak jak przycisk odpowiedzialny za obsługę muzyki. Po jego kliknięciu na obiekcie klasy sf::Music wywołuje metode pause. Chciałbym żeby wtedy ten sam przycisk był odpowiedzialny za ponowne uruchomienie muzyki metodą play, a potem za ponowne pauzowanie. Czy ktoś ma jakiś pomysł jak to zakodować? Ewentualną opcją jest podmiana przycisków. Przy wszelkich próbach rozwiązania problemu spotykam się z wzajemnym negowaniem obu funkcjonalności. Wklejam kod klasy Button Plik .h: #pragma once #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <SFML/Audio.hpp> #include<iostream> class Button : public sf::RectangleShape { public: Button(float pos_x,float pos_y, float size_x,float size_y,const std::string &nazwa_pliku); void load_texture(const std::string& file_name); void zamykanie(sf::RenderWindow &window,const sf::Event &event); void instrukcja(sf::RenderWindow &window,const sf::Event &event); void pauzowanie(sf::RenderWindow &window,const sf::Event &event,sf::Music &music,int &a,int&b); void startowanie(sf::RenderWindow &window,const sf::Event &event,int &a,int &b); void granie(sf::RenderWindow &window,const sf::Event &event,sf::Music &music,int&a,int&b); private: sf::Texture texture_; }; plik .cpp: #include "include.h" Button::Button(float pos_x,float pos_y, float siz_x,float siz_y,const std::string &nazwa_pliku) { setPosition(pos_x,pos_y); setSize(sf::Vector2f(siz_x,siz_y)); load_texture(nazwa_pliku); } void Button:: load_texture(const std::string& file_name) { if (!texture_.loadFromFile(file_name)) { std::cerr << "Could not load texture" << std::endl; } else { setTexture(&texture_); } } void Button::zamykanie(sf::RenderWindow &window,const sf::Event &event) { if (event.type == sf::Event::MouseButtonPressed) { if(event.mouseButton.button == sf::Mouse::Left) { sf::Vector2i mouse_pos = sf::Mouse::getPosition(window); sf::FloatRect bounds = getGlobalBounds(); if(bounds.left<=mouse_pos.x && bounds.left+bounds.width>=mouse_pos.x) { if(bounds.top<=mouse_pos.y && bounds.top+bounds.height>=mouse_pos.y) { window.close(); } } } } } void Button::startowanie(sf::RenderWindow &window, const sf::Event &event,int &a,int &b) { if (event.type == sf::Event::MouseButtonPressed) { if(event.mouseButton.button == sf::Mouse::Left) { sf::Vector2i mouse_pos = sf::Mouse::getPosition(window); sf::FloatRect bounds = getGlobalBounds(); if(bounds.left<=mouse_pos.x && bounds.left+bounds.width>=mouse_pos.x) { if(bounds.top<=mouse_pos.y && bounds.top+bounds.height>=mouse_pos.y) { a=0; b=0; } } } } } void Button::instrukcja(sf::RenderWindow &window, const sf::Event &event) { Background tlo_instrukcji("tlo_instrukcji.png"); // Button przycisk_start(0,520,200,80,"przycisk_start.png"); if (event.type == sf::Event::MouseButtonPressed) { if(event.mouseButton.button == sf::Mouse::Left) { sf::Vector2i mouse_pos = sf::Mouse::getPosition(window); sf::FloatRect bounds = getGlobalBounds(); if(bounds.left<=mouse_pos.x && bounds.left+bounds.width>=mouse_pos.x) { if(bounds.top<=mouse_pos.y && bounds.top+bounds.height>=mouse_pos.y) { window.draw(tlo_instrukcji); } } } } } void Button::granie(sf::RenderWindow &window, const sf::Event &event, sf::Music &music,int&a,int&b) { if (event.type == sf::Event::MouseButtonPressed) { if(event.mouseButton.button == sf::Mouse::Left) { sf::Vector2i mouse_pos = sf::Mouse::getPosition(window); sf::FloatRect bounds = getGlobalBounds(); if(bounds.left<=mouse_pos.x && bounds.left+bounds.width>=mouse_pos.x) { if(bounds.top<=mouse_pos.y && bounds.top+bounds.height>=mouse_pos.y) { music.play(); } } } } } void Button::pauzowanie(sf::RenderWindow &window, const sf::Event &event, sf::Music &music,int &a,int&b) { if (event.type == sf::Event::MouseButtonPressed) { if(event.mouseButton.button == sf::Mouse::Left) { sf::Vector2i mouse_pos = sf::Mouse::getPosition(window); sf::FloatRect bounds = getGlobalBounds(); if(bounds.left<=mouse_pos.x && bounds.left+bounds.width>=mouse_pos.x) { if(bounds.top<=mouse_pos.y && bounds.top+bounds.height>=mouse_pos.y) { music.pause(); } } } } } Z góry dziękuje za każdą odpowiedź
  3. Zmieniłem komputer, po walce z blue screenem i udało mi się jakoś sprawić, że mam dostęp do opcji port, nadal nie moge jedna wgrać niczego na płytkę.
  4. Aktualizacja Java do Java 8 również nie przyniosła rozwiązania problemu. W międzyczasie zainstalowałem też starszą wersje Arduino IDE, ale to także nie rozwiązało problemu
  5. @szymonw Opisałeś wszystko fantastycznie, sam już też to wszystko próbowałem, instalowałem sterownik z tej strony, robiłem to dwukrotnie z twoją instrukcją, ale niestety to nic nie rozwiązało, zakładka porty nadal nie dostępna.
  6. @szymonw Do wyboru mam sterowniki takie jak w załączniku, zgodny ze sprzętem jest tylko ATmega16U2 Nigdy go nie używałem, przyszedł do mnie wczoraj, kupiłem go na Botland. Próbowałem na komputerze z Windowsem 7, niestety dalej ma problem ze sterownikami, wywaliło bluescreen. Zainstalowałem wersje 1.2.3.0 niestety nic to nie dało. Zagadkowe dla mnie jest dlaczego płytka wykrywana jest jako ATmegaU2 a nie Arudino UNO
  7. @szymonw Urządzenie wykrywane jest jako ATmega16U2 DFU po czym automatycznie instalowany jest sterownik i urządzenie wyświetlane jest jako ATmega16U2, który okreslany jest przez komputer jako najlepszy dla tego urządzenia, kontroler uniwersalnej magistrali szeregowej nie wykrywa płytki.
  8. Jedyny sterownik jaki instaluję to nieustannie ten sam i pokazuję komunikat, że to najlepszy sterownik dla tego urządzenia
  9. @UnlimitedPL Niestety to także nie rozwiązuje problemu
  10. Witam Zgłaszam się z prośbą o rozwiązaniem problemu z zakupioną, nową płytką Arduino Uno R3. Arduino IDE zainstalowane bez problemu, problem się pojawia podczas podłączenia płytki do komputera, nie mogę wejść w opcję Port, ponieważ jest zablokowana. Wchodzę w menadżer urządzeń, płytke wykrywa jako urządzenie nieznane, automatycznie wybiera sterownik ATmega16U2. Nadal nie mam możliwości używania płytki, nadal brak możliwości wejścia w zakładkę Port w IDE. Nie wiem co robić, pomocy.
×
×
  • Utwórz nowe...