忍者ブログ
なんとなくだらだらと。方向性はまだ決まってない。 当方のプログラムでは、山田巧さん作成のDXライブラリを利用させていただいてます。 本サイト http://homepage2.nifty.com/natupaji/DxLib/index.html DX Library Copyright (C) 2001-2008 Takumi Yamada.
[11] [10] [9] [8] [7] [6] [5] [4] [3] [2]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 何度挫折しただろうか。
動くものを動くように作って、動いてから処理を洗練させていけばいいのにと、いつも思う。

なんか、class同士の連絡の取り方がよくわからんのよな。
プレイヤーから入力を受け付ける→敵の行動を決める→行動順を決める→順番に処理
テキストに書きだせばこれだけのことだけど、できない。

とりあえずわかるところから書いてみる。

CRPG001.png







 まあ、とりあえずはいつものやつ。
コンソールアプリなんで、ソリューション「ConsoleRPG」作って、アプリケーションウイザードから
「コンソールアプリ」「空のプロジェクト」を選択。
フォルダが3つぐらい出来てるので、問答無用で削除。
「新しい項目を追加」で、「main.cpp」のメインファイルを追加。

#include <iostream>
using namespace std;

int main()
{
    cout << "\n\n終了。" << endl;
    return 0;
}


動作確認終了。

さて、考える。
RPGの戦闘に最低限必要な要素は
体力、攻撃力、防御力ぐらいかな。あと、名前。


#include <iostream>
#include <string>
using namespace std;

class Unit
{
private:
    string Name;
    int HP;
    int Atp;
    int Dfp;
public:
    void Init(string name, int hp,int ap,int dp);
    void ShowStatus();
};

int main()
クラスUnit を書いてみた。
もちろん設計も何もなく、行き当たりばったり。

とりあえず Init (初期化) と、ShowStatus (パラメータ表示)メソッドを追加する。


    void ShowStatus();
};

// 初期化
void Unit::Init(string name, int hp, int ap, int dp)
{
    cout << "Init:"<< name << "\n";
    Name = name;
    MaxHP = HP = hp;
    Atp = ap;
    Dfp = dp;
}

// パラメーター表示
void Unit::ShowStatus()
{
    cout << "【" << Name << "】 HP:" << HP << "  ATP:" << Atp << "  Dfp:" << Dfp << "\n";
}


int main()

差分(追加で打ち込むところ)を青字で書いてるけど、そのへんはふいんきでわかるよね?
Init() は、4つの引数をもらって、それぞれ対応する関数にぶち込む。
ShowStatus() は、メンバ関数を表示する。
それだけだし、簡単だよね。

というわけで、メインに実装してみる。


int main()
{
    Unit Player,Enemy;
    Player.Init("ゆうしゃ", 30, 8, 5);
    Enemy.Init("ゴブリン", 12, 6, 3);

    Player.ShowStatus();
    Enemy.ShowStatus();

    cout << "\n\n終了。" << endl;

動作確認。

CRPG001.png




Player、Enemy 両方ともちゃんと登録されてるみたいな感じ。
満足。
PR


忍者ブログ [PR]
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
バーコード
ブログ内検索
P R
アクセス解析
カウンター