Computer Science Canada Brick Breaker Help |
Author: | miller6 [ Wed Jan 13, 2010 11:27 am ] |
Post subject: | Brick Breaker Help |
I am trying to make the game brick breaker on turing but am having problems with the whole ball hitting and rebounding off the sliding bar off the bottom. i was thinking collision detection but am confused , PLEASE HELP this is what i have so far: setscreen ("nocursor") setscreen ("graphics:vga") var WinId : int var ch : string (1) % box move const right := chr (203) % box move const left := chr (205) % box move var counter : int := 10 % counter for the bow moving var x := 0 % drop sflake WinId := Window.Open ("position:centre;centre,graphics:1010;695") drawfillbox (1, 1, maxx, maxy, 255) var sflake : int := Pic.FileNew ("sflake.gif") % Pic.Draw (sflake, 0, 100, picMerge) var box : int := Pic.FileNew ("box2.bmp") drawfillbox (500, 500, 625, 520, 5) drawfillbox (500, 400, 625, 420, 5) drawfillbox (550, 450, 675, 470, 5) drawfillbox (550, 550, 675, 570, 5) drawfillbox (320, 500, 445, 520, 5) drawfillbox (375, 550, 500, 570, 5) drawfillbox (320, 400, 445, 420, 5) drawfillbox (375, 450, 500, 470, 5) drawfillbox (210, 550, 335, 570, 5) drawfillbox (210, 450, 335, 470, 5) drawfillbox (160, 500, 285, 520, 5) drawfillbox (160, 400, 285, 420, 5) drawfillbox (720, 550, 845, 570, 5) drawfillbox (665, 500, 790, 520, 5) drawfillbox (665, 400, 790, 420, 5) drawfillbox (720, 450, 845, 470, 5) process movesflake (sflake : int) for decreasing y : 200 .. 0 x := x + 1 Pic.Draw (sflake, x, y, picMerge) delay (35) Pic.Draw (sflake, x, y, picXor) end for end movesflake Pic.Draw (box, 1, 1, picCopy) process movebox (box : int) loop getch (ch) if ch = right then counter := counter - 10 % Pic.Draw (box, counter + 10, 1, picCopy) elsif ch = chr (205) then counter := counter + 10 % Pic.Draw (box, counter - 10, 1, picCopy) end if Pic.Draw (box, counter, 1, picCopy) end loop end movebox fork movesflake (sflake) fork movebox (box) |
Author: | DemonWasp [ Wed Jan 13, 2010 4:34 pm ] |
Post subject: | RE:Brick Breaker Help |
Please fill out the template provided properly next time. This makes it easier for us to help you, which means it's more likely that we will help you. You need to detect when the ball has collided with the top surface of the box (which is a line segment) and then reverse its vertical direction. You probably do not need to handle collisions with the side of the box, as the ball is going off the screen anyway. |
Author: | miller6 [ Wed Jan 13, 2010 5:51 pm ] |
Post subject: | Re: Brick Breaker Help |
I am sorry, still learning how to use the templates! So would i have to construct a line segment on top of the box and have it move the same way as the box does, and then use collision detection? |
Author: | DemonWasp [ Wed Jan 13, 2010 6:03 pm ] |
Post subject: | RE:Brick Breaker Help |
You don't have to draw it, and you already know everything you need to know about it (its location). You literally only have to test whether the bottom of the ball is below the top of the box and whether the ball's X coordinate is within the area occupied by the box. Draw it out on paper if you still don't understand, it'll make it easier (I promise - I draw stuff out on paper when coding pretty frequently). |
Author: | miller6 [ Wed Jan 13, 2010 6:14 pm ] | ||
Post subject: | Re: Brick Breaker Help | ||
okay, so once i have the collision detection statement, how am i able to make it so that it bouces back up at a different angle?
|
Author: | DemonWasp [ Wed Jan 13, 2010 10:42 pm ] |
Post subject: | RE:Brick Breaker Help |
The "angle" of movement is determined by the speed of the ball in the X and Y directions (if you know enough trigonometry, angle = tan ( yspeed / xspeed ) ). If you want a different angle, simply randomize the xspeed and yspeed values - just make sure that yspeed is positive, or the ball could go down, through your paddle. If you want the ball to bounce off like you would expect, just set the value of yspeed to the negative of the old value of yspeed. This will force the ball to switch its vertical direction. You should be able to generalize that to all collisions with surfaces aligned with the X and Y axes with a bit of thought and a piece of paper and pencil. |
Author: | wysper [ Mon Apr 26, 2010 11:05 am ] |
Post subject: | RE:Brick Breaker Help |
i like brick breaker..i hope this helped lol |