CAN ANYONE EXPLAIN THESE CODE??
Author 
Message 
xmen

Posted: Fri Apr 02, 2004 3:37 pm Post subject: CAN ANYONE EXPLAIN THESE CODE?? 


ok in this code with ball collision:
code: 
View.Set ("position:centre;centre,graphics:300;300,title:Bouncing Balls,nobuttonbar")
var totalballs : int := 15 %NOTE : to increase how many balls will spawn this number must be at least equal to the max number of balls
var x, y, dx, dy : array 1 .. totalballs of int
var dx_temp, dy_temp : array 1 .. totalballs of real
var movedist1, movedist2, collangle, mass, a1, a2, nX, nY, optimisedP : real
var px, py : int
px := maxx div 2
py := maxy div 2
var keys : array char of boolean
var hit : boolean := false
var respawn : boolean := true
var respawnx, respawny : int
var lives : int := 3
const ballradius := 8
const ballcollidedistance := ballradius * 2
var timer : int
setscreen ("offscreenonly")
mass := 1
for i : 1 .. totalballs
x (i) := Rand.Int (20 + ballradius, maxx  20  ballradius)
y (i) := Rand.Int (20 + ballradius, maxy  20  ballradius)
dx (i) := Rand.Int (3, 3)
dy (i) := Rand.Int (3, 3)
end for
proc drawscreen
for i : 1 .. maxx by 20
Draw.FillStar (i, 0, i + 20, 20, 2)
Draw.FillStar (i, maxy  20, i + 20, maxy, 2)
end for
for k : 20 .. maxy  20 by 20
Draw.FillStar (0, k, 20, k + 20, 2)
Draw.FillStar (maxx  20, k, maxx, k + 20, 2)
end for
locate (3, 3)
end drawscreen
proc ball_movement
for i : 1 .. totalballs
%wall bouncing
if x (i) > maxx  20  ballradius then
dx (i) := dx (i)
x (i) += dx (i)
end if
if x (i) < 20 + ballradius then
dx (i) := dx (i)
x (i) += dx (i)
end if
if y (i) > maxy  20  ballradius then
dy (i) := dy (i)
y (i) += dy (i)
end if
if y (i) < 20 + ballradius then
dy (i) := dy (i)
y (i) += dy (i)
end if
x (i) += dx (i)
y (i) += dy (i)
drawfilloval (x (i), y (i), ballradius, ballradius, blue)
end for
end ball_movement
proc balls_collide
for i : 1 .. totalballs
for k : i .. totalballs
if k not= i then
if Math.Distance (x (i), y (i), x (k), y (k)) < ballcollidedistance then
%CREDIT : THOUGHTFUL
if y (k)  y (i) not= 0 and x (k)  x (i) not= 0 then
collangle := arctand ((y (k)  y (i)) / ((x (k)  x (i))))
nX := cosd (collangle)
nY := sind (collangle)
a1 := x (i) * nX + y (i) * nY
a2 := x (k) * nX + y (k) * nY
optimisedP := (2.0 * (a1  a2)) / (mass + mass)
x (i) := x (i)  (round (optimisedP) * round (mass) * round (nX))
y (i) := y (i)  (round (optimisedP) * round (mass) * round (nY))
x (k) := x (k) + (round (optimisedP) * round (mass) * round (nX))
y (k) := y (k) + (round (optimisedP) * round (mass) * round (nY))
% moves the balls forward a step so they dont get stuck with each other( but the balls will still stick)
x (i) += dx (i)
y (i) += dy (i)
x (k) += dx (k)
y (k) += dy (k)
end if
end if
end if
end for
end for
end balls_collide
proc player_control
Input.KeyDown (keys)
if keys (KEY_UP_ARROW) then
py += 2
end if
if keys (KEY_DOWN_ARROW) then
py = 2
end if
if keys (KEY_RIGHT_ARROW) then
px += 2
end if
if keys (KEY_LEFT_ARROW) then
px = 2
end if
drawfilloval (px, py, ballradius, ballradius, brightred)
end player_control
proc player_boundaries
if px > maxx  50  ballradius then
px := maxx  50  ballradius
end if
if px < 50 + ballradius then
px := 50 + ballradius
end if
if py > maxy  50  ballradius then
py := maxy  50  ballradius
end if
if py < 50 + ballradius then
py := 50 + ballradius
end if
end player_boundaries
proc relocate
lives = 1
delay (1000)
px := 20 + ballradius
py := 20 + ballradius
end relocate
loop
timer := Time.Elapsed
totalballs := round (timer / 5000)
exit when totalballs > 20 or hit = true
cls
drawscreen
player_control
player_boundaries
ball_movement
balls_collide
for k : 1 .. totalballs
if Math.Distance (px, py, x (k), y (k)) < ballcollidedistance then
hit := true
end if
end for
View.Update
delay (10)
end loop
delay (500)
cls
locate (7, 5)
put "Thanks for playing,\n Cervantes"

