Re: [徵文] [心得] 攻擊骰的數值

看板Unlight (Unlight卡片對戰)作者 (西嘉嘉)時間11年前 (2013/07/14 19:38), 編輯推噓6(600)
留言6則, 6人參與, 最新討論串3/3 (看更多)
按照慣例(有慣例可循嗎XD)我寫了大聖堂對上普通攻擊的骰傷期望值。 我用的編譯器當然是Dev C++ 囉! (我也知道Dev C++有bug啦= =) 然後,我不會上傳EXE檔,所以煩請板上的板友幫我編譯一下, 上傳EXE檔,順便幫我抓bug一下。 /* Unlight 戰鬥傷害預測 開發人員 Sonava */ #include <cstdarg> #include <iostream> using namespace std; double pas(int,int);//巴斯卡三角形 double power3(int);//計算3的n次方 double t(double,int,int,int);//計算結果 double power2(int); int main (void) { int a,d,hp,i,j; char again; double a2,d2,c,lethal,cans,temp; cout<<"Unlight damage predict"<<endl; cout<<"Developer: Sonava"<<endl; do{ cout<<"please input attack value: "; cin>>a; cout<<"please input defense value: "; cin>>d; cout<<"please input critical value(EX:0.05): "; cin>>c; cout<<"please input HP value: "; cin>>hp; a2=power3(a); //機率底 d2=power3(d); //機率底 double as[a],ds[d],ans[a+1],ans2[a+1]; for(i=0;i<=a;i++) as[i]=t(a2,a,i,a-i); //計算單次擲骰各數機率 for(i=0;i<=d;i++) ds[i]=t(d2,d,i,d-i); //計算單次擲骰各數機率 for(i=1;i<=a;i++) ans[i]=0,ans2[i]=0; //歸零 ans[0]=1; for(i=a;i>0;i--) //計算單次擲骰結果機率 { for(j=0;((i+j)<=a)&&(j<=d);j++)ans[i]+=as[i+j]*ds[j]; ans[0]-=ans[i]; } for(i=0;i<=a;i++) { for(j=a,temp=0;j>i;j--) temp=ans[j]+temp;// ans2[i]=ans[i]*ans[i]+2*ans[i]*temp; } for(temp=0,i=0;i<=a;i++)temp+=(ans2[i]*i); for(i=0;i<=a;i++) cout<<"v: "<<i<<"\t"<<"p: "<<ans2[i]<<endl; cout<<"v=value,p=possibility"<<endl; for(cans=0,i=a;cans<c;i--) cans+=ans2[i]; cout<<"damage value is in: "<<i+1<<endl; for(i=0,lethal=0;i<hp;i++) lethal+=ans2[i]; cout<<"lethal possibility is: "<<1-lethal<<endl; cout<<"expect is:"<<temp<<endl; cout<<"do again?(y/n)"; cin>>again; } while((again!='n')&(again!='N')); return 0; } double pas(int n,int p) { double ans=1; int i; if((n-p)>p) p=n-p;//計算出較大的值 for(i=n;i>p;i--)ans*=i;//算出最小的乘數 for(i=(n-p);i>0;i--)ans/=i;//算出需要除掉的數 return ans; } double power3(int a) { if(a>0) return power3(a-1)*3; else return 1; } double t(double a,int b,int c, int d) { return pas(b,c)/a*power2(d); } double power2(int d) { if(d>0) return power2(d-1)*2; else return 1; } -- 當我們經過裁縫店時,我就說這是裁縫店,並且描述裁縫師做些什麼, 經過麵包店,我就說這是麵包店,而且說明麵包師傅的工作, 經過色情玩具店,我就趕快指著對街說,對面是壁紙專賣店,然後解釋壁紙是什麼。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.164.107.239

07/14 19:56, , 1F
只學過JAVA,看不懂路過..推推
07/14 19:56, 1F

07/14 20:02, , 2F
只學過JAVA和C 路過..推推
07/14 20:02, 2F

07/14 20:06, , 3F
推西嘉嘉同學的C++,活學活用,佩服佩服
07/14 20:06, 3F

07/14 21:23, , 4F
恩恩 跟我想的差不多
07/14 21:23, 4F

07/14 22:33, , 5F
快推 不然別人以為我們看不懂(x
07/14 22:33, 5F

07/15 00:56, , 6F
07/15 00:56, 6F
文章代碼(AID): #1HuetI-S (Unlight)
文章代碼(AID): #1HuetI-S (Unlight)