Skip to content
第30回 外部データによるユニット追加

1 / 2 CSVからの性能読み込み ​

このステップの目的

性能の入力場所をC++の初期値からCSVへ移します。

第30回の到達版で、Assets/Data/Units.csvの軽装兵の移動速度を変更して保存し、ゲームを終了して起動し直します。ソースをビルドし直さずに速度が変わることを見てください。

読み込み先を接続する ​

CSVは表の1行を1種類の定義として保存する形式です。解析と入力検査の関数LoadGameDataはDefinitions.cppへ提供済みです。ファイルを読む部分を自作することは今回の課題に含めません。

Source/main.cppの初期化条件にあるtd::LoadLessonData(assets, data, error)を、td::LoadGameData(assets, data, error)へ置き換えます。#include "TowerDefense/LessonData.h"は取り除きます。LessonData.cppは参照用に以前の作業フォルダーへ残し、以後の性能調整には使用しません。

戻り値がtrueのときだけ、画像を読み、Battleへ定義を渡します。読み取りに失敗すると画面とDataError.txtに原因を示して止まります。エラーのまま本編を始めない理由を説明してください。

CSVの編集 ​

Units.csvの見出しを残し、move_speedだけ70から35へ変更します。保存形式はUTF-8です。表計算ソフトでは区切りをカンマにし、IDを変換しないようにしてください。

Visual Studioでの起動はプロジェクト直下のAssetsを指定する引数を設定済みです。ゲームを終了してCtrl+F5で起動し直すと、保存したCSVを読みます。コードを変更していなければ再コンパイルは不要です。exeを直接使う提出版ではexeの横のAssetsを編集します。

変更後の速度を観察したら70へ戻します。第29回で自分が調整した値を残す場合は、初期値の列と対応させてCSVへ転記します。新しい到達版で自分のファイルをまとめて上書きしないでください。

チェックリスト

今回の変更箇所を指し示し、観察した結果とその理由を説明できますか。実験後の値とファイルを確認して次へ進みます。

ゲームプログラミング実践