首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 開發 WPF/Silverlight 動畫與遊戲系列教程(三十):大法師——華麗群攻魔法實作

     編輯:關於C#

前言

從紅白機到 PS3,經典遊戲角色常駐夢境。UO 開啟網遊新時代,虛擬世界敞開魔幻大門。本節講解最華麗且易實現的圓形範圍群攻魔法。

魔法控件 QXMagic

建立 QXMagic 控件,賦予屬性(見原始碼)。關鍵:每個魔法擁有生命執行緒播放幀動畫,從產生到結束由一系列幀組成。

滑鼠右鍵施法流程

註冊視窗右鍵事件:

private void Window_MouseRightButtonDown(object sender, MouseButtonEventArgs e) {
    if (Leader.Action == Actions.Death) return;
    Leader.MagicTarget = p;
    if (Super.InCircle(Leader.X, Leader.Y, p.X, p.Y, Leader.MagicRange)) {
        ChangeDirection(Leader, p);
        DoMagic(Leader);
    } else {
        Leader.IsMagicMove = true;
        double n = Math.Sqrt(Math.Pow(p.Y - Leader.Y, 2) + Math.Pow(p.X - Leader.X, 2));
        double x = p.X - (p.X - Leader.X) * Leader.MagicRange / n;
        double y = p.Y - (p.Y - Leader.Y) * Leader.MagicRange / n;
        MoveTo(Leader, new Point(x, y));
    }
}

點擊處在施法距離內直接施法,否則跑到距離邊緣再施法。

魔法參數 XML 定義

<Magics>
  <Magic Code="0" HasDirection="false" FrameNum="19" EffectiveFrame="4" SingleWidth="320" SingleHeight="344" Radius="140" CenterX="154" CenterY="214">
    <Level Value="1" ATK="120" Consumption="10"/>
    ... 至 Level 9 ...
  </Magic>
</Magics>

施法前判斷魔法值是否足夠:

if (VSpell < consumption) {
    Super.ShowText(this, true, true, "NotEnough", "魔法值不足", 22, Colors.Green, 0.5);
}

群攻傷害計算與經驗值

遍歷攻擊半徑 (Radius) 圓內所有敵對精靈,攻防計算產生傷害並顯示:

擊殺怪物獲得經驗值並顯示:

升級系統

經驗值表參考《魔獸世界》,載入 LevelUpExperienceList 陣列:

<LevelUp>
  <Experience Level="2" Value="400"/> ... 至 Level 25 ...
</LevelUp>

遞迴處理升級邏輯:

public static void EarnExperience(QXSpirit spirit, int value) {
    if (spirit.VExperience + value >= LevelUpExperienceList[spirit.VLevel + 1]) {
        spirit.VLevel += 1;
        value = spirit.VExperience + value - LevelUpExperienceList[spirit.VLevel];
        spirit.VExperience = 0;
        EarnExperience(spirit, value);
    } else {
        spirit.VExperience += value;
    }
}

完成準備施法→判斷→傷害→經驗值完整流程。新增調試按鈕:

單體/輔助魔法若時間許可後續補充。夢想延續,緬懷經典,期待更好網遊。出處:https://alamiye010.cnblogs.com/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved