BPS #6: Synchrone Bewegung - Auswertung
Übersicht

![]() |
XeresModeratorBetreff: BPS #6: Synchrone Bewegung - Auswertung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieder ist eine Runde um!
Das war die Aufgabe Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern. Diskussion Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen. Nächste Aufgabe In drei Tagen, am 23. April wird die Musterlösung nach editiert und die nächste Aufgabe eingestellt. Viel Spaß & viel Erfolg! Musterlösung: BlitzMax: [AUSKLAPPEN] SuperStrict ' empfohlen |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am Sa, Apr 23, 2011 19:26, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mein Beitrag für Bmax ![]() BlitzMax: [AUSKLAPPEN] SuperStrict Sollte genügent auskommentiert sein, sonst einfach fragen ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN]
|
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN]
Ich habe im Moment leider keine Zeit was genaueres dazu zu schreiben, aber die Kommentare sollten ausreichend sein. Falls irgendetwas unklar ist, werde ich gerne später dazu Stellung nehmen. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, auch ich hab mal was gemacht (grad eben ![]() Eigentlich hab ich vorgehabt, den optionalen Teil wegzulassen, weil dieser Grafik-Anhalte-Effekt hier in Linux eh nicht auftritt und ich deshalb nicht testen kann, aber BlitzMoritz hat ja dann gezeigt wie es doch geht. Danke für die Idee! Programm anhalten also mit Leertaste. BlitzMax: [AUSKLAPPEN] SuperStrict |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr erfreulich, dass es diesmal mehrere schöne Lösungen gibt, Bravo ![]() Beim Durchstöbern sind mir jedoch ein paar Kleinigkeiten aufgefallen. Am interessantesten ist natürlich das Konzept, wie die Kollisionsfrage gelöst worden ist. Dabei habe ich mir erlaubt, alle mit dem "Härtetest" von 100 Kreisen zu testen. ![]() Bei der Distanzberechnung die Wurzel zu verwenden, wie alle drei es tun, ist nicht notwendig. Den absoluten Betrag beim Abstand der einzelnen Koordinaten bei blackgecko schon gar nicht, weil später sowieso quadriert wird: BlitzMax: [AUSKLAPPEN] Method distance:Float(other:TCircle) 'berechnet den Abstand zweier KreiseBei s-Key erschließt sich mir diese Fallunterscheidung nicht: BlitzMax: [AUSKLAPPEN] If (dist < ball._ballRadius*2) Or (dist < another._ballRadius*2) ThenSelbst wenn die Radien verschieden wären (was gemäß Aufgabe nicht der Fall ist), müsste man das doch eher so formulieren: BlitzMax: [AUSKLAPPEN] If dist < ball._ballRadius + another._ballRadius Then blackgeckos Kollisionsansatz ist am einfachsten, bei 100 Kreisen gibt es da leider fast immer welche, die nie mehr voneinander loskommen (ich weiß, 100 Kreise waren nicht verlangt ![]() s_Key versucht auf zweierlei Arten zu verhindern, dass Kreise aneinander kleben: Erstens merkt er sich in einer Variablen, ob ein Kreis mit einem anderen bereits kollidiert ist, d.h. er will verhindern, dass genau diese Kollisionsfrage erneut gestellt wird. Allerdings berücksichtigt er dabei die anderen Kreise nicht mehr. Deren Kollisionsabfragen mit diesem einen Kreis finden von nun an nicht mehr statt und sie können sich unkontrolliert nähern, was das Folgende problematisch werden lässt: Denn er löscht zweitens diesen Speicher nach einer festgelegten Zeit von einer Viertelsekunde, was etwas willkürlich ist. Haben es zwei Kreise innerhalb dieser Zeit nicht geschafft, sich zu lösen, werden sie es von nun an kaum noch tun. ToeB's Idee, die Kreise bei Kollision sofort um den notwendigen Abstand wegspringen zu lassen, ist da zuverlässiger, allerdings nur wenn genug Platz da ist. Bei 100 Kreisen wird es schon etwas eng und es kann passieren, dass das große Wegspringen sofort wieder eine dichte Kollision mit einem anderen Kreis verursacht. Irgendwann klappt es jedoch und alle 100 Kreise haben sich gelöst. (Auch bei mir dauert es ein paar Sekunden, aber ich glaube, ein bisschen schneller). Für einen Fehler halte ich es allerdings, wenn er das Zeichnen der Kreise in die Update-Methode steckt, die die Positionen neu berechnet. Ich finde, die hat da nichts zu suchen. Wenn man nämlich dort zwischen seinem "Flip 0" und "Cls" folgende Kontrolle einschiebt und benutzt: BlitzMax: [AUSKLAPPEN] If KeyHit(KEY_RETURN) Then Delay 2000... dann sieht man, dass beim willkürlichen Anhalten des Programms alle fehlenden Kreise "verschmiert" nachgemalt werden, was wohl nicht beabsichtigt ist, weil es nicht schön aussieht und unnötig Rechenzeit kostet. |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie ich schon im Aufgabenthread schrieb, war es die erstbeste möglichkeit, die mir eingefallen ist und leider hatte ich danach keine Zeit mehr um mich weiter damit auseinander zu setzen.
Bei 10 Kreisen habe ich es einige Minuten durchlaufen lassen und dabei zugeschaut, wie sich alle Kreise schön voneinander abstoßen. Natürlich könnte es unter "mysteriösen" Umständen vorkommen, dass sich zwei verhaken, aber das hält auch nicht ewig an. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group