見出し画像

ゲーム制作に使えるc言語#3

ゲームのセーブと読み込み

ゲームにはセーブ機能があります。
今回は、そのセーブ機能の作り方を書いていこうと思います。
今回は、テキストファイルだとセーブできているか確認が簡単なので、テキストファイルにセーブをしていこうと思います。

早速サンプルコードを見てみましょう。
まずはテキストファイルにセーブする必要があるので、セーブ関数を作ります。

画像1


実際に読み込めているか確認します。

画像2

何も書いていないテキストを用意しました。

画像3

セーブテキストを呼び出してテキストを見てみましょう。

画像4

このようにセーブと書かれています。
これでセーブ関数は完成です。

次は読み込むための関数を作ります。
今回はLoad関数とします。

画像5

読み込んだ文字をmain関数でコマンドに出力するために読み込んだ文字を返しています。

画像6

実行すると「セーブ」と表示されるはずです。

画像7

ちゃんと「セーブ」と表示されていました。
これでセーブ関数は完成といいたいのですが、まだ完成とは言えません。
文字は出力できましたが、数はどうでしょうか。
セーブ関数の書き込みの部分を1にしてみましょう。

画像8

実行してみましょう。

画像9

画像10


出力を見てみるとちゃんと「1」と表示されています。
しかしこれは文字列の1です。
int型の変数に代入してみましょう。
mainをこのように変更して出力します。

画像11

画像12

49という数字が出てきました。
これはアスキーコードと言われるものです。
文字に対応した0〜127までの番号が振られていて、「1」はその49番目なので、49と出力されています。
しかし、これではRPGなどをステータスを保存したい場合に困ります。
なので、int型に変換しましょう。変換にはatoiという関数を使います。

画像13

画像14

ちゃんと「1」と出力されました。

まとめ

ofstreamで書き込み、ifstreamで読み込む。
それを適切な型に変換して、代入する必要がある。

実際に自分も読み込み機能を作っている際にアスキーコードになって困ったことがあったので、この記事を書きました。

今回はatoiをmainに書きましたが、セーブしたものによって変換するかは変わってくるので、変換する場所は気を付けましょう。

セーブと読み込みの方法はわかったと思うので、自分でアレンジを加えて、セーブのできるゲームを作ってみてください。

補足

今回はテキストファイルに書き込みましたが、セーブデータの書き換えができないようにバイナリファイルのほうがよいので、テキストファイルへの書き込みはテストの時だけにしましょう。


いいなと思ったら応援しよう!

mba_internship
よろしければ応援お願いします! いただいたチップは活動費に使わせていただきます!