初心者です。***.datの作成について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
図書館

初心者です。***.datの作成について

#1

投稿記事 by 図書館 » 13年前

C++でプログラミングを始めたのですが、
設定画面で背景色を切り替えた時に何色に切り替えたのかを
ここ( http://dixq.net/g/03_11.html )を参照に
***.datに記録したいのですが、
どのようにすればいいか良い案が思いつきません。
どうすればいいでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者です。***.datの作成について

#2

投稿記事 by softya(ソフト屋) » 13年前

もう少し具体的に質問をお願いします。
「3.11章 セーブデータの作り方」
の何処の部分がわからないのでしょうか?
理解できていれば応用は可能です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

図書館

Re: 初心者です。***.datの作成について

#3

投稿記事 by 図書館 » 13年前

コード:

  fwrite( &money, sizeof(int), 1, fp ); // ファイルにmoneyの値を出力する 
の部分です。
これにどうやって背景色の値を入れてやればいいのか思いつきません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者です。***.datの作成について

#4

投稿記事 by softya(ソフト屋) » 13年前

GetColor()での色もint型ですので、同じようにセーブ出来ます。
ただし、ビデオカードの動作が変わると互換のない色情報に変わる恐れが有るのでR,G,Bのそれぞれのint値を保存したほうが良いでしょう。

【補足】
まず、バイナリファイルって何?から理解したほうが良いのでサイトを紹介しておきます。
「バイナリファイルの読み書き」
http://homepage3.nifty.com/mmgames/c_guide/17-02.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 初心者です。***.datの作成について

#5

投稿記事 by ISLe » 13年前

DXライブラリを使っているのならWindows SDKのRGBマクロを流用したら良いのでは。

図書館

Re: 初心者です。***.datの作成について

#6

投稿記事 by 図書館 » 13年前

softya(ソフト屋) さんが書きました:GetColor()での色もint型ですので、同じようにセーブ出来ます。
ただし、ビデオカードの動作が変わると互換のない色情報に変わる恐れが有るのでR,G,Bのそれぞれのint値を保存したほうが良いでしょう。

【補足】
まず、バイナリファイルって何?から理解したほうが良いのでサイトを紹介しておきます。
「バイナリファイルの読み書き」
http://homepage3.nifty.com/mmgames/c_guide/17-02.html
ありがとうございます。
できるようになりました!
ついでに

プログラム起動時にConfig.datを読み込んで設定を適用するようにしたのですが
初回起動時にConfig.datがないとプログラムが強制終了してしまいます。
「Config.datない時(または、読み込めなかった時)」と条件をつけてやりたいのですが、どうすればいいでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者です。***.datの作成について

#7

投稿記事 by softya(ソフト屋) » 13年前

fopenで戻り値がNULLだったらファイルがないと言うことです。
それで分岐できませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

図書館

Re: 初心者です。***.datの作成について

#8

投稿記事 by 図書館 » 13年前

コード:

void Config_Load(){
	ConfigData Data;
	FILE *fp = fopen("Config.dat", "rb");
	if(fp == NULL){                         // Config.datを読み込めない時
		R = 100, G = 180, B =0;     // RGBに値を代入
	} else {                // Config.datを読み込んだら
		fread(&Data, sizeof(int), 3, fp);   // データを取り出し
		R = Data.Bg_R, G = Data.Bg_G, B = Data.Bg_B;   // RGBに代入
	}
	fclose(fp);
	SetBackgroundColor(R, G, B);
}
一応、やっては見たのですが起動するとすぐに終了してしまいます。

図書館

Re: 初心者です。***.datの作成について

#9

投稿記事 by 図書館 » 13年前

すみません
fclose(fp);を内側に入れるとうまくいきました。

閉鎖

“C言語何でも質問掲示板” へ戻る