論純電法的極限傷害 (三) - 暗黑

Olive avatar
By Olive
at 2007-10-22T17:06

Table of Contents

----------------------------
四、Program

  
  開啟Borland C++ Builder,拉一個Button和一個ListView
,修改ListView顯示方式和排序,接著開按鈕,輸入以下程式碼


  或許你可以改用.Net去寫,但關於ListView細節部份需要有
所修改。


  在演算法部分,或許有人會覺得使用多層迴圈是浪費的,所
幸每個裝備選擇性不大。且一定能在多項式時間內運算完成。

  程式用到一個類別: class item,僅內建各種屬性和一個
初始化建構子。這裡是為了使程式可以充分擴充,像是加入閃電
奧馬斯等例外裝備時候,我們可以使用繼承來簡單擴充。

  我曾思考另外訂一個腳色類別,裡面定義兩個 Method:穿裝
備、脫裝備,這樣程式可以更靈活,這個方向可以提供有志研究
本論文者一個研究方向。


  以下附程式碼,未有程式基礎可直接按End ,等待下篇的實
驗數據分析。


Code:

class item
{
public:
AnsiString NameC;
int Skill;//All Lightning Spell Page Skill
int Light_Skill; //only light skill
double Dmg;
double Res;
int Sockets;
int FCR;

item();
};
item::item()
{
Skill=0; Light_Skill=0;
Dmg=0.0; Res=0.0; Sockets=0; FCR=0;
}

#define ResFunction (1.45+res+0.05*socket) //對抗一般敵人
//#define ResFunction (0.09+res+0.05*socket) //對抗電系免疫

#define MaxDmg()
5.8*(36*(skill+LightSkill+1)+732)*(0.12*(skill+1)+5.7+dmg+0.05*socket)
#define SumDmg()
5.8*(((36*(skill+LightSkill+1)+732)+1)/2)*(0.12*(skill+1)+5.7+dmg+0.05*socket)

