C++ C++;尝试制作游戏时,返回函数时遇到问题';while循环中的s值。希望得到帮助 #包括 #包括 #包括 使用名称空间std; int playerhealth=100; int enemyhealth=100; 默认随机引擎随机(时间(空)); 均匀实分布概率(0.0,1.0); 浮动命中=机会(随机); int playerturn(){ 如果(命中率>0.5){ enemyhealth-=10; 恢复健康; } } int enemyturn(){ 如果(命中率>0.5){ 玩家健康-=10; 回归玩家健康; } } int main(){ (表0){ playerturn(); 库特
对C++ C++;尝试制作游戏时,返回函数时遇到问题';while循环中的s值。希望得到帮助 #包括 #包括 #包括 使用名称空间std; int playerhealth=100; int enemyhealth=100; 默认随机引擎随机(时间(空)); 均匀实分布概率(0.0,1.0); 浮动命中=机会(随机); int playerturn(){ 如果(命中率>0.5){ enemyhealth-=10; 恢复健康; } } int enemyturn(){ 如果(命中率>0.5){ 玩家健康-=10; 回归玩家健康; } } int main(){ (表0){ playerturn(); 库特,c++,C++,对chance的调用只会发生一次,因此hit只有一个值。这就像在游戏开始时掷骰子一次,然后根据该掷骰子进行每次攻击。相反,你应该在每个玩家回合开始时掷骰子 这个对机会的调用只会发生一次,所以命中只有一个值。这就像在游戏开始时掷骰子一次,然后根据该掷骰进行每次攻击。相反,你应该在每个玩家回合开始时掷骰子。你不是每次循环都重新计算机会,而是我们只是重复使用每次启动时计算的相同值。您是否检查了hit的值?使用名称空间std;-请消除这个邪恶!问题是“我可以做些什么来改进我的代码?”似乎太宽泛了。如果函
chance
的调用只会发生一次,因此hit
只有一个值。这就像在游戏开始时掷骰子一次,然后根据该掷骰子进行每次攻击。相反,你应该在每个玩家回合开始时掷骰子
这个对机会的调用只会发生一次,所以命中只有一个值。这就像在游戏开始时掷骰子一次,然后根据该掷骰进行每次攻击。相反,你应该在每个玩家回合开始时掷骰子。你不是每次循环都重新计算机会,而是我们只是重复使用每次启动时计算的相同值。您是否检查了hit的值?
使用名称空间std;
-请消除这个邪恶!问题是“我可以做些什么来改进我的代码?”似乎太宽泛了。如果函数中的条件为false,则不会返回任何内容。如果将调用代码更改为实际使用返回的值,则会返回。您没有在每次循环中重新计算机会,只是使用每次启动时计算的相同值。是否检查了hit的值?使用namespace std;
-请摆脱邪恶!问题“我能做些什么来改进我的代码”似乎太广泛了。如果函数中的条件为false,则不会返回任何内容。如果将调用代码更改为实际使用返回值,则将有“滚骰子”我宁愿不…:d这是改进代码的好方法,但我的主要问题仍未解决。我正在尝试返回函数playerturn()和enemyturn()中的值,但它不会返回,因此我的程序将永远运行,并且不会减少,这样它就可以打破while循环退出的条件。@momomo您确定吗?返回值是不必要的,因为您正在修改全局变量,并且不会对返回值做任何操作。您可以让这些函数返回void
。现在,如果您对chance的调用返回的值小于0.5,那么您的代码将永远运行。我不是很了解您,很抱歉我是一个彻头彻尾的傻瓜。@momomo您看到了playerhealth
和enemyhealth
是如何在您的函数之外声明的吗?这意味着它们是全局的。所有函数都可以看到它们整数。当您在函数中执行playerhealth-=10;
时,您正在减少全局playerhealth
。在main
中,您打印此全局playerhealth
,因此如果已减少,将打印新值。“滚动模具”我宁愿不…:d这是改进代码的好方法,但我的主要问题仍未解决。我正在尝试返回函数playerturn()和enemyturn()中的值,但它不会返回,因此我的程序将永远运行,并且不会减少,这样它就可以打破while循环退出的条件。@momomo您确定吗?返回值是不必要的,因为您正在修改全局变量,并且不会对返回值做任何操作。您可以让这些函数返回void
。现在,如果您对chance的调用返回的值小于0.5,那么您的代码将永远运行。我不是很了解您,很抱歉我是一个彻头彻尾的傻瓜。@momomo您看到了playerhealth
和enemyhealth
是如何在您的函数之外声明的吗?这意味着它们是全局的。所有函数都可以看到它们整数。当您在函数中执行playerhealth-=10;
时,您正在减小全局playerhealth
。在main
中,您打印此全局playerhealth
,因此如果已减小,将打印新值。
#include <iostream>
#include <ctime>
#include <random>
using namespace std;
int playerhealth = 100;
int enemyhealth = 100;
default_random_engine random(time(NULL));
uniform_real_distribution<float> chance(0.0, 1.0);
float hit = chance(random);
int playerturn() {
if (hit > 0.5) {
enemyhealth -= 10;
return enemyhealth;
}
}
int enemyturn() {
if (hit > 0.5) {
playerhealth -= 10;
return playerhealth;
}
}
int main() {
cout << "simulating combat" << endl;
while ((enemyhealth > 0) && (playerhealth > 0)) {
playerturn();
cout << " enemy" << enemyhealth << endl;
enemyturn();
cout << "player"<<playerhealth << endl;
//the values inside the playerturn and enemy turn don't change
}
}
float hit = chance(random);