问题描述
所以一直在尝试我的退出和播放按钮工作,但由于某些奇怪的原因,他们也没有按照我想要的方式做出反应。当我将一个更改为 else if and if only 语句时,它们要么退出,要么再次更改它们,然后都开始游戏。尽管它们是如何被选择和按下的,但它们表现得就像是同一个按钮而不是个体。
这是我的头文件:
A
这里是cpp文件:
console.log(foo(b)); // compiler error!
// -----------> ~
// Argument of type 'B' is not assignable to parameter of type 'A'.
举个例子,我的意思是这两个按钮都开始游戏,但如果我把它改成这样:
#pragma once
#include <memory>
#include "State.h"
#include "Game.h"
#include <SFML/Graphics.hpp>
class MainMenu : public Engine::State
{
public:
enum behavior
{
HOVERED,norMAL
};
private:
std::shared_ptr<Context> context;
sf::Text gameTitle;
sf::Text playButton;
sf::Text exitButton;
void hover(sf::RenderWindow& window,sf::Event event);
//checking certain conditions if it is true or false
bool isPlayButtonSelected;
bool isPlayButtonpressed;
bool isExitButtonSelected;
bool isExitButtonpressed;
public:
MainMenu(std::shared_ptr<Context>& context);
~MainMenu();
void Init() override;
void Processinput() override;
void Update(sf::Time deltaTime) override;
void Draw() override;
};
他们都将退出而不是开始游戏。我一直在搞乱一个 if 和另一个 else 或两者都好像 if 语句。尽管进行了更改和测试,但没有一个按钮单独运行,也没有按应有的方式运行。很好奇如何解决这个问题?
不确定是否应该提供所有标题和 cpp 文件以获取更多上下文。
解决方法
我不确定我是否理解您的问题,但在您的示例中,似乎 isExitButtonPressed
最后总是正确的。
您在开始时将其设置为 false,然后在 if 语句中将其设置为 true,该语句始终满足条件,表明您事先将 isExitButtonPressed
设置为 false!