Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 04:35

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

Advertisement



klassen diagramm pingpong

Discussion on klassen diagramm pingpong within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
klassen diagramm pingpong

moin,

ich wollte das spiel pingpong in c++ / sfmlprogrammieren. dafür habe ich mir erstmal ein klassen diagramm erstellt.



was kann man verbessern ? kritik ist erwünscht!

EDIT: 2tes design nach warfley

Attached Files
File Type: rar pingpong.rar (25.1 KB, 1 views)
maxi39 is offline  
Old 02/21/2017, 07:43   #2
 
XYZ-Cannon's Avatar
 
elite*gold: 0
Join Date: Jul 2011
Posts: 1,774
Received Thanks: 866
Nach welcher Architektur willst du das Programm denn aufbauen? MVC?
XYZ-Cannon is offline  
Thanks
1 User
Old 02/21/2017, 12:13   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Quote:
Originally Posted by maxi39 View Post
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
warfley is offline  
Thanks
1 User
Old 02/21/2017, 19:58   #4
 
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
das gefällt mir ziemlich gut

maxi39 is offline  
Old 02/21/2017, 21:04   #5
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Quote:
Originally Posted by maxi39 View Post
das gefällt mir ziemlich gut

Noch ein Tipp, meist wird die delta zeit als unsinged int (32 oder 64), da bei floating point zahlen wie float oder double sehr unschöne lücken entstehen können, welche echt unschöne geschwindigkeitsunterschiede (grade bei hohen fps) erzeugen können. Daher einfach einen unsigned long oder so verwenden und darin die Millisekunden speichern. Unter Windows gibt dir die Funktion GetTickCount sogar genau das zurück

Und die Positionen sowie die größe solltest du eventuell protected machen, da du ja in den abstammenden klassen (Ball, Paddle) die position ja ändern können möchtest
warfley is offline  
Thanks
1 User
Old 02/21/2017, 21:15   #6
 
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
Quote:
Originally Posted by warfley View Post
Noch ein Tipp, meist wird die delta zeit als unsinged int (32 oder 64), da bei floating point zahlen wie float oder double sehr unschöne lücken entstehen können, welche echt unschöne geschwindigkeitsunterschiede (grade bei hohen fps) erzeugen können. Daher einfach einen unsigned long oder so verwenden und darin die Millisekunden speichern. Unter Windows gibt dir die Funktion GetTickCount sogar genau das zurück

Und die Positionen sowie die größe solltest du eventuell protected machen, da du ja in den abstammenden klassen (Ball, Paddle) die position ja ändern können möchtest
danke für den tipp. hab das mit private in der abtracten klasse ganz vergessen^^ und es haben sich noch weitere fehler eingeschlichen z.b.
Update(float delta : int) (Syntax fehler) was ich jetzt eh nach Update(delta :unsigned int) änder^^
maxi39 is offline  
Reply


Similar Threads Similar Threads
Java und Processing PingPong Spiele Modellierung !
02/05/2017 - Java - 2 Replies
Hallo Liebe Community, Ich stelle euch heute mein Programm Modell von dem bekannten Spiel Ping-Pong vor. Da es sich nur um ein Modell handelt habe ich die Hilfe von Processing in Anspruch genommen. Ich würde gerne mit euch zusammen weiter daran Arbeiten um den Thread immer mehr zu verfeinern. Als erstes solltet ihr über processing.org die Software "Processing" donwloaden. Eigentlich braucht man nur die "core.jar" Datei, falls man in Java programmieren will, aber ich Empfehle euch...
Hilfe plz kv diagramm
01/03/2016 - Trading - 2 Replies
hey leute kann mir jmd kurz bei dieser aufgabe helfen bitte? epvpImg: Nyanyanyanyanyanyanya!
Diagramm
07/28/2012 - Web Development - 4 Replies
Hi, kennt jemand von euch ein gutes vorgefertigtes Script, oder ein Tutorial, wie ich mit PHP und MYSQL ein Blockdiagramm darstellen kann ? Es geht darum, dass ich gerne Werte aus einer Datenbank auslesen möchte und dann in ein Blockdiagramm einfügen möchte. Das Blockdiagramm soll sich natürlich dementsprechend anpassen, also es sollte auf keinen Fall immer gleich lang bleiben und desweiteren wäre natürlich beschriftung etc auch ein muss :p Vielen Dank schon mal :)
ER-Diagramm [Datenbanken] erstellen
03/09/2008 - Off Topic - 0 Replies
Hallo, suche jemanden der mir ein ER-Diagramm erstellen kann. Es geht sich darum, dass wir einen ca 1,5 Seitigen Text bekommen haben mit Informationen und daraus sollen wir das ER-Diagramm erstellen. Da ich leider keinen Plan davon hab brauche ich nun jemanden der mir hilft. Wäre auch zu ner Gegenleistung bereit. Wäre klasse wenn sich wer meldet.
Arenapunkte Diagramm
04/18/2007 - WoW Guides & Templates - 3 Replies
Ich weiss dass es hier schon verschiedene Tools zum Berechnen von Arenapunkten zu finden sind. Hier ist aber noch ein Diagramm dazu (selbst gemacht :cool: ) http://img409.imageshack.us/img409/3983/arenapunk teyt0.png



All times are GMT +1. The time now is 04:38.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.