571 posts
Location
Some Fish Bowl in Ohio.
Posted 31 October 2013 - 06:10 PM
Hi, I was going to make a menu for a program I am working on, but i'm not sure how to make the arrow keys scroll down the menu. If someone could help that would be great. Thank you.
-Agoldfish
8543 posts
Posted 31 October 2013 - 07:01 PM
When you receive a key event, re-draw the menu cursor one entry lower or higher than it was, or redraw the menu one line higher or lower, as appropriate. Show us the code you have now.
571 posts
Location
Some Fish Bowl in Ohio.
Posted 31 October 2013 - 07:23 PM
Here is the code. I don't have the menu in place yet..
local password = "Gamma"
os.pullEvent = os.pullEventRaw
print"######################"
print"@Gold System Security@"
print"######################"
sleep(1)
print"----------------------"
print"Please log in"
pass = read("*")
if pass == password then
print"Access Granted"
else
print"Access Denied"
sleep(1.5)
os.reboot()
end
I plan to have a menu for admin bypass, creating an account, and for a main menu which leads to the code I have now.
49 posts
Posted 31 October 2013 - 11:46 PM
If you're going to write some type of menu system, I did it by having a while true loop pulling events.
This you have to react to each and every keystroke. I just had one IF that pulled chars, and another for key events, so you can capture the arrow keys, and react…
So, for the password stuff. You're going to need to prompt, assume any keystrokes are for that, check, then draw your menu, then redraw on arrow keystroks… etc.
49 posts
Posted 01 November 2013 - 12:17 AM
Or start the while loop only after the login… I suppose.
1114 posts
Location
UK
Posted 01 November 2013 - 02:22 AM
local o = 1
while true do
term.clear()
term.setCursorPos(1,1)
if o == 1 then
print("Login <")
print("Register")
print("Admin")
elseif o == 2 then
print("Login")
print("Register <")
print("Admin")
elseif o == 3 then
print("Login")
print("Register")
print("Admin <")
end
_, key = os.pullEvent("key")
if key == keys.up and o > 1 then
o = o - 1
elseif key == keys.down and o < 3 then
o = o + 1
elseif key == keys.enter then
break
end
end
if o == 1 then
-- Login
elseif o == 2 then
-- Register
elseif o == 3 then
-- Admin override
end
That should work, I haven't tested it though.
331 posts
Posted 04 November 2013 - 01:49 AM
local o = 1
while true do
term.clear()
term.setCursorPos(1,1)
if o == 1 then
print("Login <")
print("Register")
print("Admin")
elseif o == 2 then
print("Login")
print("Register <")
print("Admin")
elseif o == 3 then
print("Login")
print("Register")
print("Admin <")
end
_, key = os.pullEvent("key")
if key == keys.up and o > 1 then
o = o - 1
elseif key == keys.down and o < 3 then
o = o + 1
elseif key == keys.enter then
break
end
end
if o == 1 then
-- Login
elseif o == 2 then
-- Register
elseif o == 3 then
-- Admin override
end
That should work, I haven't tested it though.
It would be better to not do it like this
if o == 1 then
print("Login <")
print("Register")
print("Admin")
elseif o == 2 then
print("Login")
print("Register <")
print("Admin")
elseif o == 3 then
print("Login")
print("Register")
print("Admin <")
end
But to have your options in a table like
options ={"login","register","admin"}
and then loop through like so
for k,v in pairs(options) do
if k == o then
print(v.." <")
else
print(v)
end
end
8 posts
Posted 05 November 2013 - 11:40 AM
The code you posted,in the 3rd post is right.You should just add – end – on the new,blank line right after the line which has – print"Access Denied" –
Written on it….
571 posts
Location
Some Fish Bowl in Ohio.
Posted 05 November 2013 - 11:42 AM
Thanks for the tips guys! Got it figured out.