void __fastcall TForm1::Button1Click(TObject *Sender)
{
class item Weapon2Hand[4];
class item Weapon[4];
class item Shield[3];
class item Helm[2];
class item Ammy[2];
class item Ring[3];
class item Armor[4];

Weapon2Hand[0].NameC="Mage"; Weapon2Hand[0].Skill=5;
Weapon2Hand[0].Res=0.15; Weapon2Hand[0].Sockets=1; Weapon2Hand[0].FCR=30;
//Mage's Song
Weapon2Hand[1].NameC="infinite"; Weapon2Hand[1].Res=0.55;
//自拿無限
Weapon2Hand[2].NameC="6soc"; Weapon2Hand[2].Skill=3;
Weapon2Hand[2].Sockets=6;
//+3閃電+3支電雙手杖打六洞全鑲電彩 (S=3 J=6)
Weapon2Hand[3].NameC="Memory"; Weapon2Hand[3].Skill=6;
Weapon2Hand[3].FCR=33;
//+3閃電+3支電雙手杖打四洞做成記憶 (Memory) (S=6)

Weapon[0].NameC="Moon"; Weapon[0].Res=0.35;
//新月劍 (Res=0.35)
Weapon[1].NameC="Esch"; Weapon[1].Skill=3; Weapon[1].Dmg=0.2;
Weapon[1].Sockets=1; Weapon[1].FCR=40;
//艾利屈塔鑲電彩(S=3 Dmg=0.2 J=1)
Weapon[2].NameC="6socSword"; Weapon[2].Sockets=6;
//六洞水晶劍全鑲電彩 (J=6)
Weapon[3].NameC="Powered Magus Orbs"; Weapon[3].Skill=6;
Weapon[3].Sockets=2; Weapon[3].FCR=20;
//+3電系+3閃電+3支電2洞 神奇藍色單手杖XD (S=6 J=2)

Shield[0].NameC="Spirt";Shield[0].Skill=2;Shield[0].FCR=35;
//精神(S=2)
Shield[1].NameC="Wall";Shield[1].Skill=1;
Shield[1].Sockets=1;Shield[1].FCR=20;
//警牆+電彩(S=1 J=1)
Shield[2].NameC="4soc";Shield[2].Sockets=4;
//四洞統盾四電彩(J=4)

Helm[0].NameC="Griffon"; Helm[0].Skill=1; Helm[0].Res=0.2;
Helm[0].Dmg=0.15; Helm[0].Sockets=1; Helm[0].FCR=25;
//Grifon(S=1 Res=0.2 Dmg=0.15 J=1)
Helm[1].NameC="Powered Magus"; Helm[1].Skill=3; Helm[1].Sockets=2;
Helm[1].FCR=20;
//+3閃電頁 2洞(S=3 J=2)

Ammy[0].NameC="+3L 10FCR"; Ammy[0].Skill=3; Ammy[0].FCR=10;
//+3閃電頁 10fcr
Ammy[1].NameC="+2 20FCR"; Ammy[1].Skill=2; Ammy[1].FCR=20;
//+2 20fcr 手工 (S=2)

Ring[0].NameC="2SOJ"; Ring[0].Skill=2;
Ring[1].NameC="SOJ+10fcr"; Ring[1].Skill=1; Ring[1].FCR=10;
Ring[2].NameC="2 10fcr"; Ring[2].FCR=20;

Armor[0].NameC="Arkaine's";Armor[0].Skill=2; Armor[0].Sockets=1;
//+2阿凱尼 1電彩 (S=2 J=1)
Armor[1].NameC="Skin of the Vipermagi";Armor[1].Skill=1;
Armor[1].Sockets=1; Armor[1].FCR=30;
//+1蛇皮 1電彩 (S=1 J=1 35RES 30FCR)
Armor[2].NameC="COH";Armor[2].Skill=2;
//+2 COH or Enigma(S=2)
Armor[3].NameC="Ormus'"; Armor[3].Light_Skill=3; Armor[3].Dmg=0.15;
Armor[3].FCR=20; Armor[3].Sockets=1;
//閃電澳馬斯

int skill=0,LightSkill=0,socket=0,Num=0,FCR;
double dmg=0,res=0,Res=0.0,SumDmg; //Res is real res max limited
on 200%

ListView1->Clear();
TListItem *Data_List;
//two hand
for(int i1=0;i1<2;i1++)
{
Num++;
skill = Helm[i1].Skill;
LightSkill=0;
socket = Helm[i1].Sockets;
dmg = Helm[i1].Dmg; res = Helm[i1].Res;
FCR = Helm[i1].FCR+40;
for(int i2=0;i2<2;i2++)
{
skill += Ammy[i2].Skill; socket += Ammy[i2].Sockets;
dmg += Ammy[i2].Dmg; res += Ammy[i2].Res;
FCR += Ammy[i2].FCR;
for(int i3=0;i3<3;i3++)
{
skill += Ring[i3].Skill; socket += Ring[i3].Sockets;
dmg += Ring[i3].Dmg; res += Ring[i3].Res;
FCR += Ring[i3].FCR;
for(int i4=0;i4<4;i4++)
{
skill += Armor[i4].Skill;
LightSkill+= Armor[i4].Light_Skill;
socket += Armor[i4].Sockets;
dmg += Armor[i4].Dmg; res += Armor[i4].Res;
FCR += Armor[i4].FCR;

//two
hand-------------------------------------------------------------
for(int i5=0;i5<4;i5++)
{
skill += Weapon2Hand[i5].Skill; socket +=
Weapon2Hand[i5].Sockets;
dmg += Weapon2Hand[i5].Dmg; res +=
Weapon2Hand[i5].Res;
FCR += Weapon2Hand[i5].FCR;

Res = ResFunction;
if(Res>2.0) Res=2.0;

//printf
code=================================================
if(CheckBox1->Checked) if(FCR<117) goto NLOOP;
SumDmg = SumDmg()*Res;

Data_List=ListView1->Items->Add();
Data_List->Caption=Num;
Data_List->SubItems->Add(Weapon2Hand[i5].NameC);
Data_List->SubItems->Add("");//no shield
Data_List->SubItems->Add(Helm[i1].NameC);
Data_List->SubItems->Add(Ammy[i2].NameC);
Data_List->SubItems->Add(Ring[i3].NameC);
Data_List->SubItems->Add(Armor[i4].NameC);
Data_List->SubItems->Add(Res);
Data_List->SubItems->Add(FCR);
Data_List->SubItems->Add((int)SumDmg);
Data_List->SubItems->Add(AnsiString((int)(MaxDmg())));
NLOOP:

//============================================================
skill -= Weapon2Hand[i5].Skill; socket -=
Weapon2Hand[i5].Sockets;
dmg -= Weapon2Hand[i5].Dmg; res -=
Weapon2Hand[i5].Res;
FCR -= Weapon2Hand[i5].FCR;
}

//One
hand-------------------------------------------------------------
for(int i5=0;i5<4;i5++)
{
skill += Weapon[i5].Skill; socket +=
Weapon[i5].Sockets;
dmg += Weapon[i5].Dmg; res += Weapon[i5].Res;
FCR += Weapon[i5].FCR;

for(int i6=0;i6<3;i6++)
{
skill += Shield[i6].Skill; socket +=
Shield[i6].Sockets;
dmg += Shield[i6].Dmg; res += Shield[i6].Res;
FCR += Shield[i6].FCR;

Res = ResFunction;
if(Res>2.0) Res=2.0;

//printf
code=================================================
if(CheckBox1->Checked) if(FCR<117) goto NLOOP2;
SumDmg = SumDmg()*Res;

Data_List=ListView1->Items->Add();
Data_List->Caption=Num;
Data_List->SubItems->Add(Weapon[i5].NameC);
Data_List->SubItems->Add(Shield[i6].NameC);
Data_List->SubItems->Add(Helm[i1].NameC);
Data_List->SubItems->Add(Ammy[i2].NameC);
Data_List->SubItems->Add(Ring[i3].NameC);
Data_List->SubItems->Add(Armor[i4].NameC);
Data_List->SubItems->Add(Res);
Data_List->SubItems->Add(FCR);
Data_List->SubItems->Add((int)SumDmg);
Data_List->SubItems->Add(AnsiString((int)(MaxDmg())));
NLOOP2:

//============================================================
skill -= Shield[i6].Skill; socket -=
Shield[i6].Sockets;
dmg -= Shield[i6].Dmg; res -= Shield[i6].Res;
FCR -= Shield[i6].FCR;

}
skill -= Weapon[i5].Skill; socket -=
Weapon[i5].Sockets;
dmg -= Weapon[i5].Dmg; res -= Weapon[i5].Res;
FCR -= Weapon[i5].FCR;
}

skill -= Armor[i4].Skill;
LightSkill-= Armor[i4].Light_Skill;
socket -= Armor[i4].Sockets;
dmg -= Armor[i4].Dmg; res -= Armor[i4].Res;
FCR -= Armor[i4].FCR;
}
skill -= Ring[i3].Skill; socket -= Ring[i3].Sockets;
dmg -= Ring[i3].Dmg; res -= Ring[i3].Res;
FCR -= Ring[i3].FCR;
}
skill -= Ammy[i2].Skill; socket -= Ammy[i2].Sockets;
dmg -= Ammy[i2].Dmg; res -= Ammy[i2].Res;
FCR -= Ammy[i2].FCR;
}
}
}
//---------------------------------------------------------------------------


