質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1874閲覧

文字が表示されない

yusuke.

総合スコア66

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/07/01 08:05

なぜ、新しい画面にしたときに文字が一緒に表示されないのでしょうか。
文字を日本語に変えてもみたのですが、結局表示できませんでした。
どこがいけないのでしょうか。ちなみにエラーは出ていません。

kuizugamen.rb

ruby

1require "sdl" 2require "./color.rb" 3class Gmen 4 WINDOW_YOKO = 750 5 WINDOW_TATE = 550 6 BITPIKUSERU = 0 7 8 9def initialize 10 SDL.init(SDL::INIT_EVERYTHING) 11 @screen2 = SDL.set_video_mode(WINDOW_YOKO,WINDOW_TATE,BITPIKUSERU,SDL::SWSURFACE) 12 SDL::TTF.init 13 @font = SDL::Kanji.open("font/jiskan24.bdf",24) 14 @font.set_coding_system(SDL::Kanji::SJIS) 15end 16 17def drawBack 18 @screen2.fill_rect(0,0,WINDOW_YOKO,WINDOW_TATE,Color::WHIT) 19 20end 21 22def refresh 23 @screen2.update_rect(0,0,0,0) 24end 25 26def mondaihyouji 27 @font.put(@screen2,"$mondai",200,300,255,255,255) 28 @font.put(@screen2,"$sentaku1", 570,300,255,255,255) 29end 30 31end

kuizu.rb

ruby

1#!ruby -Ks 2require "sdl" 3require "./kuizugamen.rb" 4require "./mondaisyu.rb" 5 6 7def gamen 8kuizugamen = Gmen.new 9kuizugamen.drawBack 10kuizugamen.refresh 11kuizugamen.mondaihyouji 12end 13 14def yomikomi() 15 i = 0 16 j = 0 17 mondai = "mondaif1.dat" 18 $moji =[] 19 f = open("./dat/#{mondai}") 20 while text = f.gets do 21 moji[i] = text.chomp 22 i += 1 23 end 24 f.close 25 $mondaisu = i/7 26 while j <= i/7 27 eval("$q#{j} = [ moji[j*7+0],moji[j*7+1],moji[j*7+2], moji[j*7+3],moji[j*7+4],moji[j*7+5],moji[j*7+6] ]") 28 j += 1 29 end 30end 31 32def mondai 33eval("q = $q#{rand($mondaisu)}.clone") 34$mondai = q[0] 35$sentakusi1 = q[1] 36$sentakusi2 = q[2] 37$sentakusi3 = q[3] 38$sentakusi4 = q[4] 39$sentakusi5 = q[5] 40$kotae = q[6] 41end

main.rb

ruby

1#!ruby -Ks 2require "./window.rb" 3require "./kuizu.rb" 4 5window = Window.new 6window.drawBack 7window.gamestart 8window.refresh 9 10while true do 11 while event = SDL::Event2.poll do 12 case event 13 when SDL::Event2::Quit 14 exit 15 when SDL::Event2::MouseButtonDown 16 x = event.x 17 y = event.y 18 if window.kuizuclicked?(x,y) 19 gamen 20 end 21 if window.zairyoclicked?(x,y) 22 require "./zairyo.rb" 23 end 24 end 25 end 26 27end

ほかに必要な部分やわからない部分があればコメントください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文字を表示しようとしてるのって、Gmenクラスのmondaihyoujiメソッドになると思うのですが、この中の例えば"$mondai"を"あいうえお"とかに変えても表示されないということですかね?

ぱっと見て思ったのは、mondaihyoujiメソッドで表示させようとしている$mondaiって、kuizu.rbの中にあるmondaiメソッドで設定している$mondaiを指しているんですかね(何となく、それが期待値のような気がする)。ただ、これだとスコープが違うからGmenクラスのmondaihyoujiメソッドでは中身が見えていないのだと思います。

意見追加
よくよく見れば、kuizu.rbのmondaiメソッドを呼んでいるところが見当たりません。提示しているプログラムファイル以外(mondaisyu.rb、zairyo.rb)で呼んでいたりします?
流れ的には
0. yomikomiメソッドで問題ファイルから問題を読み込む
0. mondaiメソッドでランダムに問題(と選択肢、解答)を読み込む
0. Gmenクラスのmondaihyoujiメソッドで問題を表示させる

みたいな流れにならないといけないかなと思うのですが、こういう流れになってます?

投稿2016/07/01 14:51

編集2016/07/04 13:42
archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yusuke.

2016/07/04 07:13

では、kuizugamen.rbでkuizu.rbをrequireすればいいのでしょうか
archiver

2016/07/04 13:45 編集

kuzugamen.rbでkuizu.rbをrequireしなくてもいいんじゃないかな(グローバル変数だということを見落としてました)。 さらに気づいたことを追記しました。それと、@font.put(@screen2,"$mondai",200,300,255,255,255)って、 @font.put(@screen2,"#{$mondai}",200,300,255,255,255) にしなきゃいけないんじゃないかな。変数の中身の表示なので。
yusuke.

2016/07/04 13:49

あ、確かにそのメゾットを出していませんでした。的確なアドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問