Quote:
Originally Posted by maxi39
was kann man verbessern ? kritik ist erwünscht!
|
Mal ein paar Vorschläge:
Statt einer gamelogic Klasse und einer TimerThread Klasse würde ich einfach eine GameEngine Klasse machen, und im Loop einfach die Zeitdifferenz mittels GetTickCOunt berechnen, und dann die update und eine Draw Funktion in die GameEngine klasse hauen, und diese mit dem ZeitDelta als Parameter aufrufen.
Das würde das ganze deutlich einfacher gestalten und es gilt immer die Faustregel Simpler = Besser.
Dann würde ich eine Abstrakte Oberklasse Gameobject machen von der Ball und Paddel erben, welche sich um das rendern kümmert, damit vermeidest du doppelten code, außerdem eine abstrakte Methode Update(Delta) implementiert um die Updates durchzuführen, und eventuell eine Reset Methode zum zurücksetzen auf default, damit musst du nur noch eine Liste von Objekten zu deiner GameEngine hinzufügen und in der Update Funktion durchiterieren und für jedes Update aufrufen, und in der Render Methode für alle Render aufrufen.
Dann noch, wozu brauchen die Paddles speed? Willst du beschleunigte paddles bauen? ich würde einfach sagen falls der key down ist dann bewege das Paddle um Speed(Konstant) * Delta / 1000 (falls Delta in MS ist, was es eigentlich zumeist sein sollte)
Außerdem fehlt mir bei deinem Modell irgendwie eine Klasse oder so für User Input also Tastatur handling o.ä.
So wie ich es machen würde:
Code:
SoundDriver = {...}
KeyboardDirver = {...}
GameEngine = {
private:
LastTickCount
SoundDriver
KeyboardDriver
protected:
ObjectsList
Update(Delta)
Draw()
public:
Init()
Run()
Teardown()
}
GameObject = {
private
Texture
TexturePosition
protected
Position
public
Create(Texture)
Destroy()
Reset(); abstract
Update(Delta); abstract
Draw()
}
Ball = (GameObject){
private
Speed
protected
SoundDriver
CheckCollision()
public
Create(SoundDriver)
Destroy()
Reset()
Update(Delta); override
}
Paddle = (GameObject) {
protected
KeyboardDriver
public
Create(KeyBoardDriver)
Destroy()
Reset()
Update(Delta); override
}
Natürlich fehlen da noch ein paar Abhängigkeiten wie z.B. Ball -> Paddle