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

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

1

30.08.2006, 10:37

Frage zum Thema Grafik!

Hallo,
Ich habe mein 2D Game schon sehr weit geschrieben aber ich habe eine Frage zum Thema Grafik.

Da ich ja alles an Item/Charaktere usw auch darstellen muss wollte ich fragen wie ich das am besten anstelle.

Ich habe jetzt eine Klasse für die Komplette Engine erstellt.
Diese beinhaltet Die Steuerung, Soundssystem, Grafisches, Eingabe und Timer.

Nun wollte ich wissen wie ich die Grafischen(und auch Soundtechnischen Sachen) am besten mit dem Code der Items usw. verbinde.

Als mögliche Lösungen könnte ich ja Die Komplette Engine Klasse(oder nur die Basisklassen von Grafik/Sound) vererben oder sollte ich doch einen Zeiger(Den ich mit einem Singleton erstelle) nutzen?

Kleverer wäre ja die Vererbung der Basisklassen da ich sichergehen kann das Weder Input noch Timmer mißbraucht werden können ;)

Aber nun möchte ich mal eure Meinung hören da ich nicht weiß was am sichersten wäre :)

MFG T-VIRUS
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Anonymous

unregistriert

2

30.08.2006, 10:55

Öhm eine Engine Klasse? Habe ich ja nur nie gehört. Schonmal was von
Modularer Programmierung gehört? Normalerweise schreibt man für
jedes Element eine eigene Klasse. Eine für Steuerung, eine für Sound,
eine für Grafik, eine für Timer, usw. Für Charaktere solltest du dir eine
Sprite Klasse schreiben.

Zitat

Grafischen(und auch Soundtechnischen Sachen) am besten mit dem Code der Items usw. verbinde.


Header einbinden???

Paul_C.

Frischling

Beiträge: 81

Wohnort: Duisburg

  • Private Nachricht senden

3

30.08.2006, 11:14

Es steht ja nicht, dass er das nicht gemacht hat. Ich habe auch eine übergeordnete Engine-Klasse, die wiederum für die einzelnen Elemente weitere Instanzen andere Klassen erstellt.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

4

30.08.2006, 11:40

Ich habe es wie folgt gebastelt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Abstrakte Klassen für die Engine Klasse

class CSound
{
 //Hier steht der Code für Sound technisches

}

class CInput
{
 //Hier steht der Code für die Eingabe

}

class CGraphic
{
 //Hier steht der Code für Grafisches

}

class CTimer
{
 //hier steht code für Timer Stuff

}


Hier die Engine Klasse

C-/C++-Quelltext

1
2
3
4
class CEngine : public CGraphic, public CSound, public CInput, public CTimer
{
 //Hier wird die Engine gebaut

}


Und die Engine soll über einen Zeiger/Referenzsingleton abruf bar sein!

Den ganzen Code kann ich mal uppen falls ihr den sehen wollt.
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

30.08.2006, 12:13

Eine sehr merkwürdige Verwendung von Vererbung.
Es sei denn CSound, CInput ... sind nur Schnittstellen, enthalten also keinerlei Implementierung, sondern ausschließlich virtuelle Methoden. Dann würde es vielleicht Sinn machen. CEngine würde diese Schnittstellen dann implementieren.
Falls das Schnittstellen sein sollen, dann würde ich sie aber ISound, IInput ... nennen.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

6

30.08.2006, 12:51

@David
Du hasts durchschaut ^^
Das nächste mal poste ich mehr code ^^
Okay dann sollen die Abstrakten Klassen also Interfaces werden hmm okay ^^

Die Implementierungen sind nur in der Engine Klasse wie gesagt.
Aber wie soll ich das jetzt lösen mit dem Topic problem?
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

DarioFrodo

Treue Seele

Beiträge: 349

Wohnort: Kerkau, 100km nördlich von Magdeburg

Beruf: Selbstständig

  • Private Nachricht senden

7

30.08.2006, 17:21

Des Codes der Items? Wie genau soll man das verstehen? Ich würde für solche Gegenstände eine extra Datei benutzen. WIe David bei Galactica, da stand alles in der Data.ini oder wie bei Gothic, da werden die Items in Scripten festgelegt. Du solltest auf jeden Fall eine Klasse für deine Items schreiben. Und die ruft dann bei Bedarf die benötigten Engine-Funktionen auf.
Erst wenn der letzte Fluss vergiftet,
der letzte Baum gefällt,
der letzte Fisch gefangen,
dann werdet ihr merken, dass man Geld nicht essen kann

Man verkauft die Erde nicht, auf der die Menschen wandeln.

- Indianerweisheiten

Ich bin auch ein einhornimmond ;)

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

8

30.08.2006, 17:49

Ich hab ja schon code für die ganzen Items usw.

Beispiel:
Base_Item.h(Abstrakte Klasse die Items verallgemeinert)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
//Simples Item für das Game:

class CBaseItem
{
 public:
 
 CBaseItem(){}
 virtual ~CBaseItem(){}
        
 virtual void Spawn()=0;
 virtual bool PickUp()=0;
};


Hier mal ein Medikit(nur getippt)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Simples Item für das Game:

class CHealthKit
{
 public:
 
 CHealthKit(){}
 virtual ~CHealthKit(){}
        
 virtual void Spawn();
 virtual bool PickUp();

 protected:
 unsigned int HealthToGive;
};


So sieht z.b. ein Item aus aber wie sollte ich das Zeichnen und und das Sound abspielen am besten einabuen?
Per Enginezeiger/objekt oder in dem ich an CBaseItem die Basisklassen zum Zeichnen/Soundabspielen vererbe?
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

10

31.08.2006, 07:35

Okay werd mal gucken wie ich das realisieren kann :)
Hatte CObjects eine Klasse für 2D Phsyicobjekte glaube zugeteilt ^^
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Werbeanzeige