--
10.22 19:38 程式修正傷害部份

--
Tags: 暗黑

All Comments

Olive avatar
By Olive
at 2007-10-24T00:53
很想抓過去算...不過太久沒碰了 有點看不懂XD 先推
Linda avatar
By Linda
at 2007-10-26T03:04
我承認我看到一半就end了 XD 還是推一個
Daph Bay avatar
By Daph Bay
at 2007-10-26T20:35
ㄜ~~ 我還沒灌...
Kama avatar
By Kama
at 2007-10-31T17:43
天使~!! 請問我data structure可以找你De bug嗎@@?
Joe avatar
By Joe
at 2007-11-03T21:39
看到一半就End了= = 想起正在修的該死的資料結構...
Liam avatar
By Liam
at 2007-11-07T05:05
你真屌....
Ida avatar
By Ida
at 2007-11-09T20:24
看不懂了........不懂程式 (汔
Carol avatar
By Carol
at 2007-11-11T15:25
沒看完~不過推一個~XD

論純電法的極限傷害 (一)

John avatar
By John
at 2007-10-22T11:23
Max Dmg Of Light Sor DreamYeh 2007.10.22 ---------------- ...

附加跨職技能裝備簡表

Necoo avatar
By Necoo
at 2007-10-22T10:01
符文組部份 野獸(Beast) +3 熊人變化 +3 變形術 戰爭召喚 +2-6 戰鬥指揮 +2-6 戰鬥體制 +1-4 戰嗥 渾沌 +1 旋風 弒王者(Kingslayer) +1 復仇 熱情 +1 狂戰士 +1 白熱 謎團 +1 傳送 =========================== ...

好孩子的精華區導讀手冊

Lily avatar
By Lily
at 2007-10-18T19:00
有鑑於最近版上有許多的新手小朋友加入暗黑板這個大家庭 但卻對資料龐大複雜的精華區望之卻步 小的就在此為新手朋友們指點一盞明燈 為各位指引明路啦~ 希望所有新手在看完此篇導讀小冊之後 都能在暗黑板找到自己的一塊天地=ˇ = ============================結束廢話嘴砲 進入正文===== ...

黃金左腳!死神鳳凰刺!

Olga avatar
By Olga
at 2007-10-16T06:36
緣起:不信武刺不能威,不信公理喚不回,高符價廉物又美,燒盡邪惡成灰飛。 概念:藉由防具上的%ed來增強神龍擺尾的威力,陷阱幫襯 裝備: 頭:+2刺客技能,30%增傷,20%高跑,一洞鑲38%ed+5敏珠寶 (理想裝備:年冠鑲兩顆40%ed15%ias) 身:剛毅 ...

關於迷團法師和主流法師比較

Ida avatar
By Ida
at 2007-10-11T21:27
//原文引於  21961 1710/11 ilikefeeling □ [交易] um and ist 換pgs    因標題已無關,是故另闢討論。 ※ 引述《ilikefeeling (天天)》之銘言: : 順便問一下 如果電法想穿謎團拿新月帶葛屁 : 有什麼好的配法嗎atat 由於這篇推文有人質 ...