忍者ブログ
なんとなくだらだらと。方向性はまだ決まってない。 当方のプログラムでは、山田巧さん作成のDXライブラリを利用させていただいてます。 本サイト http://homepage2.nifty.com/natupaji/DxLib/index.html DX Library Copyright (C) 2001-2008 Takumi Yamada.
[31] [1] [30] [29] [28] [27] [26] [25] [24] [23] [22]
×

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

まずは、できるように作る。
作ってから、改善できるか考える。


e020.png



ここを乗り切ることができれば、数年来の悲願が達成できる。
何度RPGを作ろうとしたことか。
数えきれないぐらい企画立てて、そのほとんどが頭の中だけで挫折していった。

こんな感じのテキスト版戦闘RPGもよく挑戦し、そして挫折していった。
その壁を越えられるかもしれない。



ダウンロード  Entry020.zip (2009.08.02)

なんかうまい解決策思いついた感じでテンション上がってるけど、まだ実際には組んでない。
今の俺ならできるんじゃないかという皮算用。
しかし、怒涛のブログ更新はじめた1週間前の俺には超えられない壁だと思う。


とりあえず、行動順決定のための「行動力」を取得する。
エキサイト英和に頼ってみるけど、「行動力」→「energy」→「エネルギー」は無いわな。
「行動」→「action」→「動作」で落ち着いた。ActionPoint とか?


Unit.h


class Unit
{



public:
    void Init(string Name, int HP,int Atp,int Dfp, int Agi, int Money);
    void ShowStatus();
    int Attack();
    int Defence();
    int GetActionPoint();
    string getName(){return(Name);}
    int Hit(int dmg);
    void HealMax(){HP = MaxHP;}         // 体力最大まで回復
    int GetMoney(){return(Money);}

};

// 行動力の取得
int Unit::GetActionPoint()
{
    int ap = Agi+1;
    return((rand()%ap + rand()%ap + ap)/2);
}






使ってみる。
main.cpp


Result Battle(Player &player, Unit &enemy)
{



        if(cmd == 9){res = ABORT;   break;}
        if(cmd == 2){res = RUNAWAY; break;}

        // 行動順によって、先攻後攻を決める
        if(player.GetActionPoint() >= enemy.GetActionPoint()){
            if(NormalAttack(player,enemy)){res = WIN;  break;}
            if(NormalAttack(enemy,player)){res = LOSE; break;}
        } else {
            if(NormalAttack(enemy,player)){res = LOSE; break;}
            if(NormalAttack(player,enemy)){res = WIN;  break;}
        }

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

    return res;
}



うむ。見事な一本糞。応用のまったく効かない、素晴らしいクソース。

1対1だからこの2通りしか無いんだけど、これが2対2とかだったら全パターン書くのか俺は。
ちょっと考えただけで破綻してるのは目に見えてる。4体いれば、4×3×2(×1)で24通り。
しかも、このメンバーの中で誰かが死んでたりとかしてたら組み合わせ自体も変わってくる。

こんなプログラムは、締切5秒前でも、どうしても作らないといけないプロの仕事でしかやっちゃだめ。
学生の宿題じゃないんだから、「できませんでした」は通用しない。どんな形でも動くようにするのがプロ。



話は変わるが、細かいところだけど表記のぶれが気になる。
小文字 get○○ メソッドは、メンバ変数の値をそのまま欲しいときに使い、
先頭大文字の Get○○ メソッドは計算・加工の結果をもらう感じで。

あと、ひとつの関数を抜き出したときに、省略したくなるほど長いのは危険な兆候。
その関数だけで「あれもこれも」やってる、働きすぎ状態。
過労死する前に業務改善を考えたほうがいい。

e020.png



うむ。先攻後攻ちゃんと切り替わってるのを確認。
これで、ギリギリまで稼ぐのがつらくなる。
あと1撃イケる!と思ってても逆転負けするケースが出てくるわけだ。


ダウンロード  Entry020.zip (2009.08.02)


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