Computer Science Canada Helicopter Game Help |
Author: | Conrad13 [ Thu Dec 15, 2011 8:07 pm ] | ||
Post subject: | Helicopter Game Help | ||
I'm sure everyone here has played the infamous Helicopter game where you simply click the screen to increase elevation and let go to decrease. Okay, so I am trying to make a helicopter game, I have the intro done but i need a lot of help making the environment that is passes through and so on. I also am looking to making a separate page for controls which you can view before selecting to play the game. Keeping in mind i will want it to be as realistic as possible like I want the distance to be counting in the corner of the screen and so on. I need to make it so that when the colours of the helicopter contact the colours of the environment, then it ends the game and says replay, I am not new to Turing so I will for the better part know what you guys are trying to say however don't make it to complex. This is what I have so far.
Using Turing 4.1.1 |
Author: | Aange10 [ Thu Dec 15, 2011 8:48 pm ] | ||
Post subject: | RE:Helicopter Game Help | ||
I can't even read your post, my eyes hurt. Don't post in all bold!! I'm not sure I can infer your problem, considering I could barley comprehend your giant wall of dark text. If you did state your problem, I missed it. Where do you need help? Specifically? and what have YOU tried to fix it? EDIT: I think in a lucky glance at that cannon up there, I have found your problem (?). Quote: I need to make it so that when the colours of the helicopter contact the colours of the environment, then it ends the game
|
Author: | Conrad13 [ Thu Dec 15, 2011 9:42 pm ] |
Post subject: | Re: Helicopter Game Help |
Well, I have more then a simple problem, and sorry for the text as this is my first post I didnt know what to do. But anyways basically these are my problems: - Creating a Menu where you click on the Controls or the Play and it takes you to either controls or play.( I created that intro part seen above however i do not know how to get it so that when you click it brings you to the controls or enters the game. - Then I need to basically create the game (Helicopter controls (arrow keys or mouse click), environment to which it must dodge something i do not know what yet(hopefully more then shapes). - Then the part where it measures (in the corner of the screen) the distance and after you crash it pops up and says the distance that you traveled. - Then basically a key input that brings you back to the main Home screen |
Author: | Aange10 [ Thu Dec 15, 2011 10:29 pm ] |
Post subject: | RE:Helicopter Game Help |
In the Turing Walkthrough, you can find answers to most of your questions. I expect you to go through there and read things like Keyboard Input, Mouse detection, etc. The tutorials are there for a reason. I will help you with a basic algorithm to achieve your aspirations. - When you read a tutorial on how to track clicking, you'll already be half done. Now just see if the user clicked on the play, and if it did then continue on. (etc) - Collision detections is also in the walkthrough. The biggest hint I can give you is that there is no 'camera' in Turing. The way you have a camera is your draw things closer/farther to yourself. - if I start a 0 and my x is now 500 then I've travled 500. SHould be simple. -You know how to get input, so figure out how to loop to the main menu |
Author: | Conrad13 [ Thu Dec 15, 2011 10:48 pm ] |
Post subject: | Re: Helicopter Game Help |
Thanks for the reply, it did help however still not 100% sure i am capable of like looping back to the main menu, am i supposed to name the loop so it knows what to loop back to or am i supposed to use if, then, input statements? Also how will i create the flight course? do i need to make like 1000 shapes at which the helicopter must fly through that continuously loop through each other, or do i set it to the the y2 value of a drawfillbox to a random variable? |
Author: | Aange10 [ Fri Dec 16, 2011 1:15 am ] | ||||||
Post subject: | RE:Helicopter Game Help | ||||||
Easiest thing to do would be to learn about Records and Arrays. From there you can just randomly place obsticles on your path. There are tons of ways to do one thing, but I'll show you two of the most common. Here's the easiest one, but it can make a mess sometimes.
However, a better way to go about this, if you know procedures, could be something like this:
Study up on records and arrays for your second question. You will need to have a firm grasp on for loops as well. A general gist of what you'll be doing:
There are many ways to make this better, and to customize it and optimize it. Hopefully that teaches you the concept a bit, but still read the tutorials. Nothings set in stone |
Author: | Conrad13 [ Fri Dec 16, 2011 1:25 pm ] |
Post subject: | Re: Helicopter Game Help |
Ok so i managed to update the menu a few.. i only had a few minutes at school but now atleast when the play or controls is selected, the function happens! This is what i have so far: var icolor : int var icolor2 : int var iXposition : int var iYposition : int var xdirection : int var ydirection : int var font : int var font1 : int var font2 : int var xmouse, ymouse, button : int font := Font.New ("serif:50") font1 := Font.New ("serif:25") font2 := Font.New ("serif:25") icolor2 := 21 icolor := 1 iXposition := 0 iYposition := 80 xdirection := 1 ydirection := 1 View.Set ("graphics,offscreenonly") loop Mouse.Where(xmouse,ymouse,button) Draw.Cls drawfillbox (300,240,350,260,41) % Background drawfillbox (0, 0, maxx, maxy, 100) % Cloud 1 drawfilloval (90, 350, 130, 80, white) drawfilloval (70, 280, 80, 40, white) drawfilloval (200, 310, 60, 50, white) drawfilloval (230, 380, 60, 50, white) % Cloud 2 drawfilloval (400, 150, 130, 80, white) drawfilloval (380, 80, 80, 40, white) drawfilloval (410, 220, 80, 40, white) drawfilloval (520, 110, 70, 50, white) drawfilloval (520, 190, 80, 50, white) drawfilloval (300, 180, 60, 50, white) drawfilloval (300, 120, 40, 30, white) % Helicopter drawfillbox (iXposition + 85, iYposition + 5, iXposition + 155, iYposition + 10, black) % Base Connected to Legs drawfillbox (iXposition + 100, iYposition + 10, iXposition + 105, iYposition + 20, black) % Base leg 1 drawfillbox (iXposition + 135, iYposition + 10, iXposition + 140, iYposition + 20, black) % Base leg 2 drawfillbox (iXposition + 118, iYposition + 80, iXposition + 123, iYposition + 65, black) % Main Rotor drawfillbox (iXposition + 25, iYposition + 40, iXposition + 130, iYposition + 50, black) % Rotor rectangle drawfilloval (iXposition + 120, iYposition + 85, 70, 5, icolor2) % Rotor Blades drawfilloval (iXposition + 120, iYposition + 45, 40, 30, black) % Cockpit drawfillbox (iXposition + 10, iYposition + 40, iXposition + 15, iYposition + 70, black) % Rotor rectangle drawfilloval (iXposition + 15, iYposition + 48, 15, 15, icolor2) % Rear Rotor drawfilloval (iXposition + 85, iYposition + 45, 20, 15, black) % Smaller circle from main body of helicopter Draw.Text ("Super-Heli", 190, 25, font, icolor - 1) Draw.Text ("Play", 300, 240, font1, icolor - 1) Draw.Text ("Controls", 275, 150, font2, icolor - 1) if xmouse>290 and xmouse<370 and ymouse>230 and ymouse<280 and button=1 then Draw.Cls View.Update exit end if if xmouse>270 and xmouse<390 and ymouse>140 and ymouse<190 and button=1 then Draw.Cls View.Update exit end if %drawfillbox (290,230,370,280,41) %drawfillbox (270,140,390,190,41) icolor := icolor + 1 if icolor = 62 then icolor := 1 end if icolor2 := icolor2 + 1 if icolor2 = 31 then icolor2 := 21 end if iXposition := iXposition + xdirection iYposition := iYposition + ydirection if iXposition > 445 or iXposition < 0 then xdirection := -xdirection end if if iYposition > 305 or iYposition < 80 then ydirection := -ydirection end if delay (10) View.Update end loop |
Author: | Aange10 [ Fri Dec 16, 2011 3:36 pm ] |
Post subject: | RE:Helicopter Game Help |
contrats! And I suggest wrapping your code in [ syntax = "turing"] and [ /syntax ] |
Author: | Conrad13 [ Fri Dec 16, 2011 10:40 pm ] |
Post subject: | Re: Helicopter Game Help |
Thanks Man Helped Me out a lot!! The biggest problem was knowing where to put the separate screens and if i have to loop them separately but I think i have it figured out thanks again! If i need further assistance keep me posted please thank you! |
Author: | Conrad13 [ Mon Dec 19, 2011 4:48 pm ] |
Post subject: | Re: Helicopter Game Help |
Ok, so this is my code so far i know i do not have the game going yet however I feel the need to update my post [ syntax = "turing"] var icolor : int var icolor2 : int var iXposition : int var iYposition : int var xdirection : int var ydirection : int var font : int var font1 : int var font2 : int var font3 : int var xmouse, ymouse, button : int var ch : string (1) font := Font.New ("serif:50") font1 := Font.New ("serif:25") font2 := Font.New ("serif:15") font3 := Font.New ("serif:9") icolor2 := 21 icolor := 1 iXposition := 0 iYposition := 0 xdirection := 1 ydirection := 1 View.Set ("graphics,offscreenonly,nocursor") loop Mouse.Where(xmouse,ymouse,button) Draw.Cls drawfillbox (300,240,350,260,41) % Background drawfillbox (0, 0, maxx, maxy, 100) % Cloud 1 drawfilloval (90, 350, 130, 80, white) drawfilloval (70, 280, 80, 40, white) drawfilloval (200, 310, 60, 50, white) drawfilloval (230, 380, 60, 50, white) % Cloud 2 drawfilloval (400, 150, 130, 80, white) drawfilloval (380, 80, 80, 40, white) drawfilloval (410, 220, 80, 40, white) drawfilloval (520, 110, 70, 50, white) drawfilloval (520, 190, 80, 50, white) drawfilloval (300, 180, 60, 50, white) drawfilloval (300, 120, 40, 30, white) % Helicopter drawfillbox (iXposition + 85, iYposition + 5, iXposition + 155, iYposition + 10, black) % Base Connected to Legs drawfillbox (iXposition + 100, iYposition + 10, iXposition + 105, iYposition + 20, black) % Base leg 1 drawfillbox (iXposition + 135, iYposition + 10, iXposition + 140, iYposition + 20, black) % Base leg 2 drawfillbox (iXposition + 118, iYposition + 80, iXposition + 123, iYposition + 65, black) % Main Rotor drawfillbox (iXposition + 25, iYposition + 40, iXposition + 130, iYposition + 50, black) % Rotor rectangle drawfilloval (iXposition + 120, iYposition + 85, 70, 5, icolor2) % Rotor Blades drawfilloval (iXposition + 120, iYposition + 45, 40, 30, black) % Cockpit drawfillbox (iXposition + 10, iYposition + 40, iXposition + 15, iYposition + 70, black) % Rotor rectangle drawfilloval (iXposition + 15, iYposition + 48, 15, 15, icolor2) % Rear Rotor drawfilloval (iXposition + 85, iYposition + 45, 20, 15, black) % Smaller circle from main body of helicopter Draw.Text ("Super-Heli", 190, 325, font, icolor - 1) Draw.Text ("Play", 300, 180, font1, icolor - 1) Draw.Text ("Controls", 275, 120, font1, icolor - 1) % Play if xmouse>290 and xmouse<370 and ymouse>170 and ymouse<220 and button=1 then Draw.Cls Draw.Text ("CONGRATS, You Lose!", 175, 200, font1, black) View.Update exit end if % Controls if xmouse>270 and xmouse<390 and ymouse>100 and ymouse<150 and button=1 then Draw.Cls View.Update loop drawfillbox (0, 0, maxx, maxy, 100) % Cloud 1 drawfilloval (90, 350, 130, 80, white) drawfilloval (70, 280, 80, 40, white) drawfilloval (200, 310, 60, 50, white) drawfilloval (230, 380, 60, 50, white) % Cloud 2 drawfilloval (400, 150, 130, 80, white) drawfilloval (380, 80, 80, 40, white) drawfilloval (410, 220, 80, 40, white) drawfilloval (520, 110, 70, 50, white) drawfilloval (520, 190, 80, 50, white) drawfilloval (300, 180, 60, 50, white) drawfilloval (300, 120, 40, 30, white) Draw.Text ("Controls", 265, 335, font1, black) Draw.Text ("Press B to go Back", 15, 360, font2, black) Draw.Text ("Welcome to Super-Heli, the classic game that never gets boring!", 70, 285, font2, black) Draw.Text ("The controls of this game are basic, to raise your helicopter,", 80, 255, font2, black) Draw.Text ("simply click your mouse to ascend your helicopter vertically,", 77, 225, font2, black) Draw.Text ("to descend your helicopter, let go of the mouse button.", 100, 195, font2, black) Draw.Text ("Good luck and have fun!", 230, 165, font2, black) Draw.Text ("Trademark to the IGC (International Gaming Corporation) Do not copy this game.", 115, 15, font3, black) View.Update getch (ch) if ch = "b" then exit else end if end loop else end if %drawfillbox (290,170,370,220,41) %drawfillbox (270,100,390,150,41) icolor := icolor + 1 if icolor = 62 then icolor := 1 end if icolor2 := icolor2 + 1 if icolor2 = 31 then icolor2 := 21 end if iXposition := iXposition + xdirection iYposition := iYposition + ydirection if iXposition > 455 or iXposition < 0 then xdirection := -xdirection end if if iYposition > 215 or iYposition < 0 then ydirection := -ydirection end if delay (0) View.Update end loop [ /syntax ] I could use some help as to where to start my game . Like i do no know where to start, i feel if i get a start i can move from there any ideas? Thanks to all contributor(s) <<<----- so far aka Aange10 |
Author: | Conrad13 [ Tue Dec 20, 2011 7:05 pm ] |
Post subject: | Re: Helicopter Game Help |
BUMP Help me please? Can someone show me a detailed turing code to help me start the environment in which the helicopter will be passing through, like the original game, i need random obstacle relays and pleeasseee help me i do not know where to start. |
Author: | Aange10 [ Tue Dec 20, 2011 7:30 pm ] |
Post subject: | RE:Helicopter Game Help |
Sorry for not being specific, when you use the BBC codes ([ /syntax] and what not) you don't add the spaces. Conrad13 wrote: Can someone show me a detailed turing code to help me start the environment in which the helicopter will be passing through,i need random obstacle relays I beleive the code ^ Just showed you how to make this 'environment' with random obstacles. |
Author: | Conrad13 [ Tue Dec 20, 2011 9:00 pm ] |
Post subject: | Re: Helicopter Game Help |
My, bad I did not see that post :S so sorry, and I have another question: - In the real game the bottom of the screen has a floor and the top, a roof so basically you are flying through a cave and you are dodging rectangles that protrude from the roof or the floor would it be possible to do something like that instead of shapes flying toward you? |
Author: | Aange10 [ Tue Dec 20, 2011 9:57 pm ] |
Post subject: | Re: Helicopter Game Help |
Conrad13 @ 20/12/2011, 8:00 pm wrote: would it be possible to do something like that instead of shapes flying toward you?
Aange10 wrote: Nothings set in stone |
Author: | Aange10 [ Tue Dec 20, 2011 9:58 pm ] | ||
Post subject: | RE:Helicopter Game Help | ||
Specifically
|
Author: | Conrad13 [ Thu Dec 22, 2011 3:25 pm ] | ||
Post subject: | Re: Helicopter Game Help | ||
Well its coming together, now all I have to do is setup the collision detection, distance counter, and gameover!!! Thanks Aange10 |
Author: | Aange10 [ Thu Dec 22, 2011 4:20 pm ] |
Post subject: | RE:Helicopter Game Help |
the Turing Walkthrough has collison tutorials. Considering how easy this is, you may want to look into Whatdotcolor collision. |
Author: | Conrad13 [ Thu Dec 22, 2011 5:11 pm ] |
Post subject: | RE:Helicopter Game Help |
I still have no idea what to do with that... |
Author: | Aange10 [ Thu Dec 22, 2011 5:33 pm ] | ||
Post subject: | RE:Helicopter Game Help | ||
Here's an example of using whatdotcolor.
|
Author: | Conrad13 [ Thu Dec 22, 2011 5:46 pm ] |
Post subject: | RE:Helicopter Game Help |
: / still dont get this |
Author: | Aange10 [ Thu Dec 22, 2011 6:39 pm ] |
Post subject: | RE:Helicopter Game Help |
What part do you not get? |
Author: | Conrad13 [ Thu Dec 22, 2011 7:12 pm ] |
Post subject: | RE:Helicopter Game Help |
thanks, but never mind ill try and figure it out |
Author: | Conrad13 [ Thu Dec 22, 2011 9:02 pm ] |
Post subject: | Re: Helicopter Game Help |
Can anyone help me with color collision detection?!! Please out of all the people on the forum how do i only have one person trying to help?!!? |
Author: | chipanpriest [ Thu Dec 22, 2011 9:27 pm ] | ||
Post subject: | Re: Helicopter Game Help | ||
Think that would work? |
Author: | Aange10 [ Thu Dec 22, 2011 9:46 pm ] | ||
Post subject: | RE:Helicopter Game Help | ||
Indeed, whatdotcolor is very simple. you put in the x cord, and the y cord, and it tells you what color that dot is. Simple. So you could look at the edge of your helicopter, and say "if this dot turns white, exit". To do that you'd say whatdotcolor (theDotsXposition, theDotsYposition). That'd give you the color of that dot, then you'd take it and compare it and see if its white.
|
Author: | chipanpriest [ Thu Dec 22, 2011 9:59 pm ] | ||
Post subject: | Re: Helicopter Game Help | ||
for the ceiling and floor you could put
|
Author: | chipanpriest [ Thu Dec 22, 2011 10:04 pm ] |
Post subject: | RE:Helicopter Game Help |
also i played it and sometimes the dummy takes up the whole screen, thus making it impossible once you get the collision code in there. you might want to fix that :p |
Author: | Dreadnought [ Fri Dec 23, 2011 12:47 am ] | ||||
Post subject: | Re: Helicopter Game Help | ||||
Basically to check collision we use whatdotcolour to check if any pixels are the "wrong" colour. If any are then we have a collision. So which pixels should we check? Well lets suppose we are moving a box around on the screen. We could check every single pixel in the box, but that's a lot of pixels (remember we are doing this on each frame) and common sense/laziness tells us we can do better. We can reason fairly easily that only the edges are important (for more complex shapes some edges may not be important if they are on the inside of the shape). For that box I was talking about we would only have to check the pixels at the edges of the box. In your case you would want to know where the important edges of your helicopter are. Think of it like a wire frame. Here's what it might look like for your helicopter.
The red rectangles are a ruff estimate of some of the areas where you might want to check for collisions on edges. Now to check for collision. Aange10 posted a nice example for this. Here's my "moving a box around" example that I was talking about earlier. In this example I stop the box from moving when I detect collision.
Basically I'm checking if any pixel in the 4 lines that make up my box are touching black. If they are I stop the box. Of course one might look at this and say "Just check the x and y coordinates of the box to find when it hits the border". Its true, that would be faster and easier. BUT, add ANY shape you want to the screen (make in black and don't put it where the box is when the program starts) and it will still work. For example, try copying your helicopter's frame I posted above into the section that says "%You can add other shapes here". So now you have a square that will always stop when it collides with any black object. (There is a bug that will sometimes cause the box to slide on edges, but its should be easy to fix) Since you only care about whether or not you collided your task is even simpler. Note: Straight lines are easy to check, curves are harder. For an oval you can either estimate it as a rectangle (easy but not very accurate), or check points on the actual oval (the formula for an oval is (x/a)^2 + (y/b)^2 = 1 where a is the horizontal radius and b is the vertical radius). Hope this helps. |
Author: | Conrad13 [ Fri Dec 23, 2011 8:37 am ] |
Post subject: | RE:Helicopter Game Help |
o.O wow thanks for all the help, lol, i think i can take it from here, do you guys think this is a good game? like idk rate this outta 10 for what it has potential for?? Again thanks for all the help |
Author: | Aange10 [ Fri Dec 23, 2011 2:45 pm ] |
Post subject: | RE:Helicopter Game Help |
It's very classic, I like it. There is no reason to rate it. For a society used to industry standard, rating a new programmers game is harsh. |
Author: | chipanpriest [ Fri Dec 23, 2011 4:09 pm ] |
Post subject: | RE:Helicopter Game Help |
I actually like it, you just need to add to it and it would be great |
Author: | Conrad13 [ Fri Dec 23, 2011 5:28 pm ] |
Post subject: | RE:Helicopter Game Help |
Aww thanks people!! Can't wait to post the finished product |
Author: | Aange10 [ Fri Dec 23, 2011 6:57 pm ] |
Post subject: | RE:Helicopter Game Help |
Can't wait to see it. |
Author: | Conrad13 [ Mon Jan 09, 2012 4:54 pm ] | ||
Post subject: | Re: Helicopter Game Help | ||
If You really try and play and hit white, then it returns to the main menu, however, click play again and it returns to previous and totally glitches up. Okay, so I have this but i think as was stated earlier my dummy overtakes the exit command and it all F***s Up lol, does anyone have an idea whats happening, and sorry i took so long past three weeks haven't been home and had no time what so ever. |
Author: | Aange10 [ Mon Jan 09, 2012 5:29 pm ] |
Post subject: | RE:Helicopter Game Help |
Okay, well your problem is very simple. This section [syntax="turing] if whatdotcolor (125, 192+yaltitude) = white then exit end if if whatdotcolor (150, 253+yaltitude) = white then exit end if delay (3) end loop end if if whatdotcolor (125, 192+yaltitude) = white then exit end if [/syntax] If the color is white it exits the loop, and then if the bottom of the helicopter is white, it exits the entire program. |
Author: | Conrad13 [ Mon Jan 09, 2012 6:57 pm ] |
Post subject: | RE:Helicopter Game Help |
So, how do i make it exit the entire program, or how do i solve it, you merely said what the problem is. |
Author: | Aange10 [ Mon Jan 09, 2012 7:00 pm ] |
Post subject: | RE:Helicopter Game Help |
It already exits the entire program Quote: If the color is white it exits the loop, and then if the bottom of the helicopter is white, it exits the entire program. |
Author: | Conrad13 [ Mon Jan 09, 2012 7:07 pm ] |
Post subject: | RE:Helicopter Game Help |
okay, my bad, in the post where i stated my code the part after the delay (3) end loop end if i took off and I dont know how to make it go back to the main menu, but it doesn't work. Do you not see the glitch? its totally screwing up |
Author: | Aange10 [ Mon Jan 09, 2012 7:39 pm ] |
Post subject: | RE:Helicopter Game Help |
I took off the if statement on line 146, and the program does everything as you intended. Your menus work correctly, and it correctly sends you back if you hit white. The reason you're helicopter isn't resetting.. Your not resetting it. Simple as that. |
Author: | Conrad13 [ Wed Jan 11, 2012 7:03 pm ] |
Post subject: | RE:Helicopter Game Help |
I do not know what you are doing but i took out the if statement and it still screws uppp!! try hitting the top, how to i make it loop back to the menu and RESET the game part? |
Author: | Alex C. [ Wed Jan 11, 2012 9:25 pm ] | ||
Post subject: | RE:Helicopter Game Help | ||
i fixed it and added a crappy gameover screen for you The only actual problem was that you forgot to create another loop so that once it exits, your game resets AND you need to reset the helicopter location each time...
|
Author: | Conrad13 [ Thu Jan 12, 2012 3:57 pm ] |
Post subject: | RE:Helicopter Game Help |
OMG!! Thank you is there any way I could make the random squares in the game that you must dodge, like make them not be so small at times, like sometimes they are so small you can not even see them, or sometimes they are to big for the helicopter to even pass how do i set restrictions? or limits to how big or small the boxes can be? |
Author: | Alex C. [ Thu Jan 12, 2012 4:10 pm ] |
Post subject: | RE:Helicopter Game Help |
i'm sorry, i don't really know how to do that but i think you have to use randint to set the location of the random squares |
Author: | Conrad13 [ Thu Jan 12, 2012 4:20 pm ] |
Post subject: | RE:Helicopter Game Help |
Alright thanks anyone else? |
Author: | Beastinonyou [ Thu Jan 12, 2012 5:30 pm ] | ||
Post subject: | Re: Helicopter Game Help | ||
a Simple way of having multiple different sizes of rectangles, is to store the Possible Sizes in an array... Let me give a little example
|
Author: | Conrad13 [ Thu Jan 12, 2012 6:39 pm ] |
Post subject: | RE:Helicopter Game Help |
ahh thanks but i got no luck with arrays need this done by tomorrow so thanks but i think I will have to tweak it myself some more and throw in the towel : / |