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 |
void SetPosX( const int iNewX ) bool Init( const std::string FilePath ) bool Init( std::vector<int> itemids |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
/*
* function: Init
* parameter: string FilePath
* returns: true -> success
false -> error
* purpose: initializes unit values with the
values of a given file
*/
|
C-/C++-Quelltext |
|
1 2 3 4 5 |
/*
* Init
*
* Initializes unit values with the values of a given file
*/
|
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
if( iValue < 0 ) _iHitpointsCURRENT = 0; else if( iValue > _iHitpointsMAX ) _iHitpointsCURRENT = _iHitpointsMAX; else _iHitpointsCURRENT = iValue; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
template<typename T> inline T Clamp( const T& min, const T& max, const T& value ) { return value < min ? min : value > max ? max : value; } void Unit::SetHitpoints(const int iValue) { _iHitpointsCURRENT = Clamp( 0, _iHitpointsMAX, iValue ); } void Unit::SetMana(const int iValue) { _iManaCURRENT = Clamp( 0, _iManaMAX, iValue ); } // end SetHitpoints |
Zitat von »"David_pb"«
o Dir scheint dir const correctness ziemlich egal zu sein. Solang du nur dich selbst damit belastest ist das natürlich dir überlassen (unschön ist es trotzdem).
Zitat von »"David_pb"«
o Ich erkenn irgendwie kein Prinzip wie du Parameter übergibst:
C-/C++-Quelltext
1 2 3 4 5 void SetPosX( const int iNewX ) bool Init( const std::string FilePath ) bool Init( std::vector<int> itemids
Zitat von »"David_pb"«
Das meiste widerspricht den allgemeinen Regeln die man als C++ Programmierer normal gelernt hat.
Zitat von »"David_pb"«
o Du kommentierst viel zu viel. Dokumentation ist wichtig aber nicht in diesem Maß und nicht auf diese Art!
Dinge die offensichtlich sind werden nicht kommentiert, wieso auch? Kommentare machen den Code nicht übersichtlicher und unnötige Kommentare bringen überhaupt nichts.
Zitat von »"David_pb"«
o Oft verwendete Codefragmente wie dieser hier:
Zitat von »"David_pb"«
o Hast du irgendwelche Konventionen bezüglich der Namensgebung von Variablen (und für deinen Code allgemein)? Ich erkenn kaum etwas.
Zitat von »"David_pb"«
o Viele Funktionen sind zu lang und unübersichtlich.
Zitat von »"David_pb"«
o Der Code ist alles andere als Fehlersicher (z.B. doppeltes initialisieren von Instanz)
Zitat von »"David_pb"«
o Bei vielen Klassen ist die Zuständigkeit nicht ersichtlich weil alles vermischt wird (Entitycontroller-Klassen etc.. ??)
Zitat von »"David_pb"«
o Du nutzt die WinAPI aber nicht konsequent, wieso? (z.B. system( "cls"))
Zitat von »"David_pb"«
o Dein "Design" wirkt eher pragmatisch/statisch als durchdacht.
Community-Fossil
Zitat von »"Draculark"«
Zitat von »"David_pb"«
o Ich erkenn irgendwie kein Prinzip wie du Parameter übergibst:
C-/C++-Quelltext
1 2 3 4 5 void SetPosX( const int iNewX ) bool Init( const std::string FilePath ) bool Init( std::vector<int> itemids
siehe oben. falls du aber die parameternamen meinst, dann muss ich dir recht geben. ich wechsle leider recht oft zwischen verschiednen schreibweisen. meistens, wenn ich nicht viel zeit habe, wird einfach alles klein geschrieben und sonst entsprechend ungarische notation.
Zitat von »"Draculark"«
verstehe nicht ganz, womit ich mich da belaste? parameter, deren wert ich in der funktion nicht ändere(ändern sollte) definiere ich eben als konstante parameter. sonst verwende ich const eh nur bei konstanten deklarationen.
Zitat von »"Draculark"«
siehe oben. falls du aber die parameternamen meinst, dann muss ich dir recht geben. ich wechsle leider recht oft zwischen verschiednen schreibweisen. meistens, wenn ich nicht viel zeit habe, wird einfach alles klein geschrieben und sonst entsprechend ungarische notation.
Zitat von »"Draculark"«
da wir an der uni nur java lernen und ich c++ eigentlich nur von c++ für spieleprogrammierer kenne, bin ich dementsprechend kein guter c++ programmierer.
wäre nett, wenn du ausführst, was "das meiste" ist bzw. die allgemeinen regeln. das sagt mir nämlich nichts.
Zitat von »"Draculark"«
darüber lässt sich vermutlich streiten. ich mag einfach eine einheitliche kommentierung und die zieh ich eben durch. ich persönlich komme damit recht gut zurecht und finde immer schnell die dinge,die ich brauche.
dass diese art bei den derzeit meisten funktionen vl unnötig ist, mag sein, aber mit fortschreitendem verlauf des spiels nimmt auch die funktionalität zu und finde mein "kommentarschema" dafür recht angenehm.
Zitat von »"Draculark"«
auch da hast du natürlich recht, aber diese klasse wurde noch nicht wirklich angerührt (lediglich das bewegen + item"verwalten") und deshalb sind da atm nur erste codevorschläge/versionen drin. ebenso habe ich diese form der abfrage nur einmal (eben genau an dieser stelle) gebraucht und deswegen hat sich die codeauslagerung noch nicht angeboten. falls ich das jedoch noch öfters brauchen werde, wird es natürlich ausgelagert.
Zitat von »"Draculark"«
siehe oben
Zitat von »"Draculark"«
könntest du mir da beispiele geben?
Zitat von »"Draculark"«
meinst du damit die listen in der gameklasse? die werde ich noch auf pointerlisten umändern und somit wird nur einmal eine instanz dynamisch erzeugt/gelöscht. atm hast du aber recht, da gibt es viele doppelinstanzen bis zum ende einer funktion. dessen bin ich mir bereits bewusst, aber da man es als benutzer nicht wirklich mitkrigt, habe ich das derzeit noch nicht behoben/geändert.
Zitat von »"Draculark"«
auch hier bitte wieder beispiele
Zitat von »"Draculark"«
wie gesagt, bin ich kein c++ guru und kenne eben nur von damals eben ein paar funktionen für die konsole, die das tun, was ich brauche. zum konsole clearen kenne ich eben nur system( "cls" ) und die tut das, was ich eigentlich will.
Zitat von »"Draculark"«
damit kann ich leider gar nichts anfangen. was meinst du damit genau?
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 |
/* * author: Simon Klausner * version: 0.1 * purpose: contains methods to display npctexts, or other infos like herostats */ #ifndef DIALOG_H #define DIALOG_H #include <windows.h> #include <iostream> class Dialog { public: bool Init( HANDLE WhichWindow, int iBorderSizeX, int iBorderSizeY, int iTextSpeed ); void ShowText( const std::string& stTalkerName, const std::string& stFilePath ); void ShowTextLine( const std::string& stText ); void PauseDialog(); private: void ClearDialog(); void DisplayTalker( const std::string& stTalkerName ); void DisplayTextLine( const std::string& stText, int iCoordX, int iCoordY ); unsigned int _iDialogSizeX; unsigned int _iDialogSizeY; int _iCurrentLineY; int _iTextSpeed; RECT _border; HANDLE _window; }; #endif |
Zitat von »"Draculark"«
@angesprochene fehler:
ich persönlich brauch diese fehlerabfragen vorerst einmal nicht, da ich ja selbst weiß, wo einheiten initialisiert werden z.b. und es somit zu solchen problemen nicht kommen kann.
dass die aber noch behandelt gehören (iwann mal) streite ich nicht ab.
Zitat von »"Draculark"«
@zufälliges zusammenwürfeln:
verstehe jetzt nicht, was da durchgewürfelt ist? um objekte darstellen zu können, brauchen sie eben eine paint funktion und die bewegung des helden finde ich auch schöner, wenn die in der heldenklasse behandelt wird und nicht iwo außerhalb. meine objekte sind genau für das zuständig, was im headerfile immer als purpose angegeben ist. sehe da wirklich kein durcheinander oO.
Zitat von »"Draculark"«
@softwaredesign:
finde ich jetzt auch nicht so schlecht. natürlich kann man immer übertrieben und alles megamäßig abkapseln um die 3-schichten persistenz zu wahren, aber das hier soll ein kleines spiel für mich selbst werden und kein verkaufsschlager. durch zuviel aufspalten mache ich mir persönlich die arbeit nur viel unangenehmer, da ich alleine über alles den überblick behalten muss und nicht mehrere mitarbeiter habe, die alle für ihren eigenen bereich zuständig sind.
Zitat von »"Draculark"«
finde da meine einfache struktur mehr als ausreichend:
framework -> zuständig für grafik/soundwiedergabe + eingabe
game -> spiellogik
alle anderen klassen sind immer für sich eigene "blöcke", die nicht wirklich auf dinge außerhalb zugreifen.
so ähnlich wird es auch in dem raumschiffshooter am ende des buches gemacht und da ich nur das als "vorlage" kenne, setze ich es halt derzeit auch so um.
Zitat von »"Draculark"«
wie würde denn dein design für so ein spiel aussehen? kannst mir da vl ein kleines klassendiagramm oder kurzbeschreibung geben? würde mich interessieren.
Community-Fossil
Zitat von »"User_User"«
Für einen Buchhalter oder Briefmarkensammler ist dies natürlich der reinste Horror
Zitat
Wenn du mit deinem Design zu frieden bist, wieso Fragst du dann nach Kommentaren von erfahreneren Leuten? Rolling Eyes
Werbeanzeige