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

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

行動を自分で決められるだけで、印象ずいぶん違う。


CRPG012.png




なんかぽろっと適当に作ってみた。

main.cpp


int main()
{
    srand(static_cast<unsigned int>(time(NULL)));

    Unit player,enemy;
    player.Init("ゆうしゃ", 30, 8, 5);
    enemy.Init("ゴブリン", 12, 6, 3);

/*
    Hist_Atk(player);
    Hist_Atk(enemy);
    Hist_Def(player);
    Hist_Def(enemy);

    Hist_NA(player, enemy);
    Hist_NA(enemy,player);
*/

    int cnt = 1, cmd, cmdcnt;

    while(1){
        cmdcnt = 0;
        cout << "\ncnt:" << cnt << "\n";
        player.ShowStatus();
        enemy.ShowStatus();
        while(1){
            cout << "どうする?(1:攻撃 2:逃げる):";
            cin >> cmd;
            cout << "\n";
            if(cmd == 1) break;
            if(cmd == 2) {
                cout << player.getName() << "は逃げ出した!\n";
                break;
            }
            if((++cmdcnt)>10){cmd = 2;break;}   //無限ループ防止
        }
        if(cmd == 2)break;


        if(NormalAttack(player,enemy))break;
        if(NormalAttack(enemy,player))break;

        if((++cnt)>100)break;       // 無条件ループなので、無限ループ防止
        Sleep(600);
    }

    cout << "\n\n終了。" << endl;
    return 0;
}


追加したところ。
まず、ヒストグラム関連はいらないんで、ばっさり斬る。コメントアウト!!
しばらく邪魔っぽいんで、別のところに切り出してもいいと思う。

入力については、正しい答えを引き出すまで引き下がる気は無いんで、例によって無限ループ。
ループ内で「どうするべ?」って聞いて、cin でコマンド入力を受け付ける。
「1」入力されたら、無限ループ抜けてそのまま戦闘モードに。
「2」入力されたら、メッセージ表示して無限ループ抜ける。その外のループも抜ける。

その次の行、 if((++cmdcnt)>10){cmd = 2;break;} が工夫のしどころ。
cmdcnt は、この入力ループに入る前にゼロに設定してる。
ここを通過する度に1づつ上がっていく。で、10回以上ボケられたら問答無用で終了する。
cmdに「2」を入れるのは、このあとの処理が逃げたときと同じだから。

何をまわりくどいことやってんだとお思いでしょうが。
そう思うなら、この行を削除(コメントに)して、実行してみましょう。
そして、数字以外の文字、a とか z とか入力してみるとあばばばばばばばばばばばばばばば


・・・
・・・落ち着いた?
この結果は知ってた。マニュアル通りの解決方法もあるんだけど、まわりくどい上に
いろいろやったらやっぱりおかしな動作になる。
これ、cin のバグだと思う。この仕様は百害あって一利なし。

解決策は、この方法がソース的にいちばん短く、分かりやすいんじゃないかなと思う次第。


いろんなC++の教科書とか授業で教えてくれるプログラムとかあるけど、数字入力のときに
文字を入れると、たいていあばばばばばってなる。
「先生、パソコンがぶっ壊れました!!!」ってわざとやると楽しい。
3回いじめたら先生には嫌われるね。


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
アクセス解析
カウンター