how does the collision part (credit THOUGHTFUL) works?? i dun reli understand but i need to inorder to explain to my teacher
so if someone knos plz tell me thx 





Sponsor Sponsor



recneps

Posted: Fri Apr 02, 2004 5:33 pm Post subject: (No subject) 


i dont know sin/cos/tan.
if you do not know them, the easiest way is keep track of all the points, and math.distance between them all
if its less than radius(times 2!!!) then make them move opposite ways. 





Hackster

Posted: Fri Apr 02, 2004 6:45 pm Post subject: (No subject) 


UUm did you say explain to your teacher ??? does that mean you are goimg to pass Cervante's program off as your own or is it that he/she doesn't know the code either and they want to know ??? 





Jodo Yodo

Posted: Fri Apr 02, 2004 7:16 pm Post subject: (No subject) 


Jebus, xmen, PLEASE stop posting forums where the entire thing is capital letters, and with multiple question marks. This is like, the fifth forum you've made like this. 





Jodo Yodo

Posted: Fri Apr 02, 2004 7:18 pm Post subject: (No subject) 


Due to my incredibly 1337 skills in Math, I can tell you that sine and cosine are used to calculate a certain point on the winding function (this is trigonometry). It's advanced Grade 10 Enriched math, and it does some funky stuff with the Pythagorean theorum (I like trigonometry, it's really useful). And are you seriously getting our programs and then submitting them to your teacher? Because you've asked for like, eight programs so far. Shame on you.
SUPER JUICY! 





xmen

Posted: Fri Apr 02, 2004 9:36 pm Post subject: (No subject) 


well yes i did ask n look for programs from this site, n yes mostly for hwk...however im like combining programs together depending on my needs, moreoever i still put credits on
i actually told my teacher that i got some coddes from sites, he said its ok as long as i understand them n can explain......this is the purpose of learning
so u guys may think im stealin programs or wutever, but im just learning from people just like many others do 





Tony

Posted: Fri Apr 02, 2004 9:45 pm Post subject: (No subject) 


wow xman  if you got a question about the code (especially that you found on this site anyways) why not post a reply to that thread instead of just taking the code and pasting it elsewhere... without even giving a credit of where you took it from
But yeah, collision is based on trig and momentum. You cover basic trig end of grade 10 math and inertia in grade 12 physics 
Tony's programming blog. DWITE  a programming contest. 




Dan

Posted: Fri Apr 02, 2004 9:47 pm Post subject: (No subject) 


lreaning = reading some ones code and then making somting like it based on the conspetes.
stealing = copying some ones code and hading it in as your own.
you should at least ask the authour of the code if you are direcly copying and pasting code in to your own or just hading it in as your own. 
Computer Science Canada
Help with programming in C, C++, Java, PHP, Ruby, Turing, VB and more! 




Sponsor Sponsor



Cervantes

Posted: Sat Apr 03, 2004 2:08 pm Post subject: (No subject) 


If your teacher asks you about collision code... or better yet, before he marks your program, tell him that you did not right the code for the collision data. Tell him the math is too advanced, and that you haven't learned it in math class yet (not good if you had math last semester). Just use the collision data code, with credit to thoughtful, and rewrite the entire program, or as much as you can do (with credit to me for things you can't do, if there are anythings in there that you can't do ) 






