Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 13:36

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

Advertisement
Bitcoin Dice Game


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: 541
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
 
elite*gold: 0
Join Date: Jul 2011
Posts: 1,676
Received Thanks: 724
Nach welcher Architektur willst du das Programm denn aufbauen? MVC?


XYZ-Cannon is online now  
Thanks
1 User
Old 02/21/2017, 12:13   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 568
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: 541
Received Thanks: 112
das gefällt mir ziemlich gut

http://i.epvpimg.com/bJmFgab.png


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

http://i.epvpimg.com/bJmFgab.png
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: 541
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



« Brauche Hilfe, Facebook! | c++ / c# oder phyton »

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 +2. The time now is 13:36.


Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

BTC: 33E6kMtxYa7dApCFzrS3Jb7U3NrVvo8nsK
ETH: 0xc6ec801B7563A4376751F33b0573308aDa611E05

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