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

21

15.09.2011, 18:20

Jo muß mit while schleife.
Code bei mir sieht eigentlich auch so aus wie bei dir.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (GameRunning)
    {
        // Input
        while (WindowHandle->GetEvent(*EventHandle))
        {
            // Window closed
            if (EventHandle->Type == sf::Event::Closed)
            {
                WindowHandle->Close();
            }
            // Escape key pressed
            if ((EventHandle->Type == sf::Event::KeyPressed) && (EventHandle->Key.Code == sf::Key::Escape))
            {
                GameRunning = false;
            }

ich habe es nur nicht in einer extra Funktion ist bei mir in der Game Loop.
und ich habe keine verzögunrung läuft bestens bei mir.

wenn es ums verrecken nicht geht dann mach es so wie TGGC sagt.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Sc4v

Alter Hase

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

22

15.09.2011, 18:21

machs genau wie TGGC gesagt hat.

So könnte es vllt klappen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    bool lShiftPressed = false;
    
    //...//
    

//in main loop
    if(sf::Keyboard::IsKeyPressed(sf::Keyboard::LShift))
    {
        
        if(!lShiftPressed)
        {
            //Menü bewegen
        }

        //true setzen
        lShiftPressed = true;
    
    }
    else 
        lShiftPressed = false;


lg

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

23

15.09.2011, 18:36

sf::Keyboard gibt es bei mir nicht

EDIT:
Ich habe es mal mit Realtime Input versucht aber leider kriege ich das nicht gebacken^^

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    const sf::Input &Input = App.GetInput ();
    bool DownKeyDown = Input.IsKeyDown(sf::Key::Down);
    bool DownKeyPressed = false;
    bool DownKeyReleased = false;

    if (DownKeyDown == true)
    {
        DownKeyPressed = true;
    }
    else
    {
        DownKeyReleased = true;
    }

    if (DownKeyPressed == true && DownKeyReleased == true)
    {
        Auswahl++;
        DownKeyPressed = false;
        DownKeyReleased = false;
    }

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Raidenkk« (15.09.2011, 19:03)


Darkrel

Treue Seele

Beiträge: 143

Wohnort: Zürich

Beruf: Student ETH Zürich

  • Private Nachricht senden

24

16.09.2011, 02:05

Wie sollen denn sowohl DownKeyReleased als auch DownKeyPressed true sein? Du initialisierst beide mit 'false' und setzt dann nur einen von beiden (if else) auf true. So wird der unterste if - block nie ausgeführt.
:cursing:

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

25

16.09.2011, 07:42

Fang doch erstmal an zu denken, bevor du programmierst! Du musst genau den Moment abpassen, wo die Taste zum ersten Mal gedrueckt wurde (wie schon von Sc4v demonstriert). Du hingegen hast irgendwas wesentlich komplizierteres zusammengeschrieben, indem sich ueberhaupt kein logischer Sinn erkennen laesst. Darkrel hat ja den Beweis gefuehrt, das dein Code nichts tut. Und wenn du das mit dem Denken nicht hinbekommst, denn koenntest du wenigstens mal den Debugger benutzen und nachvollziehen, warum nichts passiert.

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

26

16.09.2011, 09:24

Zu TGGC:
TGGC auch wenn du an manchen stellen sehr behilflich bist verbitte ich mir diesen Ton.
Du kannst doch nicht einfach jeden Diskriminieren! vor allem niemanden den du persönlich nich kennst -.-! .
Ich bin ein Anfänger und das solltest du dir mal zu herzen nehmen!.

Ich wiederhole nochmal das es Keyboard nicht gibt ?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool lShiftPressed = false;
    
    //...//
    

//in main loop
    if(sf::Keyboard::IsKeyPressed(sf::Keyboard::LShift))
    {
        
        if(!lShiftPressed)
        {
            //Menü bewegen
        }

        //true setzen
        lShiftPressed = true;
    
    }
    else 
        lShiftPressed = false;

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Raidenkk« (16.09.2011, 10:02)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

27

16.09.2011, 10:28

Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

28

16.09.2011, 11:14

wenn ich #include <Keyboard.hpp> eingebe steht da das es diese include nicht gibt

Darkrel

Treue Seele

Beiträge: 143

Wohnort: Zürich

Beruf: Student ETH Zürich

  • Private Nachricht senden

29

16.09.2011, 11:37

Hm.... Da SFML Quelloffen ist, wäre der nächste Schritt nachzuschauen, was in der Keyboard.hpp eigentlich drin ist ;) Dann siehst du direkt ob die Klasse jetzt Keyboard heisst und ob sie wirklich existiert. Nutze die Möglichkeiten die du hast.
TGGC's Ton war ein wenig barsch, zugegeben. Aber einige der Fragen, die du stellst, kann man auch sehr gut als Anfänger beantworten. Wenn du die Quelle hast, dann nutze diese Quelle auch. Die SFML ist sehr, sehr gut dokumentiert. Zum Abfragen von Input gibt es sogar ein Tutorial - ob du dabei SFML 2.0 oder 1.6 verwendest ist Apfel wie Birne. Die meisten 1.6er Tutorials funktionieren auch sehr gut mit 2.0. Wenn nicht, dann wurde meistens ein Funktions- und/oder Klasssenname verändert. Aber da du die Quellen hast und ich dich nicht für doof halte, kannst du dir die neuen Klassen recht gut zusammensuchen.

In 1.6 heisst die gesuchte klasse Input in 2.0 heisst sie Keyboard.
Wenn du SFML/Graphics.hpp oder SFML/Window.hpp eingebunden hast, dann müsste auch der Header von Keyboard eingebunden sein. Ansonsten verlinkst du falsch oder bindest den falschen Header ein / verwendest falsche Namen!
:cursing:

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

30

16.09.2011, 11:40

Also ich hätte jetzt ...

einfach mal die *.hpp im File System gesucht und dann eingebunden.

Bin nicht der SFML Spezi, aber sollte nicht folgendes schon ausreichen?

#include <SFML/Window.hpp>

oder

#include <SFML/Window/Keyboard.hpp>

Werbeanzeige