为了让自己更多地了解c ++,我决定编写一个文字游戏。我真的很喜欢它,而且我对功能的理解比以前好得多,但是遇到了一些障碍。
在战斗中,我试图自学矢量,但是很难理解它们。
因此,我从一个功能开始,而我要在功能内部执行的操作是根据您的totalSoldiers获得一个向量,该int值会在您购买士兵(并失去他们)时发生变化。第二个代表敌军的向量,这个向量的值根据事件进行了调整。
牢记这两个向量,它们将自始至终进行比较。比较会滚动一个介于1到20之间的数字,然后在滚动该数字之后添加其他修饰符。比较发生两次,并且如果满足该单个索引的防护,它将向该元素添加一个(这些向量已初始化,因此它们中的所有内容均为0),一个表示该元素(士兵)已死。对每个元素进行此比较,并重复进行直到一个向量被全1填充为止。
此后,将清理矢量,并调整yourArmy(表示您有多少士兵的矢量)的大小,并将其值重新设置为0。
我知道我希望它如何工作,但是我对如何到达那里没有经验。
这个游戏不是很重要,更重要的是,我真的很想看一个项目,因为我有很多有趣的编程和添加过程。
我问了很多,但还没有收到我足够理解并付诸实践的答案。此外,与我同班的大多数人都不确定如何使用向量。
void Combat(int &totalSoldiers, int &food, int &AC, int eventNum)
{
/ * eventNum只是从另一个函数中获取的数字,它将告诉我们我们在战斗什么 totalSoldiers是您拥有多少士兵,因为您可以购买以添加到军队中 食物只是军队的改良剂,而AC则只能决定敌人要掷到多高才能击中你* /
int d20 = (rand() % 20) + 1; //Dice that gets rolled
int enemyDamage; //A modifier that gets added to the roll for the enemy
int enemyArmor; //A modifier that determines if the roll made for your soldiers is enough to hit.
int enemyNumber; //Determines how many enemies there are in the encounter
bool inCombat = false; //Bool that will determine when combat ends
vector<int> yourArmy; //vector I made to try and represent your army in game
yourArmy.reserve(totalSoldiers); //I'm pretty sure this is the same as setting the size
vector<int> enemyArmy; //vector for the enemy
enemyArmy.reserve(10000);//I figured 10000 was a good number to keep as the upper limits
while (!inCombat)
{
if (1 <= eventNum && eventNum <= 50)
{
enemyNumber = (rand() % 40) + 12; //random enemy forces
enemyArmy.resize(enemyNumber);
auto it1 = yourArmy.begin();
auto it2 = enemyArmy.begin();
for (; (it1 != yourArmy.end()) && (it2 != enemyArmy.end()); ++it1, ++it2)
{
}
}
}
好吧,我不确定会发生什么,因为我不确定是否要以正确的方式进行操作。主要寻求有关我所问的问题是否可行的指导,以及我是否朝着正确的方向甚至方法去做。 :/