http://dixq.net/g/03_11.html
上記のリンクのページを参考にDXライブラリを使っている時のセーブデータの書き込み、読み込みのプログラムを試しに作ってみました。
しかし、書き込み、読み込みは成功するのですが、読み込んだものが画面に表示されていないようなんです。
(ブレークポイントを使ったところ、データは読み込まれているようだし、読み込みが失敗しているならその時の処理ですぐにreturn 0により画面が消えるはずなので)
上記リンクのページではDXライブラリを使っていないから起きている現象なのでしょうが、どうすれば解決するか分かりません。
解決法を教えてください。
↓はその時のソースです。
#include "DxLib.h"
typedef struct{
char name[20],text[255],type[16],color[4];
int num,num1,num2;
}test;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
SetGraphMode(800,600,32),ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
test Data = {"テスト1","テスト","テスト","赤",3,2,1};
FILE *fp = fopen( "セーブデータ.dat", "wb" );//バイナリファイルを開く
if( fp == NULL ){//エラーが起きたらNULLを返す
return 0;
}
fwrite( &Data, sizeof(Data), 1, fp ); //構造体の中身を出力
fclose( fp );//ファイルを閉じる
test get;
fp = fopen( "セーブデータ.dat", "rb" );
if( fp == NULL ){
return 0;
}
fread( &get, sizeof(get), 1, fp );
fclose( fp );
printf("名=%s\nテキスト=%s\n種類=%s\n色=%s\nナンバー1=%d\nナンバー2=%d\nナンバー3=%d",get.name,get.text,get.type,get.color,get.num,get.num1,get.num2);
WaitKey();
DxLib_End(); // DXライブラリ終了処理
return 0;
}
セーブデータ読み込みはできたけれど…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: セーブデータ読み込みはできたけれど…
ソースコードが視認しづらいのでcodeタグをご利用ください。
詳細 → http://dixq.net/board/board.html
プログラムをざっと見たところprintfを使っているようですがDXライブラリはウィンドウアプリなのでグラフィック画面しか存在せずprintfの出力対象であるコンソール画面が存在しません。
DXライブラリの関数のDrawFormatString()でグラフィック画面に文字を描画できますので使ってみてください。
詳細 → http://dixq.net/board/board.html
プログラムをざっと見たところprintfを使っているようですがDXライブラリはウィンドウアプリなのでグラフィック画面しか存在せずprintfの出力対象であるコンソール画面が存在しません。
DXライブラリの関数のDrawFormatString()でグラフィック画面に文字を描画できますので使ってみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。