現在、私は C++ 環境を使用して非常に基本的なゲームに取り組んでいます。このゲームは以前は学校の課題でしたが、プログラミングの授業が終わった今、自分のスキルを広げて、この古い課題にもっと力を入れたいと思いました。
私はすでに多くの変更を行っており、満足しています。すべてのデータをフォルダー階層に集中化し、それらの場所を読み取るコードを取得しました。
しかし、私の問題は、私を悩ませてきた非常に根本的な欠陥から生じています。
使用している画像データにアクセスするために、次のコードを使用しました。
string imageLocation = "..\\DATA\\Images\\";
string bowImage = imageLocation + "bow.png";
問題は、プレイヤーがゲームボード上のアイテムを拾ったときに、私のコードが次のコードを使用することになっていることです:
hud.addLine("You picked up a " + (*itt)->name() + "!");
コマンドラインに「You pick up a Bow!」と出力します。しかし、代わりに「You pick up a ..\DATA\Images\!」と表示されます。
データを一元化する前は、次のものを使用していました。
name_(item_name.substr(0, item_name.find('.')))
私の Item クラスコンストラクターで、アイテム名を弓やろうそくのようなものに切り刻みます。データの構造を変更した後、名前を同じ単純な「bow」または「candle」に切り詰める方法を変更する必要があることに気付きました。
データ構造の変更を反映するために上記のコードを次のように変更しました。
name_(item_name.substr(item_name.find("..\\DATA\\Images\\"), item_name.find(".png")))
しかし、残念なことに、先ほど触れたように、このコードの変更は、私が計画していたほどうまく機能していません。
さて、私の問題が何であるかについて、本当に長い説明をしたので、ここに私の質問があります。
不要な 2 つのセクション間の文字列の中間をどのように抽出しますか? また、ターゲットであるその中間部分の長さは不明です。
皆さんが与えることができるどんな助けにもとても感謝しています. さらに情報が必要な場合は、お問い合わせください。より多くの助けが必要な場合は、コードの一部または全体をアップロードしていただければ幸いです。改めまして、誠にありがとうございました。