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

19.05.2011, 09:07

Problem mit einer Klasse

Hi Leute,
habe mal wieder ein Problem mit ner Klassse.
Nachdem ich nun alles mit Referzen übergebe,
passiert es, dasss plötzlich mein Gegner der mit dieser Klasse, bewegt werden soll
einfach verschwindet, wenn ich es außerhalb der Klasse mache ,passiert das nicht.
Nach längeren herumprobieren bin ich nun ratlos.

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
oid KI :: checkPosition(sf::RenderWindow &Window,sf::Sprite &Player,sf::Sprite &Ki)
{
    sf::Clock Timer;

    if(Timer.GetElapsedTime() >= 1)
    {

        if(Player.GetPosition().x >= Ki.GetPosition().x)
        {
            
            x = 100;
            
            
        }

        if(Player.GetPosition().x <= Ki.GetPosition().x)
        {
            
            x = -100;
            
        }

        if(Player.GetPosition().y >= Ki.GetPosition().y)
        {
            
            
            y = 100;
            
        }

        if(Player.GetPosition().y <= Ki.GetPosition().y)
        {
            
            y = -100;
            
        }
        Timer.Reset();
    }
    
};


void KI :: move(sf::RenderWindow &Window,sf::Sprite &Sprite)
{
    Sprite.Move(x * Window.GetFrameTime() ,y * Window.GetFrameTime());
    
};


das sind ma meine Funktionen in der Klasse.

Wäre froh über hilfe
Gruß
Moritz31

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

19.05.2011, 12:00

Das Problem mit dem Timer hattest du jetzt bestimmt schon fünf mal. Du misst dort die Zeit zwischen die zwischen Zeile 3 und 5 vergangen ist. Da dort nichts passiert ist es sehr unwahrscheinlich, dass du eine Sekunde kommst.
Würdest du dir nicht alles vorkauen lassen, würdest du vielleicht lernen, dass es so nicht funktionieren kann.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

3

19.05.2011, 13:01

der timer funktioniert aber wenn ich die anweisung außerhalb der klasse mach

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

4

19.05.2011, 15:05

Was du da mit dem Timer machst is vollkommener Quatsch. Wenn da irgendwas funktioniert, dass liegt das sicher nicht daran, weil deine Verwendung richtig wäre.
Deshalb empfehle ich: Dokumentaton lesen. Dort steht, dass dir elapsedTime den Zeitabstand in Millisekunden zurückliefert. Es ist theoretisch schon möglich, dass zwischen dem erstellen vom Timer und elapsedTime mehr als eine Millisekunde vergeht. Aber das ist sicher nicht das, was du prüfen willst.
Was genau hast du mit dem Timer also vor?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

19.05.2011, 15:15

Deshalb empfehle ich: Dokumentaton lesen. Dort steht, dass dir elapsedTime den Zeitabstand in Millisekunden zurückliefert.

Nicht in der Version 1.6.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

19.05.2011, 15:18

Ach dass sich das auch immer ändern muss ;). Ist natürlich fraglich, welche Version Moritz verwendet...
Naja was ich mich noch frage: Welche Anweisung funktioniert denn außerhalb der Klasse? Also wie sieht dein Code dann aus?

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

7

19.05.2011, 15:45

mein Code sieht dann eigentlich genaus so aus.
Mit dem timer will ich erreichen, dass der Gegner nicht alle "Nanosekunde" dem spieler nachläuft,
sondern etwas verzögert reagiert

8

19.05.2011, 17:15

Dann sollte dein Timer aber ein Member deiner Klasse sein und nicht jedes mal neu erstellt werden, denn da vergeht so gut wie keine Zeit und schon gar keine ganze Sekunde, wie bereits mehrfach gesagt wurde.

lg chaia

Werbeanzeige