Please helpme with angles and make the bricks work
Author |
Message |
Codi
|
Posted: Tue May 09, 2006 8:37 am Post subject: Please helpme with angles and make the bricks work |
|
|
%paddle global vaariables
var pwidth : int := 75 % paddle width
var plen : int := 20 %paddle length
var pclr : int := brightgreen % paddle color
var pxpos : int := maxx div 2 % the paddle starts in the middle of the screen
var pypos : int := 50 % the paddle is 50 high of of the ground
%ball variables
var count : int := 0
const right := 2
const left := -2
var bxpos, bxpostest : int := maxx div 2
var bypos, bypostest : int := maxy div 2
var bsize := 10
var bclr := yellow
var direction : int := left
var angle : real := 315
var hitBrick : boolean := false
var counter : int :=0
var lives : int := 3
proc Bricks
for x : 0 .. maxx by 50
for y : 250 .. maxy - 40 by 20
Draw.FillBox (x, y, x + 45, y + 15, black)
end for
end for
end Bricks
proc menu
var start : string
put " Would You Like to Play X-Treme Brick?"
put " Press Y For Yes And N for No"
get start
if start = "N" or start = "n" then
locate (25,24)
put " Poo Head!"
delay (2000)
quit
end if
cls
end menu
menu
Draw.Line (0, maxy - 40, maxx, maxy - 40, black)
Bricks
proc Lives
Draw.FillOval (10, maxy - 20, 5, 5, black)
Draw.FillOval (30, maxy - 20, 5, 5, black)
Draw.FillOval (50, maxy - 20, 5, 5, black)
end Lives
Lives
% paddle proc
proc drawpaddle
Draw.FillBox (pxpos, pypos, pxpos + pwidth, pypos + plen, pclr)
end drawpaddle
proc death
lives := lives - 1
locate (20, 20)
put " YoU DieS "
delay (500)
cls
Bricks
Lives
if lives = 2 then
Draw.FillOval (10, maxy - 20, 5, 5, black)
Draw.FillOval (30, maxy - 20, 5, 5, black)
Draw.FillOval (50, maxy - 20, 5, 5, white)
Draw.Line (0, maxy - 40, maxx, maxy - 40, black)
elsif lives = 1 then
Draw.FillOval (10, maxy - 20, 5, 5, black)
Draw.FillOval (30, maxy - 20, 5, 5, white)
Draw.FillOval (50, maxy - 20, 5, 5, white)
Draw.Line (0, maxy - 40, maxx, maxy - 40, black)
elsif lives = 0 then
Draw.FillOval (10, maxy - 20, 5, 5, white)
Draw.FillOval (30, maxy - 20, 5, 5, white)
Draw.FillOval (50, maxy - 20, 5, 5, white)
Draw.Line (0, maxy - 40, maxx, maxy - 40, black)
end if
bxpos := maxx div 2
bypos := maxy div 2
if lives = 0 then
locate (20, 20)
put " You have No Lives Left Play Again:)"
delay (1000)
cls
Bricks
end if
end death
proc pmove (ch : string (1))
if ord (ch) = 203 then % move the paddle left
Draw.FillBox (pxpos + pwidth - 10, pypos, pxpos + pwidth, pypos + plen, white) % erase the right end of the paddle
pxpos := pxpos - 10 % move to the left
if pxpos < 0 then %redraws the paddle in new position
pxpos := 0 % the paddle can't go outside of the screen boundaries on the right
end if
end if
if ord (ch) = 205 then % paddle moves to the right
Draw.FillBox (pxpos, pypos, pxpos + 10, pypos + plen, white) % erase the left end of the paddle
pxpos := pxpos + 10 % redraws the paddle in new position
if pxpos > maxx - pwidth then
pxpos := maxx - pwidth % the paddle can't go outside of the screen boundaries on the left
end if
end if
drawpaddle % procedure
end pmove
%bouncing off a horizontal surface
proc angleMod1 %for hitting bricks paddle or roof
angle := 360 - angle
end angleMod1
%bouncing off a vertical surface
proc angleMod2
if angle <= 180 then
angle := 180 - angle
elsif angle <= 360 then
angle := 180
elsif angle = 225 then
angle := 315
elsif angle = 315 then
angle := 225
end if
end angleMod2
proc bmove
%change 125 to change speed of ball
%move the ball
Draw.FillOval (bxpos, bypos, bsize, bsize, white) %erase ball
bxpos := bxpos + round (cosd (angle)) %new position
bypos := bypos + round (sind (angle))
bxpostest := bxpos + round (10 * cosd (angle))
bypostest := bypos + round (10 * sind (angle))
if bxpostest > 0 and bxpostest < maxx and bypostest > 0 and bypostest < maxy then
if View.WhatDotColour (bxpostest, bypostest) not= white then %hit paddle
angleMod1 %bounce
end if
end if
Draw.FillOval (bxpos, bypos, bsize, bsize, bclr)%redraw
if bxpos > maxx or bxpos < 0 then
angleMod2 %vertical bounce
if ( angle < 0) or( angle> 270 and angle> 360) then
angleMod2
end if
if angle = 170 or angle = 180 then
angle:= 315+
end if
if bypos > maxy then
angleMod1 %horizontal bounce
end if
if bypos <= 0 then
death
end if
end if
put "You are travaling at a " ,angle, " degree angle"
end bmove
var ch : string (1) := " "
var x, y : int
%mainline
loop
locate (1,30)
if hasch then
getch (ch)
if ord (ch) = 203 or ord (ch) = 205 then %left/right
pmove (ch)
end if
else
ch := " "
end if
counter := counter + 1
drawpaddle
if counter = 50 then
bmove
counter := 0
end if
end loop |
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
jamonathin
![](http://compsci.ca/v3/uploads/user_avatars/57683465145f851a43dd9a.gif)
|
Posted: Tue May 09, 2006 9:40 am Post subject: (No subject) |
|
|
Well, you're batting 1000. Wrong forum and no code tags. Post something like this in Turing Help. Also, i personally dont even want to touch this code.
There are tonnes of blockout games on this forum, so if you search for one, im shure you can find one that helps you.
You can learn a lot from this im shure.
P.S. When asking for help, be more specific on what you need help on. So the title of your topic doesn't have to be your question exactly.
Your title could have been something like: Brickout Trouble
And your comment inside the topic could have been a little more specific. Because "make bricks work" means nothing, lol. ![Wink Wink](images/smiles/icon_wink.gif) |
|
|
|
|
![](images/spacer.gif) |
|
|