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

11

28.06.2011, 21:56

zeig doch mal die beiden Funktionsdefinitionen
Metal ist keine Musik sondern eine Religion.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

12

28.06.2011, 22:00

Ja okay also:

// Ist Asteroid mit Player kollidiert?
if (RectPlayer.y < RectAsteroid.y + RectAsteroid.h &&
RectPlayer.y + RectPlayer.h > RectAsteroid.y &&

RectPlayer.x < RectAsteroid.x + RectAsteroid.w &&

RectPlayer.x + RectPlayer.w > RectAsteroid.x)

{

// Ja, also gab es eine Kollision. Somit Schuss und
// Asteroid deaktivierenItAsteroid->SetAlive (false);
m_pLives->Lives--; <------ Hier.
m_pPlayer->Reset(376.0f, 520.0f);

}
m_pLives->Check ();
// Asteroid lschen, falls deaktiviertif (ItAsteroid->IsAlive () )
ItAsteroid++;
else
ItAsteroid = m_AsteroidList.erase (ItAsteroid);
}
} // CheckCollision

13

28.06.2011, 22:03

sorry^^ Ich hätte mich genauer ausdrücken müssen :D Zeig bitte mal die beiden Init Funktionen mit Funktionsheader
Metal ist keine Musik sondern eine Religion.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

14

28.06.2011, 22:06

Setz mal Breakpunkte auf alles Stellen, die Lives veraendern. Das ist uebrigens auch ein guter Grund, eine SetLives Methode zu benutzen, dann waere das ein einziger Breakpoint.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

15

28.06.2011, 22:09

Okay ... Also erstmal sorry, ich bin noch sehr neu unf weiß jetzt leider gar nicht, was ein Breakpoint ist. und hier die Live Init:

Hier die komplette .hpp

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
#ifndef
LIVES_HPP
#define
LIVES_HPP
#include
"Sprite.hpp"class CLives 
{public: 
void Init (CSprite *pSpriteLives, float fXPos, float fYPos, int Lives);void Check (); 
void Render ();bool IsAlive () {return m_bIsAlive;} 
void SetAlive (bool bIsAlive) {m_bIsAlive = bIsAlive;}void LoseLive () {Lives--;} 
int Lives; // Leben des Spielersprivate: 
CSprite *m_pSpriteLives; // Zeiger auf Asteroiden-Sprite
float m_fXPos; // X-Position der Lebensanzeige
float m_fYPos; // Y-Position der Lebensanzeige
bool m_bIsAlive; // "Lebt" der Asteroid noch?
float m_fAnimPhase; // Aktuelle Animationsphase
};
#endif



und hier die Init:

// Init
//
// Aufgabe: Leben initialisieren
//void CLives::Init (CSprite *pSpriteLives, float fXPos, float fYPos, int Lives) 
{
// Leben auf 3 setzen
Lives = 3;
// Zeiger auf Sprite kopieren und Koordinaten setzen
m_pSpriteLives = pSpriteLives;
m_fXPos = fXPos;
m_fYPos = fYPos;


// Lives aktivierenm_bIsAlive = true; 
// Animationsphase 
m_fAnimPhase = 1.0f;
} // Init

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »drakon« (28.06.2011, 22:12)


Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

16

28.06.2011, 22:10

und hier die Init:

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
// Init 
// 
// Aufgabe: Leben initialisieren 
// 
void CLives::Init (CSprite *pSpriteLives, float fXPos, float fYPos, int Lives) 
{ 
// Leben auf 3 setzen 
Lives = 3; 

// Zeiger auf Sprite kopieren und Koordinaten setzen 
m_pSpriteLives = pSpriteLives; 
m_fXPos = fXPos; 
m_fYPos = fYPos; 



// Lives aktivieren 
m_bIsAlive = true; 

// Animationsphase 
m_fAnimPhase = 1.0f; 

} // Init

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »drakon« (28.06.2011, 22:13)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

17

28.06.2011, 22:12

Benutz doch die Code Tags und kopier direkt aus dem Code Editor. Dann gehen auch die Einrückungen nicht verloren und man kann das ganze besser lesen.

18

28.06.2011, 22:12

Die int Lives im Funktionsheader brauchst du gar nicht da du die Variable ja eh auf 3 setzt^^
Metal ist keine Musik sondern eine Religion.

Lares

1x Contest-Sieger

  • Private Nachricht senden

19

28.06.2011, 22:15

Kann es sein, dass du die ganze Zeit nur abfragst,ob m_bIsAlive=false ist?
Darauf hat die Variable Lives momentan nämlich keinen Einfluss( du verringerst sie zwar, aber es scheint nichts zu passieren, wenn die Lives=0 werden. Du müsstest in dem Fall sagen, dass dan m_bIsAlive = false wird. Oder du nimmst die Bool-Variable ganz raus.)

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

20

28.06.2011, 22:15

Okay, danke für die zwei Tipps... Aber liegt es jetzt daran?

Werbeanzeige