无法让 C++ sfml 检查文本是否为蓝色
can't get C++ sfml to check if text is blue
我正在尝试编写一个代码来检查 answer2 的颜色是否为蓝色,以了解用户是否得到了错误的答案,但编译器不允许在 SFML 中这样做
if (!next)
{
while (window.pollEvent(test))
{
switch (test.type)
{
case Event::Closed:
window.close();
break;
case Event::KeyPressed:
if (Keyboard::isKeyPressed(Keyboard::Num1))
{
answer1.setFillColor(Color::Blue);
answer2.setFillColor(Color::Black);
}
if (Keyboard::isKeyPressed(Keyboard::Num2))
{
answer2.setFillColor(Color::Blue);
answer1.setFillColor(Color::Black);
}
if (Keyboard::isKeyPressed(Keyboard::Enter))
{
next = true;
running = true;
}
break;
}
}
}
next = false;
if (!next)
{
answer2.getFillColor = answer;
if (answer == "Blue")
{
question.setString("Correct");
}
else
{
question.setString("Wrong");
}
}
这是我从编译器那里得到的错误信息
c:\users\just a guy\documents\visual studio 2015\projects\francais project\francais project\francais project.cpp(90): error C2659: '=': function as left operand
answer2.getFillColor = answer;
错了。 getFillColor
是一个函数,您不能为其分配任何值。如果您想要该函数的 value 使用 answer2.getFillColor()
并让它位于表达式的右侧。
answer = answer2.getFillColor();
假设您的代码 answer
是 std::string
。但是您不能将 sf::Color
转换为 std::string
。相反,让 answer
成为 sf::Color
。这样你就可以通过比较 sf::Color::Blue
:
来实际检查它是否是蓝色的
sf::Color answer;
//...
answer = answer2.getFillColor();
if (answer == sf::Color::Blue)
{
question.setString("Correct");
}
else
{
question.setString("Wrong");
}
我正在尝试编写一个代码来检查 answer2 的颜色是否为蓝色,以了解用户是否得到了错误的答案,但编译器不允许在 SFML 中这样做
if (!next)
{
while (window.pollEvent(test))
{
switch (test.type)
{
case Event::Closed:
window.close();
break;
case Event::KeyPressed:
if (Keyboard::isKeyPressed(Keyboard::Num1))
{
answer1.setFillColor(Color::Blue);
answer2.setFillColor(Color::Black);
}
if (Keyboard::isKeyPressed(Keyboard::Num2))
{
answer2.setFillColor(Color::Blue);
answer1.setFillColor(Color::Black);
}
if (Keyboard::isKeyPressed(Keyboard::Enter))
{
next = true;
running = true;
}
break;
}
}
}
next = false;
if (!next)
{
answer2.getFillColor = answer;
if (answer == "Blue")
{
question.setString("Correct");
}
else
{
question.setString("Wrong");
}
}
这是我从编译器那里得到的错误信息
c:\users\just a guy\documents\visual studio 2015\projects\francais project\francais project\francais project.cpp(90): error C2659: '=': function as left operand
answer2.getFillColor = answer;
错了。 getFillColor
是一个函数,您不能为其分配任何值。如果您想要该函数的 value 使用 answer2.getFillColor()
并让它位于表达式的右侧。
answer = answer2.getFillColor();
假设您的代码 answer
是 std::string
。但是您不能将 sf::Color
转换为 std::string
。相反,让 answer
成为 sf::Color
。这样你就可以通过比较 sf::Color::Blue
:
sf::Color answer;
//...
answer = answer2.getFillColor();
if (answer == sf::Color::Blue)
{
question.setString("Correct");
}
else
{
question.setString("Wrong");
}