クイズのようなプログラムを作りたいです。
問題などは、ほかのファイルから読み込んで表示させ、その問題に合う答えを入力できるようにしたいです。
次の文ではうまく判定してくれないのですが、エラーメッセージも出ずに、フリーズしてしまいます。
ruby
1#!ruby -Ks 2require "sdl" 3require "./color.rb" 4 5 6 7$tisiki = 0 8 9 10 11 12 13class Gmen 14 WINDOW_YOKO = 750 15 WINDOW_TATE = 550 16 BITPIKUSERU = 0 17 18 19 def initialize 20 SDL.init(SDL::INIT_EVERYTHING) 21 @screen2 = SDL.set_video_mode(WINDOW_YOKO,WINDOW_TATE,BITPIKUSERU,SDL::SWSURFACE) 22 SDL::TTF.init 23 @font = SDL::Kanji.open("font/jiskan24.bdf",24) 24 @font.set_coding_system(SDL::Kanji::SJIS) 25 @font2 = SDL::TTF.open("C:/WINDOWS/Fonts/TAHOMA.TTF",30) 26 end 27 28 def drawBack 29 @screen2.fill_rect(0,0,WINDOW_YOKO,WINDOW_TATE,Color::WHITE) 30 end 31 32 def refresh 33 @screen2.update_rect(0,0,0,0) 34 end 35 36 def kotaeawase 37 a = gets.chomp 38 @font.put(@screen2,"入力した数字#{a}",50,280,0,0,0) 39 if a == $kotae.to_i 40 $tisiki = $tisiki.to_i + $score.to_i 41 @font.put(@screen2,"正解です",50,250,0,0,0) 42 @font.put(@screen2,"正解は#{$kotae}です。",50,220,0,0,0) 43 else 44 @font.put(@screen2,"間違いです。",50,250,0,0,0) 45 @font.put(@screen2,"正解は#{$kotae}です。",50,220,0,0,0) 46 end 47 end 48 49 50 51 while true do 52 while event = SDL::Event2.poll 53 case event 54 when SDL::Event2::Quit 55 exit 56 when SDL::Event2::KeyDown 57 if event.sym == SDL::Key::SPACE then 58 yomikomi 59 drawBack 60 mondaihyouji 61 @font.put(@screen2,"数字を入力してください。",50,220,0,0,0) 62 refresh 63 kotaeawase 64 refresh 65 end 66 end 67 end 68 end 69 end 70 71 def mondaihyouji 72 @font.put(@screen2,"#{$mondai}", 50,20,0,0,0) 73 @font.put(@screen2,"#{$sentakusi1}", 50,50,0,0,0) 74 @font.put(@screen2,"#{$sentakusi2}", 50,80,0,0,0) 75 @font.put(@screen2,"#{$sentakusi3}", 50,110,0,0,0) 76 @font.put(@screen2,"#{$sentakusi4}", 50,140,0,0,0) 77 @font.put(@screen2,"#{$sentakusi5}", 50,170,0,0,0) 78 @font2.draw_solid_utf8(@screen2," #{$tisiki}",100,500,0,0,0) 79 end 80end 81 82
caseのところでスペースキーが押されているかを調べて押されていると問題を表示していくようにしたいです。ほかのところで実行しています。いらない部分は消してあります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。