Help on Metal Gear Solid style game
Author 
Message 
jedibob

Posted: Fri Jan 16, 2004 3:34 pm Post subject: Help on Metal Gear Solid style game 


i am new to turing and i want to make a game like the radar on the Metal Gear games, (I thought it would be easy). For anyone who knows what i am talking about, i wanted to do something like the VR missions, where you have to get to the goal without being seen. My characters are little circles and i finally got them to move. I was wondering if i could get help making larger somewhat transparent cirles over the enemies so that if I go into that range i will get caught by the enemy?
ps what are bits, what are they for??






Sponsor Sponsor



Tony

Posted: Fri Jan 16, 2004 3:47 pm Post subject: (No subject) 


you could draw semitransparent circles using RGB. module, but my guess is that resulting speed will make the game unplayable

Tony's programming blog. DWITE  a programming contest. 




jedibob

Posted: Mon Jan 19, 2004 10:00 am Post subject: (No subject) 


i put yellow circles under them instead of semitransparent ones over them.






Mazer

Posted: Mon Jan 19, 2004 10:19 am Post subject: (No subject) 


Make a picture in paint, then make half of the pixels white (do it in a checkerboard pattern). Then draw the picture using picMerge and it'll be as semitransparent as you can get it using Turing whilst keeping a decent speed.






Dan

Posted: Mon Jan 19, 2004 11:18 am Post subject: (No subject) 


i bivle the new turing 4.0.5 will/dose have new opttions for transparcenys in pictuchers.

Computer Science Canada
Help with programming in C, C++, Java, PHP, Ruby, Turing, VB and more! 




jedibob

Posted: Mon Jan 19, 2004 3:02 pm Post subject: (No subject) 


i need help again, i want to make it so my character (a filled in circle) cant pass through walls.






jedibob

Posted: Mon Jan 19, 2004 3:39 pm Post subject: (No subject) 


More Help.......... is there anyway i can declare my circle so that i can use it in an if statement??, or its coords?
for example:
if CIRCLECOORDS= x,y,x2,y2= whatever then
cls
put"you got caught"






Mazer

Posted: Mon Jan 19, 2004 6:10 pm Post subject: (No subject) 


