我已經在這裏工作了幾個小時。我正在C++中做一個小型遊戲,我想弄清楚如何從函數內部編輯變量。我可以將變量放在main()中並將它們編輯爲沒有問題,但我無法弄清楚我需要從函數編輯什麼。以下是功能。如何從C++的主腳本中修改函數中的變量
void HeroSelect(string& hero)
{
int gold = 20, health = 5, attack = 5, stats[2] = { health, attack };
string weapon;
cout << "Please choose your hero.\n";
cin >> hero;
if (hero == "Warrior" || hero == "warrior")
{
weapon = "Broad Sword";
cout << "You are a Warrior wielding a " << weapon << endl;
cout << "Good choice.\n"
<< "You start out with " << gold << " gold." << endl
<< "You have " << stats[0]<< " health and " << stats[1] << " attack.\n";
}
以上是函數的定義,我希望能夠當玩家受到攻擊編輯的健康,或者說得到更強的武器。以下是腳本的main()。
void main()
{
double enter, room1, room2, room3, room4, BossRoom;
int, gold = 20; //This is used as part of check inventory and will be subtracted when necessary
string hero, weapon;
//Set decimal two places
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
Intro(enter);
cout << "The first step in this adventure is to choose your hero. You can choose a warrior, a wizard, or an archer.\n";
HeroSelect(hero);
那麼,假設他獲得了一個新的武器,它給了+1攻擊我該如何反映這個函數?我會爲此創建一個單獨的功能嗎?
當玩家經歷遊戲時,他們可以隨時鍵入「統計數據」,當他們想要顯示他們當前的健康和攻擊,然後基本上只是循環回到房間的開始或打架都在。
我知道我可以對變量進行更改,如果我在main()中創建了所有的循環和所有if-else語句,但我想試試這個並保持主腳本清潔。我做了一個數組的統計數據,因爲我認爲將數組作爲列表打印是很好的。任何幫助都會很棒。謝謝!
我認爲你需要重新開始你的設計。讓我們考慮一下這個設計吧,你有一個「英雄」,聽起來像是一個物體。你有一個「武器」,另一個對象。 「英雄」應該怎麼知道他或她有什麼「武器」?也許這個「英雄」可能有某種包含「武器」的集合? 「英雄」還有什麼?也許像「健康」或「力量」這樣的屬性?這怎麼可能被納入「英雄」的對象? –
爲了讓變量在你的函數中可見,最簡單的方法是將它們移出'main'並使它們成爲[全局變量](http://stackoverflow.com/questions/9702053/how-to-declare-a -global可變式-C)。這樣可以更好地匹配您當前使用的編程風格,但全局變量和缺少存儲數據的結構都被認爲是[反模式](https://en.wikipedia.org/wiki/Anti-pattern)標籤:C++]。嘗試瞭解一下[class design](http://www.cprogramming.com/tutorial/class_design.html),然後再回到遊戲中。 – MooseBoys
感謝您的意見,如同其他人提到的那樣,我會更深入地查看課程並重寫它。仍在學習! – Matt