C++でプログラミングを始めたのですが、
設定画面で背景色を切り替えた時に何色に切り替えたのかを
ここ( http://dixq.net/g/03_11.html )を参照に
***.datに記録したいのですが、
どのようにすればいいか良い案が思いつきません。
どうすればいいでしょうか?
初心者です。***.datの作成について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 初心者です。***.datの作成について
もう少し具体的に質問をお願いします。
「3.11章 セーブデータの作り方」
の何処の部分がわからないのでしょうか?
理解できていれば応用は可能です。
「3.11章 セーブデータの作り方」
の何処の部分がわからないのでしょうか?
理解できていれば応用は可能です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 初心者です。***.datの作成について
GetColor()での色もint型ですので、同じようにセーブ出来ます。
ただし、ビデオカードの動作が変わると互換のない色情報に変わる恐れが有るのでR,G,Bのそれぞれのint値を保存したほうが良いでしょう。
【補足】
まず、バイナリファイルって何?から理解したほうが良いのでサイトを紹介しておきます。
「バイナリファイルの読み書き」
http://homepage3.nifty.com/mmgames/c_guide/17-02.html
ただし、ビデオカードの動作が変わると互換のない色情報に変わる恐れが有るのでR,G,Bのそれぞれのint値を保存したほうが良いでしょう。
【補足】
まず、バイナリファイルって何?から理解したほうが良いのでサイトを紹介しておきます。
「バイナリファイルの読み書き」
http://homepage3.nifty.com/mmgames/c_guide/17-02.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 初心者です。***.datの作成について
DXライブラリを使っているのならWindows SDKのRGBマクロを流用したら良いのでは。
-
図書館
Re: 初心者です。***.datの作成について
ありがとうございます。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の作成について
fopenで戻り値がNULLだったらファイルがないと言うことです。
それで分岐できませんか?
それで分岐できませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
図書館
Re: 初心者です。***.datの作成について
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);
}