ハイスコアを龍神録に実装

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

ハイスコアを龍神録に実装

#1

投稿記事 by たか » 16年前

これを使ってうまく龍神録の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:ハイスコアを龍神録に実装

#2

投稿記事 by Dixq (管理人) » 16年前

このプログラムをみるとコンフィグに関するファイルもスコアに関するファイルも同じファイルのように感じられますが、そうなのでしょうか?
同じでも出来ると思いますが、別にしたほうが楽ではないでしょうか?
コンフィグだと注釈にも書かれている通り、初期化の前に読み込んだほうがいいかもしれませんね。

しかしスコアなどはload.cppなど、後からでも大丈夫だと思いますし、
読み込む必要が無い時には呼ばない方がいいと思います。

たか

Re:ハイスコアを龍神録に実装

#3

投稿記事 by たか » 16年前

え?loadのときの読み込む方法ってどうやるんでしょうか?

閉鎖

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