お世話になっております。ご覧悦ありがとうございます。
ruby
1loop do 2 while event = SDL::Event2.poll 3 case event 4 when SDL::Event2::Quit 5 exit 6 when SDL::Event2::KeyDown 7 if event.sym == SDL::Key::SPACE then 8 image_x += 10 9 end 10 end 11 end 12
イベント処理の文章だと思うのですが、このif event.sym というのはどういう意味なのでしょうか。
また、できればでいいのですが、
ruby
1 def kotaeawase 2 @font.put(@screen2,"数字を入力してください",50,220,0,0,0) 3 refresh 4 while event = SDL::Event2.poll 5 case event 6 when SDL::Event2::Quit 7 exit 8 when SDL::Event2::KeyDown 9 if event.sym == SDL::Key::K1 or SDL::Key::KP1 10 a = 1 11 end 12 if event.sym == SDL::Key::K2 or SDL::Key::KP2 13 a = 2 14 end 15 if event.sym == SDL::Key::K3 or SDL::Key::KP3 16 a = 3 17 end 18 if event.sym == SDL::Key::K4 or SDL::Key::KP4 19 a = 4 20 end 21 if event.sym == SDL::Key::K5 or SDL::Key::KP5 22 a = 5 23 end 24 end 25 end 26 @font.put(@screen2,"入力した数字",50,250,0,0,0) 27 @font2.draw_solid_utf8(@screen2," #{a.to_i}",190,242,0,0,0) 28 refresh 29 if a.to_i == $kotae.to_i 30 sleep 2 31 $tisiki = $tisiki.to_i + $score.to_i 32 @font.put(@screen2,"正解です",50,310,0,0,0) 33 sleep 0.5 34 @font.put(@screen2,"正解は です",50,280,0,0,0) 35 @font2.draw_solid_utf8(@screen2," #{$kotae}",130,274,0,0,0) 36 refresh 37 else 38 sleep 2 39 @font.put(@screen2,"間違いです",50,280,0,0,0) 40 refresh 41 sleep 0.5 42 @font.put(@screen2,"正解は です",50,310,0,0,0) 43 @font2.draw_solid_utf8(@screen2," #{$kotae}",130,300,0,0,0) 44 sleep 2 45 refresh 46 end 47end
このようなソースを作ったのですが、何度実行してもaの値が0となり、キーを押しても動きません。この問題が分かる方がおりましたら教えていただければ幸いです。
解決のヒントとなるような簡単なものでも大丈夫なのでお願いいたします。
---追記
もしかしたらこの部分よりほかのところでループさせているのですが、そこがおかしいかもしれません。
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 19 end 20end 21 22 23def kuizustart 24keycount = 0 25 while true do 26 drawBack 27 mondai 28 kotaeawase 29 sleep 2 30 keycount = keycount + 1 31 if keycount == 10 32 gameOver 33 sleep 5 34 end 35 end 36end 37 38 39 40def kotaeawase 41 @font.put(@screen2,"数字を入力してください",50,220,0,0,0) 42 refresh 43 while event = SDL::Event2.poll do 44 SDL::Event2.wait 45 case event 46 when SDL::Event2::Quit 47 exit 48 when SDL::Event2::KeyDown 49 if event.sym == SDL::Key::K1 or event.sym == SDL::Key::KP1 50 a = 1 51 end 52 if event.sym == SDL::Key::K2 or event.sym ==SDL::Key::KP2 53 a = 2 54 end 55 if event.sym == SDL::Key::K3 or event.sym == SDL::Key::KP3 56 a = 3 57 end 58 if event.sym == SDL::Key::K4 or event.sym ==SDL::Key::KP4 59 a = 4 60 end 61 if event.sym == SDL::Key::K5 or event.sym == SDL::Key::KP5 62 a = 5 63 else 64 next 65 puts "0,1,2,3,4,5のどれかを入力してください。" 66 end 67 end 68 end 69 @font.put(@screen2,"入力した数字",50,250,0,0,0) 70 @font2.draw_solid_utf8(@screen2," #{a.to_i}",190,242,0,0,0) 71 refresh 72 if a.to_i == $kotae.to_i 73 sleep 2 74 $tisiki = $tisiki.to_i + $score.to_i 75 @font.put(@screen2,"正解です",50,310,0,0,0) 76 sleep 0.5 77 @font.put(@screen2,"正解は です",50,280,0,0,0) 78 @font2.draw_solid_utf8(@screen2," #{$kotae}",130,274,0,0,0) 79 refresh 80 else 81 sleep 2 82 @font.put(@screen2,"間違いです",50,280,0,0,0) 83 refresh 84 sleep 0.5 85 @font.put(@screen2,"正解は です",50,310,0,0,0) 86 @font2.draw_solid_utf8(@screen2," #{$kotae}",130,300,0,0,0) 87 sleep 2 88 refresh 89 end 90end
こんな感じで、whileを使いまくっているので、どこかバグを起こしているのかもしれません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/03 00:33
2016/09/03 00:43
2016/09/03 00:51
2016/09/03 00:59
2016/09/03 01:08
2016/09/03 01:13
2016/09/03 01:26