int main()
{
int StrFinal = 10;
int DefFinal = 20;
int IntFinal = 40;
int hp = 10;
int eStrength = 30;
int eDefense = 40;
int eIntelligence = 25;
int eHP = 10;
/*
* Begin Battle Sequence
*
*/
printf("Battle Start! \n");
while(eHP>0||hp>0)
{
int act;
printf("Player HP: %d Enemy HP: %d \n ", hp, eHP);
printf("1 - Attack \n 2 - Magic \n Select Your Move: ");
scanf("%d",&act);
switch (act)
{
case 1:
eHP = eHP - StrFinal/eDefense*5;
printf("You attacked the enemy! \n ");
break;
case 2:
eHP = eHP - IntFinal/eIntelligence*5;
printf("You Shocked the enemy! \n ");
break;
default:
printf("Invalid Input");
}
printf("The enemy attacked you! \n");
hp = hp - eStrength/DefFinal*5;
printf(" Enemy HP: %d \n",eHP);
printf(" Your HP: %d \n", hp);
}
return 0;
}
這是一個簡單的代碼我寫文字遊戲的戰鬥序列。我遇到的問題是用戶和敵人的健康輸出是不正確的。通過數學計算,敵方HP受到攻擊時應該減少1.25 ..從8.75減少到8,但輸出不影響敵方HP。ç簡單的算法....不當數學
如果我要選擇2,輸出會hp = 5
敵人hp = 5
我覺得好象是一個愚蠢的錯誤什麼的,我俯瞰。我似乎無法找到它。任何幫助表示讚賞
另外:傷害計算時,敵人的攻擊似乎也不是正確的
非常感謝您的幫助。我對c是新手,我誤導了我。我讀到這不會是一個問題,並且c會將float值截斷爲int –
@MichaelSciortino,如果您將浮點值賦予int,但Float值將被截斷爲int,但您將錯過精度 – makdu
是的,我理解這個。對於這種特殊情況,精度是不需要的,我希望它被截斷。 –