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

21.06.2011, 11:22

[SFML] Tilemap blinkt

Hallo liebe Com,
ich wollte versuchen eine Tilemap zu machen, erfolgreich, jeoch beim anzeigen der Tilemap blinkt es. Ich hatte es schon mit SetFrameTime(60) versucht und es ging nicht :( .

Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <SFML/Graphics.hpp>

int main()
{
sf::RenderWindow Tilemap(sf::VideoMode(800, 600, 32), "Tilemap");
sf::Image Stein;

if(!Stein.LoadFromFile("Stein.jpg"))
{
    return EXIT_FAILURE;
}
sf::Sprite SStein(Stein);
sf::Event Event;
const unsigned int map_hoehe = 2;
const unsigned int map_breite = 9;
const unsigned int tile_hoehe = 30;
const unsigned int tile_breite = 30;
char lvl1[map_hoehe][map_breite]=
{
    '0','1','0','0','0','0','0','0','0',
    '1','1','1','1','1','1','1','1','1'
};
Tilemap.Clear();
for(unsigned int i = 0; i < map_hoehe; i++)
{
    for(unsigned int j = 0; j < map_breite; j++)
    {
        switch(lvl1[i][j])
        {
            case '0':
            break;

            case '1':
            SStein.SetPosition(j*tile_breite, i*tile_hoehe);
            Tilemap.Draw(SStein);
            break;

            default:
            break;
        }
    }
}

while(Tilemap.IsOpened())
{
    Tilemap.Display();
    while(Tilemap.GetEvent(Event))
    {
        if(Event.Type == sf::Event::Closed)
        {
            Tilemap.Close();
        }
        if((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
        {
            Tilemap.Close();
        }
    }
    Tilemap.Display();

}
}

Brauche Hilfe

Mfg
C++-Coder

2

21.06.2011, 11:52

Also was mir jetzt beim überfliegenvom Code aufgefallen ist du hast 2 mal Tilemap.Display drin ( Zeile 46 udn 58).

Sonst ist mir nix weiter aufgefallen auf den ersten blick.

Edit: Jetzt habe ich es glaub gesehen du hast nur ein Sprite solltest aber für Jedes Feld deiner Tile Map ein eigenes Sprite her nehmen.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

3

21.06.2011, 11:54

danke, aber trotzdem geht es nicht
:(
ich bekomm nur 2 warnungen

C-/C++-Quelltext

1
..\main.cpp|48|warning: missing braces around initializer for 'char [9]'|

4

21.06.2011, 11:56

Noch mal mein Edit ein drüber schaun !
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

5

21.06.2011, 11:57

ich check dein edit nicht ganz, kannst du mir des als kleines code gebeN ?(
pls

6

21.06.2011, 11:58

Ich kenne die SFML nicht, aber wenn Display() zwischen den Bildpuffern (zwei Oberflächen,die abwechselnd gerendert und hineingezeichnet werden) schaltet, dann werden durch dein einmaliges Zeichnen immer abwechselnd der leere und der volle angezeigt. Mach also mal das Display() am Anfang der Schleife weg und zeichne deine Map in der Schleife.

MfG

7

21.06.2011, 12:00

geil :thumbsup:
danke es geht

8

21.06.2011, 12:11

Jetzt habe ich mal noch ne Frage.

Wird bei dir die Komplette Map angezeigt also alle 2*9 Tiles ?
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

9

21.06.2011, 12:14

also nurwo eine 1 stehtkommt eine tile hin, weil bei 0 steht ja break

C-/C++-Quelltext

1
case '0':             break;              case '1':             SStein.SetPosition(j*tile_breite, i*tile_hoehe);             Tilemap.Draw(SStein);             break;

10

21.06.2011, 12:20

OK Wiel bei meiner Tile Map Verwende ich für jedes Tile ein eigenes Sprite. Aber das scheint dann unnötig wenn es bei dir auch mit einem geht.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Werbeanzeige

Ähnliche Themen