User Created Menus are the best way to have someone input a choice. I would even advocate user created menus on the homescreen, although that is unnecessary, because a graphscreen menu would be the same size as a homescreen one, and would look better, and would allow more choices in a menu.
The basic layout for a graphscreen menu is quite simple, especially when you use my simple routine, that is completely optimized for speed and size.
here is the layout. remember, the formulas for placement of text need to be solved for before being coded, that way, you save a lot of space. the formulas place all text centered on the screen, and any half coordinates for text should be rounded down. This is all shown with the size optimized graphscreen from tips and tricks.
text(62-Y,X,"Title
text(31-3*the number of choices,47-((2*number of characters in longest choice)+.5*number of spaces in longest choice),"Choice one
……….."Choice two
……….."Choice three
repeat for up to 10 choices and add 6 to the first coordinate after every choice. Then put the movement routine for an arrow. for now use the layout for it, but if you want to understand how it works, read the boolean values and tests page.
62-(31-3*(number of choices-1->W
45-((2*number of characters in longest choice)+round down.5*number of spaces in longest choice->V
( the last two variables should equal the coordinates of the point two left of the center of the left side of the text for the top choice)
While not(U
getkey->K
Line(V,W,V-5,W,not(K
Line(V,W,V-2,W-2,not(K
Line(V,W,V-2,W+2,not(K
W+6(K=25)-6(K=34
Ans+(6*number of options)((Ans=(6 less than W value when pointer is next to lowest choice))-(Ans=(6 more than W value when pointer is next to highest choice->W
(K=21->U
End
if W=(W value when pointer is next to Choice 1)
Then
what happens when you choose choice one here
End
if W=(W value when pointer is next to Choice 2)
Then
what happens when you choose choice two here
End
and so on for all choices.
I hope this helps people design user created menus.