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

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

1

11.04.2003, 21:15

Aufruf von bestimmten Typen einer Klasse

Hi,
In meinem Textgame gehts darum mit einer Flotte raumschiffe gegen die des Gegeners zu gewinen(läuft alles im rundenbasierenden Pokemon Stil)
am Anfang werden nun die Raumschiffe gewählt.
Nun will ich das alle einer Listen auserwählten Schiffe in die Flotte kommen.Ich hab einen bool chosen der speichert ob das Raumschiff gewählt wurde.Wie mache ichs aber jetzt Das alle die das Flag haben in das Team kommen.

z.B.

Quellcode

1
2
3
4
5
 int Start()
{
 Flotte = gewählte Schiffe; 
  //hier kommt das Angriffs menü
}


Hmm stelle fest das ich noch fast gar nichts von c++ weis.und da wundre ich mich das ich fas t nichts mit dx hinkrieg.
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

2

12.04.2003, 11:40

Also ich wills jetzt so machen dass ich dem Spieler in der Kalsse 4 neue Raumschifffe erstelle die echenten Schiffe werden dann ind eie reinkopiert aber wie mach ich das?
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

12.04.2003, 12:28

Quellcode

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
struct ShipType
{
    char Name[256]; // Name des Schiffstyps
    int Shield; // Schutzschildpunkte
    int Hull; // Hüllenstärke
    // ...
};

struct Ship
{
    ShipType* Type; // Zeiger auf den Schiffstyp
    int Shield; // Aktuelle Schildstärke
    int Hull; // Aktuelle Hüllenstärke
};

struct Player
{
    Ship Fleet[4]; // Enthält die vier Schiffe des Spielers
};

const int NumShipTypes = 4;
ShipType ShipTypeList[NumShipTypes];

strcpy(ShipTypeList[0].Name, "Harrier");
ShipTypeList[0].Shield = 100;
ShipTypeList[0].Hull = 100;

strcpy(ShipTypeList[1].Name, "Warbird");
ShipTypeList[1].Shield = 250;
ShipTypeList[1].Hull = 500;

// ...

Player MyPlayer;

// Angenommen, der Spieler wählt zweimal das erste Schiff
// und das dritte und vierte
MyPlayer.Ship[0].Type = &ShipTypeList[0];
MyPlayer.Ship[1].Type = &ShipTypeList[0];
MyPlayer.Ship[2].Type = &ShipTypeList[2];
MyPlayer.Ship[3].Type = &ShipTypeList[3];

// Allen Schiffen des Spielers maximale Schild- und Hüllenstärke zuweisen
for(int i = 0; i < 4; i++)
{
    MyPlayer.Ship[i].Shield = MyPlayer.Ship[i].Type->Shield;
    MyPlayer.Ship[i].Hull = MyPlayer.Ship[i].Type->Hull;
}

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

4

12.04.2003, 12:56

Jo das wärs dann.

Nur eins noch ;p
wie kann errecihe ich ,dass folgender Code funzt (hab 2 Klassen player und Raumschiff)


...

Quellcode

1
... = player.GewähltesRaumschiff->Health;
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

12.04.2003, 13:04

Tut mir leid, ich verstehe das Problem nicht.
Vielleicht solltest Du mit C++ wirklich nochmal von ganz vorne anfangen.

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

6

12.04.2003, 13:10

Quellcode

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
Fchosen(TRaumschiff Raumschiff,TPlayer Player)
{
    TRaumschiff* GewaehltesRaumschiff;
    TRaumschiff* GewaehltesRaumschiff2;
    TRaumschiff* GewaehltesRaumschiff3;
    TRaumschiff* GewaehltesRaumschiff4;
if(Raumschiff.chosen == true)
{
 Raumschiff.FShowStats();
if(Player.GewaehltesRaumschiff == 0)
{
Raumschiff.Health = Player.GewaehltesRaumschiff->Health;
Raumschiff.Angriffskraft = Player.GewaehltesRaumschiff->Angriffskraft;
Raumschiff.Armor = Player.GewaehltesRaumschiff->Armor;
}
else {
if(Player.GewaehltesRaumschiff2 == 0)
    {
Raumschiff.Health = Player.GewaehltesRaumschiff2->Health;
Raumschiff.Angriffskraft = Player.GewaehltesRaumschiff2->Angriffskraft;
 Raumschiff.Armor =Player. GewaehltesRaumschiff2->Armor;
}
    else{
    if(Player.GewaehltesRaumschiff3 == 0)
{
Raumschiff.Health = Player.GewaehltesRaumschiff3->Health;
Raumschiff.Angriffskraft = Player.GewaehltesRaumschiff3->Angriffskraft;
Raumschiff.Armor = Player.GewaehltesRaumschiff3->Armor;
else{
  if(Player.GewaehltesRaumschiff4 == NULL)
    {
                           Raumschiff.Health = Player.GewaehltesRaumschiff4->Health;
                           Raumschiff.Angriffskraft = Player.GewaehltesRaumschiff4->Angriffskraft;
                           Raumschiff.Armor = Player.GewaehltesRaumschiff4->Armor;
      }

   }
 
  }
 
}

    }

}




Fehler :

D:\Raumschlacht\game.cpp(15) : error C2819: Der Typ 'TRaumschiff' hat keinen ueberladenen Elementoperator '->'



Ich wollte mal fragen mit wie vielen Jahren du angefangen hast zu proggen?
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

12.04.2003, 13:13

Also da sehe ich schonmal einige grundsätzliche Fehler.
Du schreibst da:

Quellcode

1
2
3
4
if(Player.GewaehltesRaumschiff == 0)
{
   ... = Player.GewaehltesRaumschiff->Health;
}


Das geht doch garnicht! Du prüfst erst, ob der Zeiger null ist, und wenn er wirklich null ist, dann darfst Du doch garnicht auf ihn zugreifen! Das tust Du durch "->Health" aber.
Zeig mal die Stelle, wo Du TRaumschiff definiert hast.

Ich glaube ich habe mit 12 angefangen, aber so genau weiß ich es leider nicht mehr.

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

8

12.04.2003, 13:15

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class TRaumschiff
{
public:
    int Health;
    int Armor;
    int Angriffskraft;
    int costs;
    bool chosen;
    
    FShowStats();
    
    FAngriff();
    
};



wo soll ich dnn neu anfangen: Denkste hello world ist noch zu anspruchsvoll?
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

12.04.2003, 13:22

Nein... war nicht so gemeint ;)
Mir fällt auf, dass die beiden Methoden der Klasse irgendwie garkeinen Typ haben. Geht das überhaupt? Schreib mal "void" davor.

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

10

12.04.2003, 13:22

achso ich muss schreiben

Quellcode

1
player.GewRaumschiff->health = Raumschiff.health 
oder wie?

dasd = 0 soll ja nur testen ob schon ein anderes Raumschiff in dem GewRaumschiff gespeichert ist
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

Werbeanzeige