Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Aufbau eines Konsolenspiels

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.09.2005, 23:14 Uhr
HOwTnTEd



Hallo ihr programmer...

Ich habe in der schule c/c++ als fach. Das seit nun über 1 jahr. Wir programmieren zur Zeit nur in der Konsole. Es wird aber langsam etwas langweilig, weil die programme die wir schreiben taugen nix. Ich habe deswegen schon kleinere konsolenspiele geschrieben. Mein größtes Spiel war ein Mix aus Snake und Warcraft 3. Man musste mit seiner figur Mana einsammeln und konnte dann Zauber auf den anderen wirken. Meine Vorgehensweise dabei:

Ich habe mein programm aufgeteilt in:

- grafik(); // grafikausgabe im spiel und menue
- steuerung(); // eingabenverarbeitung
- logik(); // berechnungen u.ä
- main(); // spielschleife

tja das war so ungefähr mein aufbau. Es endete aber oftmals in viel verwirrung und überschneidungen der einzelenen funktionen (man konnte nicht die ganze grafik bei der grafik lassen sondern musste auch paar grafikstücke bei steuerung usw. einbauen) Irgendwann habe ich das projekt neu angefangen und ordentlicher sortiert. Trotzdem war die übersicht nicht so wie ich es mir vorgestellt habe.
Ein weiteres Problem wofür ich noch keine lösung habe ist: In meinem spiel gibt es ja verschiedene grafikausgaben (Intro, Menue, Spiel, Outro). Ich habe das nun per if() abfragen unterschieden. alles stand immernoch in der funktion grafik(status); status war die variable für die jeweilige ausgabe (die oben stehenden). Tja ihr könnt euch vorstellen das ein überblick da langsam schwer wurde bei 10000 zeilen code.

Meine eigentliche Frage ist nun: Wie kann ich so ein projekt am besten mit Klassen aufbauen?
Ist es sinnvoll klassen zu verwenden? Brauch ich für alles ne eigene Klasse (z.b für: spieler, grafik, steuerung, schuss, zauber, logik, menue, intro usw...) Ich habe keine genaue vorstellung wie ich so ein projekt aufbauen muss damit man sich mit der zeit nicht verzettelt.

Ebenfalls weiß ich nun nicht ob ihr mein Problem verstanden habt, oder ich mich nicht präziese genug ausdrücken konnte. Wenn etwas unklar an meiner fragestellung ist, dann fragt bitte. Da ich nicht genau weiß wie ich meine fragen stellen soll fällt es mir hier schwer die richtigen worte zu finden. Also ich hoffe mal das geht so einiger maßen. Was ich nicht erwarte ist hier der code. Nein die arbeit mach ich mir schon selber. Mich würde nur der grundaufbau eines solchen projekts interessieren.

Danke und ich hoffe ihr antwortet viel, howtnted
--
Hotte + oWned = HowTnTEd
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.09.2005, 23:27 Uhr
imhotep
followed the white rabbit


Es ist meistens sinnvoll Klassen zu verwenden, da man so an einem Teil rumdoktoren kann, ohne die anderen danach neuschreiben zu müssen.
Man geht im Prinzip so an eine Problem ran, dass man das Hauptproblem so wie du es schon gemacht hast in Unterprobleme teile. Dann sich die Unterprobleme ankuckt und diese wieder teilt. Bis man bei "atomaren" Probleme angekommen ist, die sich nicht mehr teilen lassen.
Mach das ruhig erst mal mit Papier und Bleistift. Verdeutliche dir, wie die einzelnen Teile zusammenspielen und wie dein Programm abläuft. Je mehr Zeit du in ein sauberes Konzept steckst, desto mehr sparst du dir nachher beim programmieren.

Klassen sollen Dinge, die zusammengehören an einander koppeln, so dass du nachher nur an wenigen Stellen was ändern musst und nicht durch deinen ganzen Code gehen musst. Was zusammengehört ergibt sich meist schon aus dem Konzept. Nachträglich kann man auch weiter Klassen hinzufügen und refactoring (Umbau, .....) betreiben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.09.2005, 23:36 Uhr
HOwTnTEd



Jo so hab ich mir das gedacht. Klassen? = JA!
Gut meine nächste frage ist nun: Vererbung? Ich meine wenn ich das wieder so mache mit

class Grafik
class Steuerung

dann kommen dann unterklassen die von denen erben. Aber wird das nicht irgendwann unübersichtlich? Kannst du mir vllt ein paar klassenbeispiele geben? Also so wie ich das gemacht habe? Welchem thema würdest du ne eigene klasse spendieren und welche eher nicht? Inwiefern kann ich das wieder mit methoden machen?

Also es würde ja nix bringen wenn ich ne class Spiel mache und darin nur wieder grafik(); steuerung(); usw erstelle.

Wäre mal recht interessant zu erfahren in welche bereiche man soetwas am besten trennt.
--
Hotte + oWned = HowTnTEd
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.09.2005, 01:21 Uhr
imhotep
followed the white rabbit



Zitat von HOwTnTEd:
Welchem thema würdest du ne eigene klasse spendieren und welche eher nicht?


Das kann man so pauschal nicht sagen.

Mal ein kleines Beispiel. Sagen wir du hast eine Datenbank und ein Programm das auf sie zugreift. Da kann man jetzt nicht genau sagen, ob es reicht nur eine Klasse zu machen oder für jede Aktionengruppe(Suchen, Einfügen, Updaten) eine eigene. Wenn du nur insgesamt 3 Aktionen hast ist es sicherlich unnötig für diese noch Unterklassen anzulegen. Wenn man aber 20 hat macht das schon Sinn, um sofort zusehen welche Funktionen es gibt. Wenn man aber mit 3 Funktionen und einer Klasse anfängt und später mehr hinzukommen, ist es ja auch möglich Unterklassen anzulegen und die Funktionen zu verteilen. Dann muss man halt im restlichen Code das ändern.

Mal so für dein Spiel. Wenn du eine Klasse für die Figur hast, diese Figur soll zaubern können und sie hat nur ein zwei Zauber, dann kann es reichen diese Zauber als Methode deiner Klasse Figur zu lassen. Wenn es aber 5 oder mehr werden kann es sinnvoller sein diese in eine eigene Klasse Zauber zu packen.
Du kannst aber auch Klassen erzeugen, die nur ein Objekt haben werden. Wenn dir das so gefällt und es die Pflege erleichtert. Zum Beispiel: Es soll nur eine Bogenart im Spiel geben, aber trotzdem wär es sinnvoll dafür eine eigene Klasse zu schreiben, weil man so alle Belange die für den Bogen zutreffen an einem Ort hat.

Noch was wegen der Übersichtlichkeit. Du kannst ja auch Unterverzeichnisse anlegen, die die Klassen nach Themen sortiert aufnehmen. Eines für Steuerung, Grafik,........

Dieser Post wurde am 23.09.2005 um 01:25 Uhr von imhotep editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: