2017-09-30 19 views
0

Rubyでコード化する方法はありますか?そのため、ユーザーは矢印キーを使用して選択し、Enterを使用して確認する必要がある2つのオプションを提示します。Rubyの複数選択クイズ

擬似コードは:

p "What is the capital of Scotland? 
user_select = gets.chomp 
p "Edinburgh" 
p "Glasgow" 
if user_select == "Edinburgh" etc etc 

私は、これは、ユーザーが自分の答えを入力することなく実現することができるかどうかを知りたいです。ターミナルはGUIのように動作できますか?

答えて

1

、あなたはTTY ::プロンプトを使用することができます。それはあなたが矢印キーを使用できるようになります。

コードサンプル

require 'tty-prompt' 

prompt = TTY::Prompt.new 
greeting = 'What is the capital of Scotland?' 
choices = %w(Edinburgh Glasgow) 
answer = prompt.select(greeting, choices) 
'do something' if answer == choices[0] 

結果

$ ruby quiz.rb 

What is the capital of Scotland? (Use arrow keys, press Enter to select) 
‣ Edinburgh 
    Glasgow 
+0

こんにちはNikK、ここでtty-prompt以外のものをインストールする必要がありますか?それは私が矢印キーを使用させていない、それだけで表示されます: スコットランドの首都は何ですか? ‣エジンバラ、グラスゴー –

+0

こんにちはJames! tty-prompt以外のものをインストールする必要はありません。私は%w表記でタイプミスをしました。私は答えを更新しました。もう一度お試しください。 – NikK

+0

うん、私はそれを試して、それは働いた! –

0

それはあなたが、矢印キーを使用させませんけれどもあなたは、Highlineのようなものを使用することができます

→ ruby test.rb 
1. Edinburgh 
2. Glasgow 
What is the capital of Scotland? 
→ 1 
Correct! 

コード(単にアイデアを得るために):GUIの詳細は

require 'highline' 

cli = HighLine.new 

cli.choose do |menu| 
    menu.prompt = "What is the capital of Scotland?" 
    menu.choice("Edinburgh") { cli.say "Correct!" } 
    menu.choice("Glasgow") { cli.say "Wrong!" } 
end 

を、 MRDialogのようなものを試してみてください。

例:

require 'mrdialog' 

dialog = MRDialog.new 
dialog.clear = true 
dialog.title = "Quiz" 

question = "What is the capital of Scotland?" 
answers = [['E', 'Edinburg'], ['G', 'Glasgow']] 

height = 0 
width = 0 
menu_height = 2 

selected_item = dialog.menu(question, answers, height, width, menu_height) 

puts "Selected item: #{selected_item}" 

結果:

また

enter image description here

+0

ありがとう!これは役に立っています:) –

+0

その場合は、投票を行い、答えを受け入れる必要があります(他の人の言うことを理解するためにそれを受け入れて、私は基本的なStackOverflowのエチケットを説明しようとしています)。 –

+0

私はupvoteをしましたが、私の担当者はそれが数えられるほど高くはありません私は恐れています –