いつもお世話になっております。
今回クイズを作っているのですが、押された文字を読み込むことができません。
スペースを押すと、問題が表示されるところまでは、期待通りの動作をしてくれます。しかし、数字を押してもそのままスルーされて毎回a の値が0(入力した数字0 )となっています。また、なにも押さなくても aの値が0とされ、そのまま正解かどうかの判定をして、繰り返しています。
簡単に言うと、入力した文字を読み込む以外はすべて期待通りの動作をしています。
もしかしたらwhileを使いまくっていたので、そこがおかしいのかもしれません。
ruby
1 def start 2 @font.put(@screen2,"今から問題が出てきます。問題によって、スコアが異なります。",50,30,0,0,0) 3 @font.put(@screen2,"正解だと思う選択肢の番号のキーボードを押してください。",50,70,0,0,0) 4 @font.put(@screen2,"始めるにはスペースキーを押してください。",50,120,0,0,0) 5 refresh 6 while true do 7 while event = SDL::Event2.poll do 8 case event 9 when SDL::Event2::Quit 10 exit 11 when SDL::Event2::KeyDown 12 if event.sym == SDL::Key::SPACE then 13 kuizustart 14 break 15 end 16 end 17 end 18 end 19end 20 21def kuizustart 22keycount = 0 23 while true do 24 drawBack 25 mondai 26 kotaeawase 27 sleep 2 28 keycount = keycount + 1 29 if keycount == 10 30 gameOver 31 sleep 5 32 end 33 end 34end 35 36 37def kotaeawase 38 @font.put(@screen2,"数字を入力してください",50,220,0,0,0) 39 refresh 40 while event = SDL::Event2.poll do 41 SDL::Event2.wait 42 case event 43 when SDL::Event2::Quit 44 exit 45 when SDL::Event2::KeyDown 46 if event.sym == SDL::Key::K1 or event.sym == SDL::Key::KP1 47 a = 1 48 end 49 if event.sym == SDL::Key::K2 or event.sym ==SDL::Key::KP2 50 a = 2 51 end 52 if event.sym == SDL::Key::K3 or event.sym == SDL::Key::KP3 53 a = 3 54 end 55 if event.sym == SDL::Key::K4 or event.sym ==SDL::Key::KP4 56 a = 4 57 end 58 if event.sym == SDL::Key::K5 or event.sym == SDL::Key::KP5 59 a = 5 60 else 61 next 62 puts "0,1,2,3,4,5のどれかを入力してください。" 63 end 64 end 65 end 66 @font.put(@screen2,"入力した数字",50,250,0,0,0) 67 @font2.draw_solid_utf8(@screen2," #{a.to_i}",190,242,0,0,0) 68 refresh 69 if a.to_i == $kotae.to_i 70 sleep 2 71 $tisiki = $tisiki.to_i + $score.to_i 72 @font.put(@screen2,"正解です",50,310,0,0,0) 73 sleep 0.5 74 @font.put(@screen2,"正解は です",50,280,0,0,0) 75 @font2.draw_solid_utf8(@screen2," #{$kotae}",130,274,0,0,0) 76 refresh 77 else 78 sleep 2 79 @font.put(@screen2,"間違いです",50,280,0,0,0) 80 refresh 81 sleep 0.5 82 @font.put(@screen2,"正解は です",50,310,0,0,0) 83 @font2.draw_solid_utf8(@screen2," #{$kotae}",130,300,0,0,0) 84 sleep 2 85 refresh 86 end 87end 88
---追記
何度も繰り返すうちにわかってきたのですが、始める時にスペースを押さないと始まらないようになっているのですが、そのスペースも入力として取得しているようです。そして、なにも入力しないと、期待通りに処理はストップしていました。しかし、数字を押してもやはり、すべて0にされていました。
実行していくと
when SDL::Event2::Quit
exit
この動作をするとちゃんと終了していたので、eventのしょりはきちんとできているとおもうのですが・・・・
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/03 05:00
2016/09/03 05:18
2016/09/03 05:31
2016/09/03 05:45
2016/09/03 11:13
2016/09/03 13:13
2016/09/03 13:53
2016/09/03 14:03