照著老師上課教的內容,寫了一個簡單的工具
因為剛學,之前有人提到做成矩陣...但不懂那是什麼意思
不知道有沒有哪位好心的大大,願意講解一下 OTL)
http://0rz.tw/GSeQ0 私用可,請別隨意轉載(未完成品)
↓跑一輪就像是下圖,目前功能還只有1
我方兵種的1~3,分別是劍兵、長劍兵、禁衛劍兵 (其他依此類推)
這數值和自動戰鬥的損傷差不多(應該)
如果是手動的話,能瞬殺或射程外的話,就能將損傷降到0
最後又會回到要你選擇計算的類型,直到輸入0(中途可以隨時從右上離開)
[原始碼]
----------以下內容可能會造成不適-------------
#include <stdio.h>
#include <stdlib.h>
int main(void)
{unsigned short int menu_type;
float turn_atk;
float turn_def;
float lead_atk_atk;
float lead_atk_def;
float lead_def_atk;
float lead_def_def;
float lead_atk_lead;
float lead_def_lead;
float lead_rate;
float solider_amount_atk;
float solider_amount_def;
int solider_type_atk;
int solider_type_def;
float solider_atk;
float solider_hp;
float solider_type_rate;
float damage_atk;
float damage_hp;
menu_type=1;
printf("請輸入數字 :: ver1.1");
while (menu_type !=0)
{
printf("\n0.離開程式\n1.攻擊間的耗損\n2.最低秒敵兵力(暫無)\n3.能獲得多少EXP(暫無)\n請選擇要計算的類型:");
scanf("%d",&menu_type);
if (menu_type ==1)
{
printf("請分別輸入我方傭兵的攻擊力、防禦力、統帥值:");
scanf("%f%f%f",&lead_atk_atk,&lead_atk_def,&lead_atk_lead);
printf("我方兵力:");
scanf("%f",&solider_amount_atk);
printf("我方兵種(1~3劍,4~6槍,7~9騎,10~12弓,13~15法):");
scanf("%d",&solider_type_atk);
printf("敵方兵力:");
scanf("%f",&solider_amount_def);
printf("敵方兵種(1劍,2槍,3騎,4弓,5法):");
scanf("%d",&solider_type_def);
while (solider_type_atk<1 or solider_type_atk>15 or solider_type_def<1 or solider_type_def>5)
{
printf("*請重新輸入*\n");
printf("我方兵種(1~3劍,4~6槍,7~9騎,10~12弓,13~15法):");
scanf("%f",&solider_type_atk);
printf("敵方兵種(1劍,2槍,3騎,4弓,5法):");
scanf("%f",&solider_type_def);
}
if(solider_type_atk>=1 && solider_type_atk<=3)
{
if(solider_type_def==1)
{solider_type_rate=100;}
if(solider_type_def==2)
{solider_type_rate=130;}
if(solider_type_def==3)
{solider_type_rate=70;}
if(solider_type_def==4)
{solider_type_rate=115;}
if(solider_type_def==5)
{solider_type_rate=85;}
}
if(solider_type_atk>=4 && solider_type_atk<=6)
{
if(solider_type_def==1)
{solider_type_rate=70;}
if(solider_type_def==2)
{solider_type_rate=100;}
if(solider_type_def==3)
{solider_type_rate=130;}
if(solider_type_def==4)
{solider_type_rate=85;}
if(solider_type_def==5)
{solider_type_rate=115;}
}
if(solider_type_atk>=7 && solider_type_atk<=9)
{
if(solider_type_def==1)
{solider_type_rate=130;}
if(solider_type_def==2)
{solider_type_rate=70;}
if(solider_type_def==3)
{solider_type_rate=100;}
if(solider_type_def==4)
{solider_type_rate=115;}
if(solider_type_def==5)
{solider_type_rate=85;}
}
if(solider_type_atk>=10 && solider_type_atk<=12)
{
if(solider_type_def==1)
{solider_type_rate=85;}
if(solider_type_def==2)
{solider_type_rate=115;}
if(solider_type_def==3)
{solider_type_rate=85;}
if(solider_type_def==4)
{solider_type_rate=100;}
if(solider_type_def==5)
{solider_type_rate=115;}
}
if(solider_type_atk>=13 && solider_type_atk<=15)
{
if(solider_type_def==1)
{solider_type_rate=115;}
if(solider_type_def==2)
{solider_type_rate=85;}
if(solider_type_def==3)
{solider_type_rate=115;}
if(solider_type_def==4)
{solider_type_rate=85;}
if(solider_type_def==5)
{solider_type_rate=100;}
}
if(solider_type_atk==1 or solider_type_atk==10 or solider_type_atk==13)
{solider_atk=18;}
if(solider_type_atk==2 or solider_type_atk==11 or solider_type_atk==14)
{solider_atk=26;}
if(solider_type_atk==3 or solider_type_atk==12 or solider_type_atk==15)
{solider_atk=36;}
if(solider_type_atk==4 or solider_type_atk==7)
{solider_atk=17;}
if(solider_type_atk==5 or solider_type_atk==8)
{solider_atk=25;}
if(solider_type_atk==6 or solider_type_atk==9)
{solider_atk=35;}
if(solider_type_def==1 or solider_type_def==2)
{solider_hp=34;}
if(solider_type_def==3)
{solider_hp=32;}
if(solider_type_def==4 or solider_type_def==5)
{solider_hp=28;}
if(solider_amount_def>=660)
{
if(solider_amount_def>=1710)
{
lead_def_atk=660;
lead_def_def=160;
lead_def_lead=70;
}
else
{
lead_def_atk=590;
lead_def_def=140;
lead_def_lead=64;
}
}
else
{
lead_def_atk=520;
lead_def_def=120;
lead_def_lead=58;
}
turn_atk = solider_amount_atk * solider_atk * (lead_atk_lead + 100) / 200 * (solider_type_rate / 100);
damage_atk = turn_atk / solider_hp + (lead_atk_atk - lead_def_def) / solider_hp;
printf("turn_atk=%.0f\n",turn_atk);
printf("我方的殺敵數=%.0f\n",damage_atk);
if(solider_type_def==1)
{
if(solider_type_atk>=1 && solider_type_atk<=3)
{solider_type_rate=100;}
if(solider_type_atk>=4 && solider_type_atk<=6)
{solider_type_rate=130;}
if(solider_type_atk>=7 && solider_type_atk<=9)
{solider_type_rate=70;}
if(solider_type_atk>=10 && solider_type_atk<=12)
{solider_type_rate=115;}
if(solider_type_atk>=13 && solider_type_atk<=15)
{solider_type_rate=85;}
}
if(solider_type_def==2)
{
if(solider_type_atk>=1 && solider_type_atk<=3)
{solider_type_rate=70;}
if(solider_type_atk>=4 && solider_type_atk<=6)
{solider_type_rate=100;}
if(solider_type_atk>=7 && solider_type_atk<=9)
{solider_type_rate=130;}
if(solider_type_atk>=10 && solider_type_atk<=12)
{solider_type_rate=85;}
if(solider_type_atk>=13 && solider_type_atk<=15)
{solider_type_rate=115;}
}
if(solider_type_def==3)
{
if(solider_type_atk>=1 && solider_type_atk<=3)
{solider_type_rate=130;}
if(solider_type_atk>=4 && solider_type_atk<=6)
{solider_type_rate=70;}
if(solider_type_atk>=7 && solider_type_atk<=9)
{solider_type_rate=100;}
if(solider_type_atk>=10 && solider_type_atk<=12)
{solider_type_rate=115;}
if(solider_type_atk>=13 && solider_type_atk<=15)
{solider_type_rate=85;}
}
if(solider_type_def==4)
{
if(solider_type_atk>=1 && solider_type_atk<=3)
{solider_type_rate=85;}
if(solider_type_atk>=4 && solider_type_atk<=6)
{solider_type_rate=115;}
if(solider_type_atk>=7 && solider_type_atk<=9)
{solider_type_rate=85;}
if(solider_type_atk>=10 && solider_type_atk<=12)
{solider_type_rate=100;}
if(solider_type_atk>=13 && solider_type_atk<=15)
{solider_type_rate=115;}
}
if(solider_type_def==5)
{
if(solider_type_atk>=1 && solider_type_atk<=3)
{solider_type_rate=115;}
if(solider_type_atk>=4 && solider_type_atk<=6)
{solider_type_rate=85;}
if(solider_type_atk>=7 && solider_type_atk<=9)
{solider_type_rate=115;}
if(solider_type_atk>=10 && solider_type_atk<=12)
{solider_type_rate=85;}
if(solider_type_atk>=13 && solider_type_atk<=15)
{solider_type_rate=100;}
}
if(solider_type_def==1 or solider_type_def==4 or solider_type_def==5)
{solider_atk=18;}
if(solider_type_def==2 or solider_type_def==3)
{solider_atk=17;}
if(solider_type_atk==1 or solider_type_atk==4)
{solider_hp=34;}
if(solider_type_atk==2 or solider_type_atk==5)
{solider_hp=50;}
if(solider_type_atk==3 or solider_type_atk==6)
{solider_hp=70;}
if(solider_type_atk==7)
{solider_hp=32;}
if(solider_type_atk==8)
{solider_hp=48;}
if(solider_type_atk==9)
{solider_hp=68;}
if(solider_type_atk==10 or solider_type_atk==13)
{solider_hp=28;}
if(solider_type_atk==11 or solider_type_atk==14)
{solider_hp=44;}
if(solider_type_atk==12 or solider_type_atk==15)
{solider_hp=64;}
turn_atk = solider_amount_def * solider_atk * (lead_def_lead + 100) / 200 * (solider_type_rate / 100);
damage_atk = turn_atk / solider_hp + (lead_def_atk - lead_atk_def) / solider_hp;
printf("turn_atk=%.0f\n",turn_atk);
printf("敵方的殺敵數=%.0f\n",damage_atk);
}
}
return 0;}
//bug歷史
/*
v0.1 最初版本,容易崩潰
v0.2 改正兵種間倍率,程式依舊不穩
v1.0 傷害公式大改寫
v1.1將雙方的損傷一起計算
*/
-----------------------------
結論:用excel寫比方便+輕鬆 (眼神死