Entwickler-Ecke
Multimedia / Grafik - Delphi Problem -> Reflektionen Shape auf Shape
Rian032 - Mi 14.04.10 19:55
Titel: Delphi Problem -> Reflektionen Shape auf Shape
Wir programmieren in der schule zurzeit ein Spiel im Stile von Break It....wir sind inzwischen so weit das der Ball am Schläger reflektiert..an den Wänden und das am Boden dann auch ein "verloren" eingeblendet wird, nun will ich diese Art der Reflektion auch auf die abzuschießenden Blöcke übertragen...mein problem ist dabei aber, dass egal wie ich die Reflektionsformel umschreibe der Ball bei den Blöcken nur an der Oberkante des Blocks reflektiert wird und ich weiß echt einfach nicht weiter....also so siehts bis jetzt aus (Reflektion am Schläger und Oberseite des Blocks) :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| if (ball.top = schläger.top-ball.height) and ((ball.left >= schläger.left) and (ball.left+ball.width <= schläger.left + schläger.width) or ((ball.left <=schläger.left) and (ball.left + ball.width >= schläger.left))) then begin y := -y;
end; if shape2.visible = true then begin if (ball.top = block.top-ball.height) and ((ball.left >= block.left) and (ball.left+ball.width <= block.left + block.width) or ((ball.left <=block.left) and (ball.left + ball.width >= block.left))) then begin block.visible:=false; y := -y;
end; end; |
bei der außenkante und bei der Unterseite komm ich eifnach auf keinen Punkt....könnt ihr da vielleicht helfen?
Moderiert von
Narses: Quote- durch Delphi-Tags ersetzt
Tastaro - Do 15.04.10 09:00
Ich finde es gerade schwierig mich durch dein Programm zu denken weil die Variablennamen so uneindeutig gewählt sind. Was ist Shape1, Shape2 und Reflektor. Kannst du die bitte so umbenennen, dass man gleich weiß was was ist? Also "Ball", "Schlaeger", "Block", "Wand" oder so ähnlich. Und vielleicht die Zeilen etwas kürzen damit man nicht so viel scrollen muss und am Ende der Zeile vergessen hat was am Anfang steht.
Beste Grüße
Rian032 - Do 15.04.10 10:33
bitte..die wände sind jetzt nicht dabei
Tastaro - Do 15.04.10 15:21
Ui, viel hübscher. :)
Der Knackpunkt müsste diese Stelle sein:
Delphi-Quelltext
1:
| if (ball.top = block.top-ball.height) ... |
Da wird ja überprüft ob die Y-Position von Block und Ball irgendwie zusammen passen. Ich verstehe nicht wofür du
block.top-ball.height eingeführt hast. Wenn der Ball an der Unterseite abprallen soll, müsste es doch eigentlich heißen:
Delphi-Quelltext
1:
| if (ball.top = block.top + block.height) ... |
Beste Grüße
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!