1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Billard, kugeln berechnung

  • poochie
  • 9. Januar 2011 um 19:10
  • Unerledigt
  • poochie
    4
    poochie
    Mitglied
    Punkte
    105
    Beiträge
    14
    • 9. Januar 2011 um 19:10
    • #1

    Hallo,
    ich bin gerade dabei sowas wie ein billard zu programmieren.
    für die darstellung verwende ich java swing.
    ich habe ball objekte, die eine position speichern, einen a, b und c wert. diese objekte implementieren das runnable interface. in der run methode führt mit hilfe von a, b, c eine fortlaufende positionsänderung aus.
    ein objekt pooltisch (jpanel) besitzt mehrere kugeln, eine innere klasse die für den stoß durchführt (mouslistener). wird geklickt wird der abstand zur weißen kugel berrechnet und a, b und c gesetzt. der thread der kugel wird gestartet (die position der kugel fortlaufend verändert), ein weiterer thread zeichnet das spielfeld immer neu. soooo, die weiße kugel läuft nun schon in ordnung, nun zu meinem problem: trifft die weiße kugel auf eine andere soll wenn nicht schon gestartet einen neuen thread erstellen und die kugel rollen lassen (ich überprüfe einfach ob die position jeder kugel einer anderen nahe ist), mein problem ist nun die änderung der laufbahn der kugeln, diese berechnungen scheinen mir sehr komplex, wie löse ich das am besten.

    nochwas: in der angabe steht:Wer Lust auf Realismus hat, kann die Kollision einzelner Kugeln mittels eines 2-dimensionalen elastischen Stoßes realisieren. Also ich wär auch mit Unrealismus zufrieden....

    Danke schonmal für die Hilfe

  • damike
    8
    damike
    Mitglied
    Reaktionen
    11
    Punkte
    681
    Beiträge
    111
    • 9. Januar 2011 um 19:32
    • #2

    Also ich glaube das ist nicht so einfach - aber ich glaube du suchst was über Impulse http://www.brgkepler.at/~rath/pl_an/ue_impuls/bill_arb.html
    Wie du siehst kannst du nicht nur die geschossene Kugel und die getroffene Kugel hernehmen, sondern musst auch angrenzende berücksichtigen

    LG

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 9. Januar 2011 um 20:33
    • #3

    Wenn du für jede Kugel einen eigenen Thread benutzt, wie kannst du dann sicher stellen, dass sich alle Kugeln gleichzeitig fortbewegen? Irgendwie musst du das doch synchronisieren.

  • poochie
    4
    poochie
    Mitglied
    Punkte
    105
    Beiträge
    14
    • 9. Januar 2011 um 20:58
    • #4

    hm, ja ich dachte mir auch da gibt es sicher ein willdes durcheinander, die angabe setzte dies aber vorraus (also dass die kugel runnable implemetieren muss), im moment habe ich noch nicht getestet wie sich das ganze verhält wenn dann mehrere threads laufen, wie könnte ich das ganze synchronisieren?

    edit: in der angabe steht noch wir können das executor interface benutzen, denke das könnte das ganze regeln?!? hat jemand vielleicht ne gute beschreibung/erklärung im internet?

    Einmal editiert, zuletzt von poochie (9. Januar 2011 um 21:26)

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 10. Januar 2011 um 18:46
    • #5

    Wenn es in der Angabe stehst, kommst du darum nicht herum. Ich halte es allerdings für den falschen Ansatz. Das Executor Interface ist nur als Erweiterung für komplexe Pools gedacht, wo ein Thread den nächsten steuert. Man kann damit zB eine verkettete Liste von Threads in unbestimmter Größe elegant erzeugen. In deinem Fall halte ich es aber für Overkill.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung