Loops and Drawing for a menu, using keys and jpegs,need help
Author |
Message |
Leftover
|
Posted: Sat Jan 15, 2005 5:50 pm Post subject: Loops and Drawing for a menu, using keys and jpegs,need help |
|
|
I'm at a bit of a stand still again.
I'm making steady progress on my game but once again I have come into a bump, this time at the menu.
I basically have a fading text intro, that then moves to a screen with logo and 2 buttons (Continue and New Game). I have it all going with a selector arrow moving up and down with the arrow keys to select 1 or the other, using lots of drawing, but here is where I am stuck.
Currently it is set up so if down key is pressed, it goes down to new game, and if up key is pressed (or by default) it is on continue. When enter is pressed at any time, it kills the music, which is what I want it to do as well.
code: |
loop
if hasch then
enter := getchar
if enter = chr (208) then
Draw.Cls
GUI.SetBackgroundColor (255)
Pic.Draw (hand_dwn, 135, 155, picCopy)
Pic.Draw (logo, 135, 325, picCopy)
Pic.Draw (new_bl, 170, 155, picCopy)
Pic.Draw (continue_bl, 170, 235, picCopy)
Draw.FillBox (125, 30, 365, 58, 33)
Font.Draw ("C 2005 SPORK", 126, 46, font2, 0)
Font.Draw ("C 2005 NINTENDO", 126, 31, font2, 0)
View.Update
end if
if enter = chr (200) then
Draw.Cls
GUI.SetBackgroundColor (255)
Pic.Draw (hand_up, 135, 235, picCopy)
Pic.Draw (logo, 135, 325, picCopy)
Pic.Draw (new_bl, 170, 155, picCopy)
Pic.Draw (continue_bl, 170, 235, picCopy)
Draw.FillBox (125, 30, 365, 58, 33)
Font.Draw ("C 2005 SPORK", 126, 46, font2, 0)
Font.Draw ("C 2005 NINTENDO", 126, 31, font2, 0)
View.Update
end if
if enter = chr (10) then
Music.PlayFileStop
end if
end if
end loop
|
The first problem with that, not too serious, but it flickers the screen when it goes up or down"¦ Is there any way to clean up that flicker to make it look cleaner?
On to the main problem:
I can't figure out how I can make it so when it is on Continue and enter is pressed, it goes to the load menu, or if it is on New Game and enter is pressed, it goes to the New Game menu. I've tried so many things and they just don't work or mess up the program more and don't work. I am just so baffled right now and I'm sure it's so simple .
The basic pseudocode I want is:
Chr(ascii), 10 is enter, 208 is down, 200 is up,
code: |
If key = chr(208) then move pointer to new game
If key = chr(10) once pointer is on new game, then go to new game menu
If key = chr(200) then move pointer to continue, or leave it where it is (default on continue)
If key = chr(10) once pointer is on continue, then go to continue menu
|
I only had a few minutes to get on the net while working on this and couldn't find anything. I also spent about 2 hours trying different things that worked in my head but not in turing .
If anyone can offer any help on either of the 2 problems I am having it will be put to good use . Thanks in advanced, L.O. |
|
|
|
|
|
Sponsor Sponsor
|
|
|
Delos
|
Posted: Sat Jan 15, 2005 8:00 pm Post subject: (No subject) |
|
|
Here's the thing w/ OOT. For optimal usage, work w/ classes and/or modules. Either or, you'll be using lots of procedures. With most other higher level langs, you can call a procedure before it's been declared. Not so in OOT.
Thus, I can see 3ish procedures you'll need for the basic framework here.
- game procedure: this contains the actual game, and reads specific data regarding the player etc, that is already stored
- new game procedure: creates player data, then calls the game proc to continue
- menu procedure: if the 'New Game' option is selected, calls the new game proc, otherwise loads saved data and calls the game proc.
Basically, in terms of chronology, think backwards. |
|
|
|
|
|
Leftover
|
Posted: Sat Jan 15, 2005 8:21 pm Post subject: (No subject) |
|
|
That makes sence and it's still early enough to change my program to that, but I still can't make my menu pick one of those procedures by pressing enter
Is it just not possible to do it the way I want to? If so it seems pretty odd that code from 87 cand do it but not code from 2005 |
|
|
|
|
|
Leftover
|
Posted: Sat Jan 15, 2005 10:04 pm Post subject: (No subject) |
|
|
Nevermind, I re read that about 50 times and I tried some stuff and got it.
code: |
loop
if hasch then
enter := getchar
if enter = chr (208) then
ContNew := false
GUI.SetBackgroundColor (255)
Pic.Draw (hand_dwn, 135, 155, picCopy)
Pic.Draw (logo, 135, 325, picCopy)
Pic.Draw (new_bl, 170, 155, picCopy)
Pic.Draw (continue_bl, 170, 235, picCopy)
Draw.FillBox (125, 30, 365, 58, 33)
Font.Draw ("C 2005 SPORK", 126, 46, font2, 0)
Font.Draw ("C 2005 NINTENDO", 126, 31, font2, 0)
View.Update
end if
if enter = chr (200) then
ContNew := true
GUI.SetBackgroundColor (255)
Pic.Draw (hand_up, 135, 235, picCopy)
Pic.Draw (logo, 135, 325, picCopy)
Pic.Draw (new_bl, 170, 155, picCopy)
Pic.Draw (continue_bl, 170, 235, picCopy)
Draw.FillBox (125, 30, 365, 58, 33)
Font.Draw ("C 2005 SPORK", 126, 46, font2, 0)
Font.Draw ("C 2005 NINTENDO", 126, 31, font2, 0)
View.Update
end if
if enter = chr (10) then
if ContNew = true then
continue % This would be the procedure called when person wants to continue
elsif ContNew = false then
newgame % This would be the procedure called when a person chooses to start a new game
end if
end if |
Thanks again Delos, and it's nice to know that it's a bit easier in higher level programming, as it may be my choice for college if I can not get a place in Toronto. I just wish I had more time to read up on other langs |
|
|
|
|
|
Delos
|
Posted: Sun Jan 16, 2005 9:57 am Post subject: (No subject) |
|
|
Hmm...if you want to know anything about higher level programming, speak to wtd...my experience in programming wanders sweet short paths away from OOT...so sad I know.
I would still suggest that you alter your proggie and use procedures instead. You will like them lots. |
|
|
|
|
|
|
|