视觉 C++达到每个值后执行
visual Execute once every value is reached C++
标题并没有完全解释我想做什么。
基本上,我正在用SFML制作一个游戏,我希望一旦玩家达到一定的分数,比如说1000分,就会出现一个老板。但是我希望循环只让老板出现一次(目前一旦满足 1000 分标准,它就会疯狂地生成老板)我如何让老板出现一次?目前这是我的代码。
//Spawns Boss
if (Player1.score >= 1000)
{
boss1.rect.setPosition(generateRandom(window.getSize().x), -100);
enemyArray.push_back(boss1);
}
另外,我希望老板每1000分只出现一次。例如,一旦玩家达到 1000 分,就会出现一个 Boss,然后在 2000 分出现另一个老板,反之亦然。 我还没有想到执行此操作的代码。我认为不需要额外的代码,但如果您需要它,请告诉我
*编辑我使用了@RedFur建议的一些实现,但是它仅在达到 1000 时才有效,一旦达到 2000,代码就不会再次执行。我假设它在 3000 下也不起作用,但我从未真正尝试过,有什么建议吗?
*Edit2除了使用标志外,还使用了RedFur的解决方案来查看是否生成了boss。工作完美无瑕。修复了下面的代码:
boss_appearances = 0;
bool flag = false;
if (flag == false){
if (Player1.score/1000 > boss_appearances) {
boss_appearances++;
do stuff;
flag = true
}
}
跟踪老板出现的次数是一种方法: 每次玩家达到1000时,boss就会出现一次。然后对 1000 的每倍数再做一次。
boss_appearances = 0;
if (Player1.score/1000 > boss_appearances) {
boss_appearances++;
do stuff;
}
由于整数中的 1000,结果是一个带有截断小数的整数(假设分数也是整数)。因此,玩家第一次达到 1000 到 2000Player1.score/1000
等于 1,依此类推。
int numBossSpawns = 1;
if (Player1.score >= numBossSpawns * 1000)
{
boss1.rect.setPosition(generateRandom(window.getSize().x), -100);
enemyArray.push_back(boss1);
numBossSpawns++;
}
这样的东西可能会起作用,我认为类似的解决方案已经发布
。在查看了其他解决方案的一些注释后,对每秒每帧生成的 boss 怪物的简单快速修复是添加一个标志,以防止 boss 怪物在第一次后再次生成。
当 Boss 最初生成时,此标志可以设置为 true,然后在他被杀死时重置为 false。或者类似的东西...
// flag initialised to true. The boss isn't alive yet.
bool bossNotAlive = true;
/* check if score is a multiple of 1000, not the most effective method */
/* if the players score goes from 990 to 1090 without ever hitting 1000, */
/* it wouldn't trigger a boss spawn. */
if (bossNotAlive && Player1.score % 1000 == 0)
{
// since the boss is about to be spawned,
bossNotAlive = false;
boss1.rect.setPosition(generateRandom(window.getSize().x), -100);
enemyArray.push_back(boss1);
}
// Something in the boss to check death.
if (Boss.health < 0)
{
bossNotAlive = false;
// Call Destructor or something
}
您可能想要查看的是使用某种游戏状态管理器,专门用于跟踪当前状态,发生的情况和时间。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 将执行、作业和WinAPI相乘
- 对字符数组中的元素执行逐位操作
- 为什么g++在未执行的代码处标记强制转换错误
- 如何使用原子指针执行双缓冲