Hacker Dan wrote: i bivle the new turing 4.0.5 will/dose have new opttions for transparcenys in pictuchers.
As far as I know, the commands are just to set which colour in the picture will be transparent... which if I'm not mistaken was already possible.
jedibob, use the force... no, wait, use the coords (and the radius). Compare the distance from the centre of your circle to some point with the radius of the circle, and if the radius is greater or equal, they've collided. In the most recent update to turing, they've actually made a note of explain collision detection. And in case you don't have the latest version of turing, here's the source: (I sure hope holtsoft won't be so petty as to get upset about sharing example code)
code: 
% The "Math.Distance" program.
const RADIUS := 75
loop
var x1, y1, x2, y2 : int
x1 := Rand.Int (RADIUS, maxx  RADIUS)
y1 := Rand.Int (RADIUS, maxy  RADIUS)
x2 := Rand.Int (RADIUS, maxx  RADIUS)
y2 := Rand.Int (RADIUS, maxy  RADIUS)
cls
drawfilloval (x1, y1, RADIUS, RADIUS, brightred)
drawfilloval (x2, y2, RADIUS, RADIUS, brightgreen)
locate (1, 1)
if Math.Distance (x1, y1, x2, y2) < RADIUS * 2 then
put "The two circles touch"
else
put "The two circles do not touch"
end if
delay (2000)
exit when hasch
end loop







jedibob

Posted: Tue Jan 20, 2004 9:56 am Post subject: (No subject) 


thanks, but one problem it says Distance isn't in the export list of Math






Mazer

Posted: Tue Jan 20, 2004 10:22 am Post subject: (No subject) 


jedibob wrote: thanks, but one problem it says Distance isn't in the export list of Math
Right... I'm stupid. I posted code from turing 4.0.5 in case you didn't have 4.0.5 without realizing that if you don't have 4.0.5, the code wouldn't work. Meh.
I suppose you could just change the Math.Distance to:
code: 
round (sqrt ((x2x1)**2 + (y2y1)**2))

Or something like that, it's too cold now to think...






jedibob

Posted: Tue Jan 20, 2004 10:56 am Post subject: (No subject) 


i got it to work. This is only the begining i will add more levels later.
colorback (255)
cls
color (10)
locate(10,24)
put"Welcome to.........."
delay(1000)
cls
locate(10,5)
put"Guy Who runs from ''bad'' people who may or may not violently execute him"
delay(5000)
cls
put"Instuctions"
locate(5,1)
put"Get to the goal without being seen by enemies."
delay(2000)
cls
put"These are the enemies"
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(3000)
cls
put"This is what the enemy looks like"
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,yellow)
delay(500)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,yellow)
delay(500)
drawfilloval(500,200,10,10,red)delay(500)
drawfilloval(500,200,50,50,yellow)
delay(500)
drawfilloval(500,200,10,10,red)
delay(750)
cls
put"This is the area where he will see or hear you"
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(1500)
drawfilloval(500,200,50,50,black)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,black)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,black)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,black)
drawfilloval(500,200,10,10,red)
delay(500)
drawfilloval(500,200,50,50,yellow)
drawfilloval(500,200,10,10,red)
delay(750)
cls
put"If you go into his area of vision, or hearing, you will be caught and killed"
%borrowed
delay(1500)
Draw.FillBox (0, 0, maxx, maxy, 255)
colorback (255)
color (10)
var zz : int := 1
for i : 1 .. 100
delay (50)
Draw.FillBox (100, 15, 100 + zz, 25, 54)
Draw.Box (100, 15, 200, 25, 1)
zz := zz + 1
locate (23, 13)
put "Loading... ", zz, "%" ..
end for
locate (23, 13)
put "Done Loading! " ..
delay(1000)
colorback(white)
cls
%main character
var a,b : int
a:=100
b:=100
%enemy 1
var a2,b2: int
a2:=500
b2:=200
%enemy 2
var a3,b3: int
a3:=200
b3:=100
%goal
var g1,g2 : int
g1:=620
g2:=370
var chars : array char of boolean
loop
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) then
drawfilloval(a,b,10,10,white)
b:=b+3
end if
if chars (KEY_RIGHT_ARROW) then
drawfilloval(a,b,10,10,white)
a:=a+3
end if
if chars (KEY_LEFT_ARROW) then
drawfilloval(a,b,10,10,white)
a:=a3
end if
if chars (KEY_DOWN_ARROW) then
drawfilloval(a,b,10,10,white)
b:=b3
end if
drawfilloval(a,b,10,10,red)
delay(10)
drawfilloval(a2,b2,50,50,yellow)
drawfilloval(a2,b2,10,10,red)
drawfilloval(a3,b3,50,50,yellow)
drawfilloval(a3,b3,10,10,red)
drawoval(620,370,20,20,black)
var distance := ((a2a)*(a2a) + (b2b)*(b2b))**0.5
var distance2 := ((a3a)*(a3a) + (b3b)*(b3b))**0.5
var distance3 := ((g1a)*(g1a) + (g2b)*(g2b))**0.5
var radius1:=10
var radius2:=50
var radius3:=20
%you take the square of differences of X coordinates and add
%a square of differences of Y coordinates then take a square
%root of the sum
%%%%%%
%I did (x)*(x) instead of x**2 because exponents is a function
%and it takes up more resourses then *, thus its faster
%Also **0.5 is the same as sqrt()  learn your math guys
if distance < radius1 + radius2
%might be a good idea to save radious1+radious2 as const/var
then
colorback(black)
cls
put"You have been spotted, the enemy has captured and killed you."
delay(2000)
exit
elsif distance2 < radius1 + radius2
then
colorback(black)
cls
put"You have been spotted, the enemy has violently executed you."
delay(2000)
exit
elsif distance3 < radius1 + radius3
then
colorback(black)
cls
put"You made it to the goal."
delay(2000)
exit
end if
end loop
cls
delay(1000)
quit







