ページ 1 / 1
オートセーブについて
Posted: 2015年2月08日(日) 19:02
by 夢幻ノ月夜
友達が上から見下ろした視点のアクションゲームを作りたいと言っているので
C言語とDXライブラリを渡して色々教えているのですが
その友達が、
「ウィンドウが閉じられるときに勝手にセーブされるようにしたい。リセットマラソン対策でな」
とのことで、そのオートセーブのプログラムをどう組めばいいのか分からないんです
誰か同じようなことができる方、教えてください
Re: オートセーブについて
Posted: 2015年2月08日(日) 19:19
by Tatu
DxLib_End()の近くでセーブしてはどうでしょうか。
Re: オートセーブについて
Posted: 2015年2月09日(月) 19:01
by 夢幻ノ月夜
Tatu さんが書きました:DxLib_End()の近くでセーブしてはどうでしょうか。
×ボタン押されるとできないっぽいんです
Re: オートセーブについて
Posted: 2015年2月09日(月) 19:20
by Tatu
このコードではどのようになりますか?
► スポイラーを表示
コード:
#include <DxLib.h>
int Key[256];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll(GetHitKeyStateAll_Key);
for (int i = 0; i<256; i++){
if (GetHitKeyStateAll_Key[i] == 1) GetHitKeyStateAll_InputKey[i]++;
else GetHitKeyStateAll_InputKey[i] = 0;
}
return 0;
}
void save(){
FILE *fp = fopen("test_save.txt", "w");
if (fp != NULL){
fprintf(fp,"セーブしました");
fclose(fp);
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if (DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;//初期化と裏画面化
while (ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll_2(Key) == 0 && Key[KEY_INPUT_ESCAPE] == 0){
ScreenFlip();
}
save();
DxLib_End();
return 0;
}
Re: オートセーブについて
Posted: 2015年2月09日(月) 19:32
by 夢幻ノ月夜
Tatu さんが書きました:このコードではどのようになりますか?
► スポイラーを表示
コード:
#include <DxLib.h>
int Key[256];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll(GetHitKeyStateAll_Key);
for (int i = 0; i<256; i++){
if (GetHitKeyStateAll_Key[i] == 1) GetHitKeyStateAll_InputKey[i]++;
else GetHitKeyStateAll_InputKey[i] = 0;
}
return 0;
}
void save(){
FILE *fp = fopen("test_save.txt", "w");
if (fp != NULL){
fprintf(fp,"セーブしました");
fclose(fp);
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if (DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;//初期化と裏画面化
while (ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll_2(Key) == 0 && Key[KEY_INPUT_ESCAPE] == 0){
ScreenFlip();
}
save();
DxLib_End();
return 0;
}
セーブされてる…だと?
どういったことをやってるコードなんですか?
Re: オートセーブについて
Posted: 2015年2月09日(月) 19:48
by softya(ソフト屋)
いや、 Tatuさんの最初に書いた通りの事を実現したコードですよ。
ゲームプログラミングの館の骨格コードにセーブ付けただけと言えます。
Re: オートセーブについて
Posted: 2015年2月09日(月) 20:07
by Tatu
ウィンドウを閉じられてもProcessMessageの戻り値が-1になり、
ループから抜けるだけなのでsave()もDxLib_End()も実行されます。
詳しくはDXライブラリ置場のリファレンスを確認してください。
Re: オートセーブについて
Posted: 2015年2月09日(月) 20:15
by 夢幻ノ月夜
Tatu さんが書きました:ウィンドウを閉じられてもProcessMessageの戻り値が-1になり、
ループから抜けるだけなのでsave()もDxLib_End()も実行されます。
詳しくはDXライブラリ置場のリファレンスを確認してください。
ProcessMessageの返値ってそういう意味だったんですか
参考になりました
友達に教えておきます
ありがとうございました