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

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

21

06.05.2013, 18:37

Das heißt nicht, dass ich gar nicht lerne, ich hab viele Tutorials geguckt und auch oft gegoogelt. Soweit auch alles verstanden, nur hab ich hier einen Hänger. Und würde mir jemand einen Code schreiben, würde ich mich schon damit auseinandersetzten. So blöd bin ich nicht, ihn einfach nur zu übernehmen. Nur, finde ich, könntet ihr auch mal einen kurzen Codeabschnitt schreiben, um zu verdeutlichen, was ihr meint. Ich sitze hier schon seit drei Stunden an so einer wahrscheinlich einfachen Sache, nur weil niemand schnell sagen kann, wie ich Clock jetzt verwenden muss.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

22

06.05.2013, 18:40

Nunja, das du nicht weißt, wieso du nicht nicht-statische Methoden einer Klasse ohne eine Instanz dieser aufrufen kannst, zeugt eig. von großen Lücken in den Grundlagen. Daher ist der Rat, dass du dir ein Buch kaufst und damit die Grundlagen besser verstehen lernst nur einfach nett gemeint. Denn bei solchen Lücken wirst du ganz schnell auf neue Probleme stoßen.
Aber zum Verständnis:
sf::Clock clock; <-- Instanz von Clock
Mit dieser kann man nicht-statische Methoden von sf::Clock aufrufen. Die Frage ist: wusstest du das und weißt du was eine Instanz ist und was statische und nicht-statische Methoden sind?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

23

06.05.2013, 18:44


sf::Clock clock; <-- Instanz von Clock

Das hab ich schon im Programm. Mir ist auch klar, dass das eine Instanz ist. Aber wie bringe ich das in SFML in den Zusammenhang mit der Bewegung? clock.getElapsedTime() geht ja nicht.
clock gehört dann doch zur Klasse sf::Clock, oder nicht?

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

24

06.05.2013, 18:46

Wenn ich mich nicht irre gibt es in der SFML-Dokumentation zur sf::Clock direkt ein Beispiel.
Ich hab am Anfang auch versucht von 0 auf 100 zu kommen und weil mir auch viele Grundlagen gefehlt haben, wurde mir ans Herz gelegt die Grundlagen erstmal zu lernen.

Wenn es kein Buch sein darf, wegen Geld oder anderen Gründen, dann schau dir Youtube-Videos an.
SFML bezüglich solltest du dir einfach die Dokumentation anschauen..

Wenigstens sollte man wissen, was eine Instanz ist. Ich meine es auch nicht böse, aber denk darüber nach nochmal von 0 anzufangen.

Edit:
Nix x.getElapsedTime(). Geht viel einfacher. Wenn du nicht weißt wo du die Werte speichern sollst, dann geb ich dir das Stichwort "sf::Time".
42 / Pi = 13,37

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

25

06.05.2013, 19:05

Wieso funktioniert denn dieser Code nicht?

C-/C++-Quelltext

1
2
3
4
        if (Input.isKeyPressed(sf::Keyboard::W))
        {
            sf::Clock::restart;
            player1.move(0,(sf::Clock::getElapsedTime() const * -5));

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

26

06.05.2013, 19:07

Weil das eben keine Instanz ist...
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

27

06.05.2013, 19:10

Ich hab eine Instanz im Code (sf::Clock Zeit). Wie und wo muss ich sie denn einbauen? Und ist das der einzige Fehler?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

28

06.05.2013, 19:11

Nein, das Ding strotzt vor Fehlern. Lern die Grundlagen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

29

06.05.2013, 19:21

Wieso funktioniert denn dieser Code nicht?

C-/C++-Quelltext

1
2
3
4
        if (Input.isKeyPressed(sf::Keyboard::W))
        {
            sf::Clock::restart;
            player1.move(0,(sf::Clock::getElapsedTime() const * -5));
Abfrage: if(sf::Keyboard::IsKeyPressed(taste))
sf::Clock::restart ist nunmal keine Instanz. Selbst wenn würde () nach restart fehlen. Was soll eigentlich das const bewirken?
Klammer bräuchtest du auch nicht, da hier nichts subtrahiert oder dividiert wird.
42 / Pi = 13,37

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

30

06.05.2013, 19:30

Diesmal etwas mehr vom Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    sf::Clock Uhr;
    sf::Time Zeit = Uhr.getElapsedTime();

    while (running == true)
    {
        while (Fenster.pollEvent(Event))
        {
            if((Event.type == sf::Event::KeyPressed) && (Event.key.code == sf::Keyboard::Escape))
            {
                Fenster.close();
                running = false;
            }
        }
        if (Input.isKeyPressed(sf::Keyboard::W))
        {
            player1.move(0,(-5 * Zeit.asMilliseconds()));
            Uhr.restart();}


Kommt das dem Ganzen jetzt näher?
Das Event jetzt ignorieren.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »SwatzZ« (06.05.2013, 19:45)


Werbeanzeige