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

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

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

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

Q&A

解決済

1回答

1471閲覧

ファイルの書き込み

yusuke.

総合スコア66

Ruby

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

0グッド

0クリップ

投稿2016/07/12 08:19

ファイルを読み込んで、そのファイルに他の所から読み込んだ変数と足していって、その最後の結果をウィンドウを閉じるときに、ファイルに保存しておいて、次に実行するときも、その前の続きからスタートできるようにしたいです。
まず、$tisikiにファイルの中にあるスコアを読み込ませて、スペースを押すと、そのスコアがプラスされるようなプログラムにしています。
しかし、さいごの、ファイルに書き込ませるところだけうまくいきません。
どう直せばいいのでしょうか。
必要ない部分は消してあります。
$scoreはちゃんと読み込むことができています。

ruby

1#!ruby -Ks 2require "sdl" 3require "./color.rb" 4 5$tisiki = open("./dat/score.dat") 6 7 8 while true do 9 while event = SDL::Event2.poll 10 case event 11 when SDL::Event2::Quit 12 13 $tisiki.write("#{$tisiki}") 14 $tisiki.close 15 when SDL::Event2::KeyDown 16 if event.sym == SDL::Key::SPACE then 17 yomikomi #後で場所を変える 18 drawBack 19 mondaihyouji 20 refresh 21 end 22 end 23 end 24 end 25 26 27 28 def mondaihyouji 29 $tisiki = $tisiki.to_i + $score.to_i 30 @font.put(@screen2,"#{$mondai}", 50,20,0,0,0) 31 @font.put(@screen2,"#{$sentakusi1}", 50,50,0,0,0) 32 @font.put(@screen2,"#{$sentakusi2}", 50,80,0,0,0) 33 @font.put(@screen2,"#{$sentakusi3}", 50,110,0,0,0) 34 @font.put(@screen2,"#{$sentakusi4}", 50,140,0,0,0) 35 @font.put(@screen2,"#{$sentakusi5}", 50,170,0,0,0) 36 @font2.draw_solid_utf8(@screen2," #{$tisiki}",100,500,0,0,0) 37 38 end 39 40end 41 42 43 44 45 46 47def hajime 48 g = Gmen.new 49 g.drawBack 50 g.refresh 51 g.start 52end

必要な部分や不明な点があればコメントください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ファイルのオープン時に読み書きモードの指定がありません。ファイルのオープン時には第2パラメータに読み出し("r")か書き込み("w")のモードを指定する必要があります。
今回、./dat/score.datに書き込もうとしているので、

Ruby

1$tisiki = open("./dat/score.dat", "w")

とします。
(ファイルのオープンモード指定には他にも色々あります。それらはRubyのリファレンスや書籍などにも書かれていますので、他のモードを知りたいようでしたらそちらを参照してください)

投稿2016/07/12 12:30

archiver

総合スコア1557

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

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

yusuke.

2016/07/20 06:42

wにすると、次は、スコアがうまく表示できなくなりました。
archiver

2016/07/20 13:46

ファイルを読みだす時は"r"を指定してopenすればいいです。ちなみに、どのタイミングでscore.datを読み出そうとしています? (多分、プログラム開始時に読むようにすると思うんだけど。続きをやるためには) 設計次第だけど、そこでも改めてopenしていないとファイルからデータを読み出せないよ。
yusuke.

2016/07/21 00:22

わかりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問