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

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

1

11.09.2011, 20:54

Tilemap + Mouseposition

Hey Leute,
nach langem habe ich mich ma wieder ans programmieren gemacht.
Das Projekt hat sich für mich eigentlich ziemlich leicht angehört.
Eine kleine Tilemap bei der man auf Felderklicken kann und diese verändern kann.

Eigentlich kein Problem.

Jedoch bekomme ich einfach keine sinnvolle idee wie ich überprüfensoll in welchem Feld die Maus ist.
Meine momentan idee sieht wie folgt aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    if(Event.Type == sf::Event::MouseMoved)
    {
        int mx = Event.MouseMove.X;
        int my = Event.MouseMove.Y;
        const unsigned int t_breite = 32;
        const unsigned int t_hoehe = 32;


        for(int m_hoehe = 0;m_hoehe*t_hoehe < mx;m_hoehe++)
        {
            for(int m_breite = 0;m_breite*t_breite < my;m_breite++)
            {
              tile[m_hoehe][m_breite] = 2; 
            }

        }
    }


wäre froh über hilfe

idontknow

unregistriert

2

11.09.2011, 21:06

freihand:

C-/C++-Quelltext

1
2
int feld_x = (maus_x - (maus_x % tile_breite)) / tile_breite;
int feld_y = (maus_y - (maus_y % tile_höhe)) / tile_höhe;


Sollte funktionieren und auch nicht so schwer zu verstehen sein (sonst frag). Ein cast in int sollte notwenigd sein um ne Compiler-Warnung zu unterdrücken.
Was du da fabrizieren wolltest kann ich überhaupt nicht nachvollziehen :P. Der Code oben gibt dir auf jedenfall die Position des entsprechenden Tiles :).

3

11.09.2011, 21:07

Mausposition durch Tilegrösse teilen und abrunden z.B.
Ausserdem sollte es reichen, das nicht bei jeder Mausbewegung sondern bei jedem Klick zu prüfen

//EDIT: mal wieder zu spät

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

4

11.09.2011, 21:12

Ich hätte da ma ne frage, was ist nochma der % Operator?


edit: nein bei jedem klick reicht leider nicht :P ich hab da so was bestimmtes vor.
Hab die methode von idontknow mal probiert sie gibt genau die gleichen ergebnisse aus :P

vom code her übersichtlicher :D

das problem liegt schlichtweg daran das ich die teil noch nicht aus einer datei lade sondern zum experimentieren sie in der funktion draw lade,
was heißt sie wird jedes mal bevor sie gezeichnet wird neu geladen.

kann nicht funktioniern ^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »moritz31« (11.09.2011, 21:18)


5

11.09.2011, 21:24

Es ist aber ziemlich unsinnig das in jedem frame zu Laden. % ist modulo und gibt den Rest einer Division aus.z.B: 5%3 == 2 oder 250 % 100 == 50. Er erreicht durch abziehen des Restes das, was ich durch runden erreicht habe

idontknow

unregistriert

6

11.09.2011, 21:44

Der Code oben gibt dir auf jedenfall das Tile wieder in dem die Maus ist wenn das nicht funktioniert, dann liegt der Fehler vllt woanderst. Hab noch net so ganz verstanden was du überhaupt machen will und dein Code auch nicht :(

Werbeanzeige