上一篇FinalFantasy的系統 用到了執行緒的概念 (multithreading)
但是執行緒必須配合其運行的作業系統才能使用
這次的DragonQuest並沒有使用到執行緒
所以其實在DOS底下就可以寫出一個模擬程式了


================================================
Dragon Quest的特點是「真正的回合制」
每一回合,必須在敵我雙方把指令都做完之後,才會發動
然後依據雙方的速度,去決定哪一個角色先動作
有趣的是,只要你下完指令之後,這一回合就是完全看電腦動畫表演給你看了
也就是一旦下完指令之後,你角色這一回合的生死就聽天由命啦!


================================================
在一回合開始的時候,指令選單會開啟,讓你去決定角色要做什麼動作
全部的角色都指定完動作之後,電腦就開始抓取各角色目前的速度值
例如抓到的速度值是

 我A 我B 我C 敵A 敵B
23 16  28 17 30



那麼電腦就要創造一個Queue,指定好等會要動作的順序

0 1 2 3 4
敵B 我C 我A 敵A 我B



然後這個排序每一回合可能都不一樣
因為可能有角色使用了加速技能或魔法 使速度變快
================================================


接下來的每個角色所動作...


struct action{ //角色動作的結構
    int command;
    int use_magic;
    int use_skill;
    int target;
    int use_item;
};


#define X 3 //我方戰鬥角色三人
action our_player[X]; //宣告動作結構



 if(our_player[queue[now]].command=="攻擊"){ //排到的角色目前執行的動作是攻擊
      attack(our_player[queue[now]].target); //就攻擊他選定的目標
 }


..後略






其他的都是細節部分,就不贅述了


創作者介紹

Frank's 資訊科技潮流站

finalfrank 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • Edison
  • 事實上 struct action 裡面的東西在實做的時候更多人用 enum 去定義

    enum _command {attack, defect, rest};
    enum _magic{none, fire, ice, thumb};
    ...

    struct action{ //角色動作的結構
    _command command;
    _magic use_magic;
    .....
    };
  • 嗯嗯

    finalfrank 於 2010/12/11 23:40 回覆