Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 14:17

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



2D Game - Sauberste Klassen-/Funktionsstruktur?

Discussion on 2D Game - Sauberste Klassen-/Funktionsstruktur? within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1



 
IceTrailer's Avatar
 
elite*gold: 150
Join Date: Sep 2010
Posts: 2,070
Received Thanks: 821
2D Game - Sauberste Klassen-/Funktionsstruktur?

Hallo,

da ich mich seit ein paar Wochen mit SFML befasse und dabei ganz gute Fortschritte sehe - und aus einem Projekt ein kleines 2D Spiel rausholen möchte, stellt sich mir natürlich die Frage, was am Saubersten ist, was die Klassenstruktur betrifft.

Ich habe meine Game-Klasse, die dann die draw/update/handle Funktion von Player etc aufruft. Die Player-Klasse enthält allerdings nicht nur das Sprite des Players, sondern auch die einzelnen Eigenschaften wie HP, MP, sonstige bools und einfach die ganzen nicht-grafischen Sachen.


Mein Problem ist, ich möchte das grafische mit den funktionalen nicht vermischen, weiß jemand weiter/kann mir diesbezüglich weiterhelfen?

Ich hab mich auch schon mit dekompiliertem Minecraft Forge befasst allerdings ist das unfassbar viel Code, dass das a) nicht besonders lesbar und b) vom Hundertsten ins Tausendste kommt..

Vielen Dank im Voraus
IceTrailer is offline  
Old 01/25/2016, 11:10   #2
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Einfach den Player in mehrere Klassen aufteilen.
Eine beispielhafte Aufteilung wäre:
- PlayerController: Verarbeitet Input und bewegt den Spieler
- PlayerState: HP, Mana, etc.
- PlayerView: Sprites, etc.
.SkyneT. is offline  
Thanks
1 User
Old 01/25/2016, 11:52   #3
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by .SkyneT. View Post
Einfach den Player in mehrere Klassen aufteilen.
Eine beispielhafte Aufteilung wäre:
- PlayerController: Verarbeitet Input und bewegt den Spieler
- PlayerState: HP, Mana, etc.
- PlayerView: Sprites, etc.
Das wäre eine Möglichkeit. Ich für meinen Geschmack würde alles in eine Klasse hauen, weil es wohl nicht so gigantisch viel Code für eine Klasse Player geben wird.
Ganz spontan fällt mir da nur das ganze Grafikzeugs ein, was bissel Code werden könnte.

Ist aber Geschmackssache, wenn man view und funktionalität wirklich trennen will, würde ich aber nicht nur eine Klasse PlayerInput/PlayerView machen sondern auch eine Klasse GeneralInput/GeneralView und diese Klasse dann an PlayerInput und sonstige Sachen weitervererben.
Shadow992 is offline  
Thanks
1 User
Old 01/25/2016, 13:54   #4
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 444
Das ist nicht so wirklich Mainstream, glaube ich, aber du kannst dir auch Entity Component Systems anschauen: https://en.wikipedia.org/wiki/Entity_component_system
algernong is offline  
Thanks
1 User
Old 01/25/2016, 16:14   #5



 
IceTrailer's Avatar
 
elite*gold: 150
Join Date: Sep 2010
Posts: 2,070
Received Thanks: 821
Also ist das so gemeint, dass die Game-Klasse drei Klassen erstellt (Player, PlayerController, PlayerView) und an PlayerController und PlayerView das Object (also kein Pointer) Player übergibt? oder wie wärs am schlausten?
IceTrailer is offline  
Old 01/25/2016, 22:32   #6
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Ich würde beim Spielstart eine "Player" Klasse instanziieren welche im Konstruktor dann die einzelnen Komponenten der "Player" Klasse (PlayerController, PlayerState, etc.) instanziiert.

Am besten du probierst einfach ein wenig herum, dir wird schon schnell auffallen wie es am besten funktioniert. Sobald du der Meinung bist das es "perfekt" ist, kannst du ja noch mal fragen, ob es nicht noch weitere Verbesserungen gibt.
.SkyneT. is offline  
Thanks
1 User
Old 01/25/2016, 23:10   #7



 
IceTrailer's Avatar
 
elite*gold: 150
Join Date: Sep 2010
Posts: 2,070
Received Thanks: 821
Ich hab mein Projekt jetzt neu gestartet und das jetzt so gemacht:

Game erstellt:
GeneralController
GeneralView
Player


GeneralController erstellt:
PlayerController (+ alle anderen Controller)


GeneralView erstellt:
PlayerView (+ alle anderen die Grafik betreffenden Klassen)


Player erstellt:
PlayerStats
PlayerState
etc


Also so:





Falls das irgendwie schwerwiegend unschön ist, weist mich bitte darauf hin, ansonsten würde ich dabei erstmal bleiben. Danke an euch
IceTrailer is offline  
Reply


Similar Threads Similar Threads
[C++] Klassen
12/03/2013 - C/C++ - 3 Replies
Hey, ich und ein jemand anderes diskutieren darüber was besser ist. Wir schreiben momentan einen Bot und haben dort eine Klasse, wo alle Nötigen Funktionen drin stehen wie Tastendruck simulieren, angreifen und hinsetzten etc... Jetzt kamen wir aber zu Speicherfunktion und diskutieren drüber was sinnvoller ist, die 2 Speicher Funktionen mit in die Klasse der Botfunktionen zu packen oder gar eine ganz neue Klasse extra für die 2 Funktionen zu machen? Ich bin für: Speicherfunktionen in...
Die Klassen
10/21/2011 - Team Fortress 2 - 11 Replies
hallo, In deisem thread werde ich die Klassen von Team Fortress2 erklären Der "Scout"(deutsch: Späher): VORTEILE: -am schnellsten laufende Person in Team Fortress 2 -Kann Doppelsprünge machen NACHTEILE:
Welche Klassen kann man mit den Klassen von WoW vergleichen?
10/09/2011 - General Gaming Discussion - 30 Replies
Thema sagt eigentl. alles ;)
Cod Bo klassen HELP
05/23/2011 - Call of Duty - 12 Replies
jetzt lvl 10 erstes prestige x.x
klassen tip pls :(
10/07/2008 - World of Warcraft - 11 Replies
hi möchte gern nen Hordler anfangen und kann mich einfach nicht entscheiden möchte später pvp konkurenzfähig sein muss nicht imba sein und natürlich sollte die klasse gern in instanzen mitgenommen werden. hab da an nen Frostmage gedacht aber kenn mich da halt nicht aus. hoffe ihr habt da nen paar tips für mich^^ -pvp konkurenzfähig brauch nich imba sein oO -pve nützlich danke^^



All times are GMT +1. The time now is 14:17.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.