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

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

1

22.08.2011, 19:53

Klassen: Wie gestalte ich meinen Angriff?

Hey,
ich lerne zur Zeit mit Klassen umzugehen, doch leider habe ich wirklich gerade kein Plan wo und wie ich mein Angriff in der Konsole gestalten soll.
Könnte mir jemand Tipps geben?

CSpieler.hpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Spieler Klasse.hpp
class CSpieler
{
    private:
        // Membervariablen
        int m_Leben;
        int m_Schaden;

    public:
        // Memberfunkionen
        CSpieler ();
        void Zeige_Daten ();
        void Angreifen ();
};


CSpieler.cpp

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
// Spieler Klasse.cpp
#include "CSpieler.hpp"
#include <iostream>

using namespace std;

// Funktionen

// Konstruktor
// Aufgabe: Definiert die Spieler Daten
CSpieler::CSpieler ()
{
    // Initialisieren
    m_Leben = 100;
    m_Schaden = 25;
}

// Zeige Daten
// Aufgabe: Gibt die Spielerdaten in der Konsole aus.
void CSpieler::Zeige_Daten ()
{
    cout << "\nStatistiken" << endl;
    cout << "Leben: " << m_Leben << endl;
    cout << "Schaden: " << m_Schaden << endl << endl;
}

// Angreifen
// Aufgabe: Greift ein gewünschtes Ziel an.
void CSpieler::Angreifen ()
{

}


MFG:
Raidenkk / Kevin

2

22.08.2011, 20:08

Wie jetzt?
Du willst wissen wie void Angreifen() aussehen soll?
Entweder zufällig Leben abziehen, oder Angriff und Verteidigung einbauen, daraus die Differenz und das mit X multiplizieren/dividieren (je nach dem wie schwer du es machen willst) und dann das vom Leben abziehen.
So habe ich das immer gemacht gehabt. :D

MfG
Check

Holy

Frischling

  • Private Nachricht senden

3

22.08.2011, 20:10

C-/C++-Quelltext

1
2
3
4
5
// Angreifen 
// Aufgabe: Greift ein gewünschtes Ziel an. 
void CSpieler::Angreifen () 
{
 }


Ich würd der Methode einfach einen Pointer/Referenz auf die Klasse des Angriffsziels übergeben.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* Greift ein gewünschtes Ziel an.
 *
 * @param &ziel  Referenz auf das Ziel
 */
 void CSpieler::Angreifen (const CSpieler &ziel) 
 {
   ziel->update_leben(m_schaden * (-1));
 }
 
 void CSpieler::update_leben(const float leben)
 {
   m_Leben += leben;
 }
 


So oder oder so ähnlich. Maybe syntaktisch nicht ganz korrekt.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Holy« (22.08.2011, 21:14)


4

22.08.2011, 20:18

Du könntest Ausgeben, wie viel Schaden gemacht wurde (m_Schaden +/- Zufallswert) und wie viel Schaden dein Spieler erlitten hat.
Dann wäre es z.B. möglich dass sich der Spieler für einen erneuten Angriff entscheidet (wieder das selbe wie oben) oder sich zurückziehen will (mit etwas Glück (Zufall) gelingt es ihm).
Eine weitere Möglichkeit wäre auch, dass sich der Gegner zurückziehen will, wofür natürlich auch wieder eine Zufallszahl zu Hilfe genommen wird, ob er denn damit Erfolg hat.
Das wären jetzt mal so ein paar Möglichkeiten die mir einfallen würden. Das ganze geht dann solange bis einer der Beiden stirbt oder es geschafft hat zu fliehen. Damit hast du so ne Art rundenbasierter Kampf. Was anderes ist in der Konsole auch nicht ohne weiteres so einfach zu machen.

lg Chaia

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

5

23.08.2011, 13:32

die Welt ist klein.

Cool ein Bergkamener,... schöne grüße vom Nordberg! :-D

Werbeanzeige