Autor Beitrag
Rian032
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 14.04.10 19:55 
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) :
ausblenden 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 user profile iconNarses: Quote- durch Delphi-Tags ersetzt


Zuletzt bearbeitet von Rian032 am Do 15.04.10 10:33, insgesamt 2-mal bearbeitet
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 15.04.10 10:33 
bitte..die wände sind jetzt nicht dabei
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Do 15.04.10 15:21 
Ui, viel hübscher. :)

Der Knackpunkt müsste diese Stelle sein:
ausblenden 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:
ausblenden Delphi-Quelltext
1:
if (ball.top = block.top + block.height) ...					


Beste Grüße