Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.06.2015, 09:01

mausklick koordinaten an auflösung anpassen

Hallo,
ich habe das problem das ich ein spiel mit der auflösung 600x400 erstellt habe.
Im Hauptmenu frage ich dann ab ob der mauszeiger über den start button ist.
wenn er angeklickt wird startet das spiel halt. Aber wenn ich das fenster maximiere
oder generell verschiedene auslösungen anbieten würde, stimmen die koordinaten nicht mehr.
Mein gedankengang war das ich halt für jede auslösung ein alternativen code mit den richtigen koordinaten schreibe.
Das wäre jedoch ne menge mehr code und kommt mir eher als schlechte lösung vor.
Gibt es irrgendeinen besseren weg das die koordinaten bei jeder auflösung passen?
Ich hoffe ihr konntet mir folgen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int Menu::Open(sf::RenderWindow *Win)
{
    MenuOpen = true;
    while(MenuOpen)
    {
            if(sf::Mouse::getPosition().x > 888 && sf::Mouse::getPosition().x < 1050)
            {
                
                if(sf::Mouse::getPosition().y > 445 && sf::Mouse::getPosition().y < 475)
                {
                    pMenuText1->setColor(sf::Color::Red);
                    if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
                        return 1;
                }
                else
                    pMenuText1->setColor(sf::Color::Blue);
            }
    }
}

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

07.06.2015, 09:06

Im Normalfall wird man solche Koordinaten überhaupt nicht im Code stehen haben, sondern man hat eine Button-Klasse. Der Button hat eine Position und eine Größe und egal wie er skaliert oder wo er platziert wurde, man kann anhand dieser Eigenschaften die Abfrage durchführen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (07.06.2015, 09:12)


3

07.06.2015, 09:09

Danke dir, hätte an sowas nie gedacht.

4

07.06.2015, 09:14

Du nutzt zudem die falsche Funktion!

Zitat


static Vector2i sf::Mouse::getPosition ()
Get the current position of the mouse in desktop coordinates.

This function returns the global position of the mouse cursor on the desktop.

Returns
Current position of the mouse


static Vector2i sf::Mouse::getPosition (sf::windle& relativTo) sollte Abhilfe schaffen.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Koschi« (07.06.2015, 09:30)


Werbeanzeige