これを使ってうまく龍神録の50章にハイスコアを作成してみたいのですが、
どのようにしたら良いでしょうか?load.cppにうまく繋げたいです。
具体的なやり方を教えてください。
#include "DxLib.h"
typedef struct{//セーブデータの構造体
char i;//スコアとかクリアしたかを記録する変数、必要な時に増やす
} score_t;
char *name = "score.dat";
FILE *fp;
score_t score;//セーブデータ
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
score.i=0;//デフォルト値を代入
fp = fopen( name, "a" );//ファイルがなければ新規作成
fclose( fp );
fp = fopen( name, "rb" );
fread( &score, sizeof(score_t), 1, fp );//データのロード
fclose( fp );
//DxLib_Initの前に呼ぶのがコツ、ウィンドウの初期状態とかに使える
//新規作成した場合は中身が空なので規定の動作を行わず
//デフォルト値を上書きしない事を期待しているが
//一応ファイルの有無で分岐した方が良いかも
ChangeWindowMode(TRUE);if(DxLib_Init() == -1) return -1;//初期化
DrawFormatString(0,0,GetColor(255,255,255),"前回の値 %d",score.i);
DrawString( 0 , 16 , "数値を入力してください" , GetColor( 255 , 255 , 255 ) ) ;
//score.i=KeyInputNumber( 0 , 32 , 1000 , 0 , FALSE ) ;
score.i=KeyInputNumber( 0 , 32 , 100 , 0 , FALSE ) ;
fp = fopen( name, "wb" );
fwrite( &score, sizeof(score_t), 1, fp );//データのセーブ
fclose( fp );
//実際は終了直前にセーブすると×を押された時とかにセーブできないので
//フェードインの関数内で場面変化のたびにセーブしています
DxLib_End();
return 0;
}ハイスコアを龍神録に実装
-
たか
ハイスコアを龍神録に実装
-
Dixq (管理人)
Re:ハイスコアを龍神録に実装
このプログラムをみるとコンフィグに関するファイルもスコアに関するファイルも同じファイルのように感じられますが、そうなのでしょうか?
同じでも出来ると思いますが、別にしたほうが楽ではないでしょうか?
コンフィグだと注釈にも書かれている通り、初期化の前に読み込んだほうがいいかもしれませんね。
しかしスコアなどはload.cppなど、後からでも大丈夫だと思いますし、
読み込む必要が無い時には呼ばない方がいいと思います。
同じでも出来ると思いますが、別にしたほうが楽ではないでしょうか?
コンフィグだと注釈にも書かれている通り、初期化の前に読み込んだほうがいいかもしれませんね。
しかしスコアなどはload.cppなど、後からでも大丈夫だと思いますし、
読み込む必要が無い時には呼ばない方がいいと思います。