Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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++ - Fatal编程技术网

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);