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
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 |
#pragma once #ifndef PLAYER_HPP #define PLAYER_HPP #include "Game.h" class Player { public: Player(); ~Player(); std::string Spielername; enum class Attribute {STAERKE, SCHNELLIGKEIT, SCHOENHEIT, INTELLIGENZ, GLAUBEN, LEBENSPUNKTE}; void changeAttribut(Attribute, int); void setSpielername(std::string); std::string getSpielername(); std::int16_t getAttributWert(Attribute); private: std::int16_t Staerke = 0; std::int16_t Schnelligkeit = 0; std::int16_t Schoenheit = 0; std::int16_t Intelligenz = 0; std::int16_t Glauben = 0; std::int16_t Lebenspunkte = 10; }; #endif |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#include "Player.h" Player::Player() { std::cout << "Spieler-Konstruktor aufgerufen!" << std::endl; } void Player::changeAttribut(Attribute attribut, int x) { switch (attribut) { case Attribute::GLAUBEN: Glauben += x; break; case Attribute::INTELLIGENZ: Intelligenz += x; break; case Attribute::SCHNELLIGKEIT: Schnelligkeit += x; break; case Attribute::SCHOENHEIT: Schoenheit += x; break; case Attribute::STAERKE: Staerke += x; break; case Attribute::LEBENSPUNKTE: Lebenspunkte += x; break; } } std::int16_t Player::getAttributWert(Attribute attribut) { switch (attribut) { case Attribute::GLAUBEN: return Glauben; break; case Attribute::INTELLIGENZ: return Intelligenz; break; case Attribute::SCHNELLIGKEIT: return Schnelligkeit; break; case Attribute::SCHOENHEIT: return Schoenheit; break; case Attribute::STAERKE: return Staerke; break; case Attribute::LEBENSPUNKTE: return Lebenspunkte; break; } } void Player::setSpielername(std::string string) { Spielername = string; } std::string Player::getSpielername() { return Spielername; } Player::~Player() { std::cout << "Spieler-Destruktor aufgerufen!" << std::endl; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#ifndef GAMESTATE_HPP #define GAMESTATE_HPP class Game; class Player; class Gamestate { public: virtual void HandleEvents(Game& game) = 0; virtual void Update(Game& game) = 0; virtual void Draw(Game& game) = 0; virtual void Spieler(Player& player) = 0; virtual ~Gamestate() {}; }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
class Gamestate { public: Gamestate(Player* player) : _player(player) {} protected: Player* _player; }; |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Wieso Player*? Ist der denn optional? Wenn nicht, wäre Player& wohl besser. Wenn du nur davon lesen willst, dann const Player&.Hier eine ganz einfache Möglichkeit:
Zitat
virtual void Spieler(Player& player) = 0;
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#ifndef GAMESTATE_HPP #define GAMESTATE_HPP class Game; class Player; class Gamestate { public: virtual void HandleEvents(Game& game) = 0; virtual void Update(Game& game) = 0; virtual void Draw(Game& game) = 0; virtual void Spieler(Player* _player) = 0; virtual ~Gamestate() {}; protected: Player* _player; }; #endif |
C-/C++-Quelltext |
|
1 |
void Beispielstate::Spieler(Player* player) {} |
Außerdem ist mir nicht klar wieso std::int16_t und warum nicht einfach nur int?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Und welchen Vorteil versprichst du dir davon im Gegensatz zu einem normalen int?Ich habe das jetzt noch auf std::int8_t geändert. Ich brauche einfach nicht so große Werte, für die Attribute reichen die kleinen völlig aus.
Ich habe das jetzt noch auf std::int8_t geändert. Ich brauche einfach nicht so große Werte, für die Attribute reichen die kleinen völlig aus.
Und welchen Vorteil versprichst du dir davon im Gegensatz zu einem normalen int?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C-/C++-Quelltext |
|
1 2 |
private: std::int Staerke = 0; |
Werbeanzeige