Menu: Difference between revisions

Content added Content deleted
(Added TI-83 BASIC)
Line 1,379: Line 1,379:
editvar /newvar /value=goback /userinput=1 /title=Do you want to chose something else?
editvar /newvar /value=goback /userinput=1 /title=Do you want to chose something else?
if -goback- /hasvalue y goto :a else exitcurrentprogram 1 </lang>
if -goback- /hasvalue y goto :a else exitcurrentprogram 1 </lang>

=={{header|Prolog}}==
<lang prolog>
rosetta_menu([], "") :- !. %% Incase of an empty list.
rosetta_menu(Items, SelectedItem) :-
repeat, %% Repeat until everything that follows is true.
display_menu(Items), %% IO
get_choice(Choice), %% IO
number(Choice), %% True if Choice is a number.
nth1(Choice, Items, SelectedItem), %% True if SelectedItem is the 1-based nth member of Items, (fails if Choice is out of range)
!.

display_menu(Items) :-
nl,
foreach( nth1(Index, Items, Item),
format('~w) ~s~n', [Index, Item]) ).

get_choice(Choice) :-
prompt1('Select a menu item by number:'),
read(Choice).
</lang>

Example run:

<lang prolog>
?- rosetta_menu(["fee fie", "huff and puff", "mirror mirror", "tick tock"], String).

1) fee fie
2) huff and puff
3) mirror mirror
4) tick tock
Select a menu item by number:a.

1) fee fie
2) huff and puff
3) mirror mirror
4) tick tock
Select a menu item by number:10.

1) fee fie
2) huff and puff
3) mirror mirror
4) tick tock
Select a menu item by number:3.
String = "mirror mirror".
</lang>


=={{header|PureBasic}}==
=={{header|PureBasic}}==