-1
我想創建一個簡單的類層次結構作爲幻想戰鬥遊戲的基礎。我試圖讓兩個班級去戰鬥(直到他們中的一個達到零強度)。這是我到目前爲止:如何讓兩個不同的類在一個循環中進行交互
int main()
{
srand(time(NULL));
Barbarian b;
BlueMen bm;
Medusa m;
Vampire v;
HarryPotter hp;
cout << "Main Menu" << endl << endl;
cout << "Press 1 for Barbarain" << endl;
cout << "Press 2 for Medusa" << endl;
cout << "Press 3 for Blue Men" << endl;
cout << "Press 4 for Vampire" << endl;
cout << "Press 5 for Harry Potter" << endl << endl;
int c1, c2, a1, a2, s1, s2, d1, d2, ar1, ar2;
cout << "What is the first creature that you want?" << endl;
cin >> c1;
cout << "What is the second creature that you want?" << endl;
cin >> c2;
if (c1 == 1)
{
s1 = do_getStrength(&b);
a1 = do_getAttack(&b);
d1 = do_getDefense(&b);
ar1 = do_getArmor(&b);
}
if (c1 == 2)
{
s1 = do_getStrength(&m);
a1 = do_getAttack(&m);
d1 = do_getDefense(&m);
ar2 = do_getArmor(&m);
}
if (c1 == 3)
{
s1 = do_getStrength(&bm);
a1 = do_getAttack(&bm);
d1 = do_getDefense(&bm);
ar1 = do_getArmor(&bm);
}
if (c1 == 4)
{
s1 = do_getStrength(&v);
a1 = do_getAttack(&v);
d1 = do_getDefense(&v);
ar1 = do_getArmor(&v);
}
if (c1 == 5)
{
s1 = do_getStrength(&hp);
a1 = do_getAttack(&hp);
d1 = do_getDefense(&hp);
ar1 = do_getArmor(&hp);
}
//Creature 2
if (c2 == 1)
{
s2 = do_getStrength(&b);
a2 = do_getAttack(&b);
d2 = do_getDefense(&b);
ar2 = do_getArmor(&b);
}
if (c2 == 2)
{
s2 = do_getStrength(&m);
a2 = do_getAttack(&m);
d2 = do_getDefense(&m);
ar2 = do_getArmor(&m);
}
if (c2 == 3)
{
s2 = do_getStrength(&bm);
a2 = do_getAttack(&bm);
d2 = do_getDefense(&bm);
ar2 = do_getArmor(&bm);
}
if (c2 == 4)
{
s2 = do_getStrength(&v);
a2 = do_getAttack(&v);
d2 = do_getDefense(&v);
ar2 = do_getArmor(&v);
}
if (c2 == 5)
{
s2 = do_getStrength(&hp);
a2 = do_getAttack(&hp);
d2 = do_getDefense(&hp);
ar2 = do_getArmor(&hp);
}
Creature monster1(c1, a1, s1, d1, ar1);
Creature monster2(c2, a2, s2, d2, ar2);
monster1.printstats();
cout << endl;
monster2.printstats();
do
{
monster1.dealdamage(monster1, monster2);
monster2.dealdamage(monster2, monster1);
} while ((s1 > 0) && (s2 > 0));
cout << endl;
monster1.printstats();
cout << endl;
monster2.printstats();
cin.get();
cin.ignore();
cin.clear();
return 0;
}
do while循環導致無限循環和for循環不會導致兩個生物戰鬥。任何意見將不勝感激。
您不改變條件離子在你的循環內:'while((s1> 0)&&(s2> 0));'。沒有觸及's1'或's2'。在下一次詢問之前,先通過調試器進行操作。 –
這種設計對於多態性已經成熟。 – AndyG
你的問題與類之間的交互無關,你在談論對象。 – kfsone