so i was trying out the trig functions by making pong
Author |
Message |
limited_skillz
|
Posted: Mon Mar 15, 2004 12:17 am Post subject: so i was trying out the trig functions by making pong |
|
|
damn i have no idea what im doing, the ball flies everywhere and anywhere
my moving of the ball is in a case in a process called ball
dont comment about the game though, i just wanted to make a rough one, really fast without much work, i dont think i had to use processes or anything, but whatever, this is about trig
can you give me a few tips or something about using trig properly
code: | % Stuart Seupaul
% March 13, 2004
% pong.t
View.Set ("offscreenonly")
var chars : array char of boolean
const p1x : int := 75
const p2x : int := maxx - 75
const paddleSize : int := 20
var p1y, p2y : int
p1y := maxy div 2
p2y := maxy div 2
var ballx, bally : int
ballx := maxx div 2
bally := maxy div 2
const ballSize : int := 10
var processOK : boolean := true
var score : boolean := false
var p1sc, p2sc : int
p1sc := 0
p2sc := 0
process update
loop
View.Update
processOK := true
delay (3)
processOK := false
exit when score = true
end loop
end update
process ball (direction : int)
var balld : int
balld := direction
var rP1, rP2, trigAmount : int
loop
if bally + 5 > maxy - 36 then
trigAmount := Rand.Int (25, 80)
balld := Rand.Int (5, 6)
end if
if bally - 5 < 35 then
trigAmount := Rand.Int (10, 80)
balld := Rand.Int (7, 8)
end if
if ballx + 5 > p2x - 15 and bally <= p2y - 15 and bally >= p2y - 30 then
balld := 2
end if
if ballx + 5 > p2x - 15 and ((bally <= p2y + 10 and bally >= p2y - 15) or (bally <= p2y - 30 and bally >= p2y - 60)) then
trigAmount := Rand.Int (10, 80)
loop
balld := Rand.Int (1, 8)
exit when balld = 7 or balld = 5
end loop
end if
if ballx - 5 < p1x and (bally <= p1y - 15 and bally >= p1y - 30) then
balld := 1
end if
if ballx - 5 < p1x and ((bally <= p1y + 10 and bally >= p1y - 15) or (bally <= p1y - 30 and bally >= p1y - 60)) then
trigAmount := Rand.Int (10, 80)
loop
balld := Rand.Int (1, 8)
exit when balld = 8 or balld = 6
end loop
end if
% heres where to modify, just edit 5+, i put what each one does
case (balld) of
label 1 :
ballx += 10 % right
label 2 :
ballx -= 10 % left
label 3 :
bally += 5 % up
label 4 :
bally -= 5 % down
label 5 :
ballx -= 5 * (1 + ceil (sin (trigAmount))) % down left
bally -= 5 * (1 + ceil (cos (trigAmount)))
label 6 :
ballx += 5 * (1 + ceil (sin (trigAmount))) % down right
bally -= 5 * (1 + ceil (cos (trigAmount)))
label 7 :
ballx -= 5 * (1 + ceil (sin (trigAmount))) % up left
bally += 5 * (1 + ceil (cos (trigAmount)))
label 8 :
ballx += 5 * (1 + ceil (sin (trigAmount))) % up right
bally += 5 * (1 + ceil (cos (trigAmount)))
end case
if processOK = true then
drawfilloval (ballx, bally, ballSize, ballSize, blue)
delay (15)
drawfilloval (ballx, bally, ballSize, ballSize, 0)
end if
if ballx > maxx - 45 or ballx < 40 then
if ballx > maxx - 45 then
p1sc += 1
elsif ballx < 40 then
p2sc += 1
end if
ballx := maxx div 2
bally := maxy div 2
score := true
exit
end if
end loop
end ball
process enemyPaddle
loop
if bally + 20 > p2y and ballx > maxx div 2 then
if p2y + 5 < maxy - 25 then
p2y += 5
end if
end if
if bally - 20 < p2y - 50 then
if p2y - 5 > 75 then
p2y -= 5
end if
end if
if processOK = true then
drawfillbox (p2x, p2y, p2x - 20, p2y - 50, red)
delay (15)
drawfillbox (p2x, p2y, p2x - 20, p2y - 50, 0)
end if
exit when score = true
end loop
end enemyPaddle
% main
locate (1, 1)
put "Press any key to start."
loop
exit when hasch
end loop
locate (1, 1)
put ""
for i : 1 .. 3
drawbox (25, 25, maxx - 25, maxy - 25, 7)
fork update
fork enemyPaddle
fork ball (Rand.Int (1, 4))
loop
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) then
if p1y + 5 < maxy - 26 then
p1y += 5
end if
end if
if chars (KEY_DOWN_ARROW) then
if p1y - 55 > 26 then
p1y -= 5
end if
end if
if processOK = true then
drawfillbox (p1x, p1y, p1x - 20, p1y - 50, 7)
delay (10)
drawfillbox (p1x, p1y, p1x - 20, p1y - 50, 0)
end if
exit when score = true
end loop
color (54)
locate (1, 1)
put "Player 1: ", p1sc ..
color (red)
put " Player 2: ", p2sc
loop
exit when hasch
end loop
delay (100)
score := false
end for
|
|
|
|
|
|
|
Sponsor Sponsor
|
|
|
jonos
|
Posted: Mon Mar 15, 2004 12:32 am Post subject: (No subject) |
|
|
thats som pretty cool stuff, but the ball kindof bounces at weird angles and atuff like that. i don't know trig, but you don't have to use trig for pong, i know shorthair made one in blitz you can check out, or zylum also made a really simple one that you can look at.
|
|
|
|
|
|
limited_skillz
|
Posted: Mon Mar 15, 2004 12:39 am Post subject: (No subject) |
|
|
thanks, i thought ppl would call me a n00b lol, if you change all the values in the case to 5 it works normal
i was just trying to experiment with trig stuff to make crazy (but not too crazy) angles
right now im checking some source code for other trig stuff, but its just not clicking, i need like a full in depth tutorial, ill check the net for one
|
|
|
|
|
|
jonos
|
Posted: Mon Mar 15, 2004 12:46 am Post subject: (No subject) |
|
|
you should learn trig in school, i have tried because we haven't gotten to that yet in math at school, but i just didn't understand that, but ive heard that once you do it, its really easy.
|
|
|
|
|
|
Cervantes
|
Posted: Mon Mar 15, 2004 9:35 am Post subject: (No subject) |
|
|
It is really easy. I don't really know it right now, but my friend taught me it on the bus going to school one day. Course, I forgot most of it because I didn't actually use it. But it is not complicated.
Using trig: You can either use x speed and y speed values, or you can use angles, velocities, and weights.
for x speed and y speed check out thoughtful's pool
for angles, velocities, and weights, check out Homer's Tutorial
Description: |
Here's a simple Pong program I made that uses the xspeed and yspeed method: credit to throughtful for the collision data! |
|
Download |
Filename: |
Circle Pong.t |
Filesize: |
4.13 KB |
Downloaded: |
208 Time(s) |
|
|
|
|
|
|
AsianSensation
|
Posted: Mon Mar 15, 2004 9:46 am Post subject: (No subject) |
|
|
well, for pong, isn't all you need is the angle of incidence = angle of reflection? The speed at which it bounces back depends on the material of the paddle etc, you can make up those values yourself. I don't see the incidence angle = reflectiona angle part, maybe thats why?
|
|
|
|
|
|
Mazer
|
Posted: Mon Mar 15, 2004 11:08 am Post subject: (No subject) |
|
|
In reality it would also depend on the direction in which the paddle is moving. If they collide while, say, the paddle is moving up while the ball is moving down, the vertical component of the ball's velocity wouldn't be as great as if the ball and paddle were moving in the same direction.
Then again, it's pong, so everything is in 45 degree angles as I remember.
|
|
|
|
|
|
|
|