gpt4 book ai didi

c++ - sfml 键盘条件或

转载 作者:行者123 更新时间:2023-11-27 22:37:26 25 4
gpt4 key购买 nike

我是c++编程的初学者

当我按下按钮时,我试图为我的角色设置动画。

所以我写了这个:

if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up||Down||Left||Right)
{...

我找到了一个解决方案,但它很复杂

if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)||sf::Keyboard::isKeyPressed(sf::Keyboard::Down)||sf::Keyboard::isKeyPressed(sf::Keyboard::Right)||sf::Keyboard::isKeyPressed(sf::Keyboard::Left))

我想知道为什么我的第一次尝试不起作用?我该怎么做才能尽可能简单?

最佳答案

TL;DR:不,真的没有办法绕过必须写下你的“复杂”条件。


逻辑或运算符的一般语法是<expression> || <expression> .

sf::Keyboard::Up||Down左侧确实是一个表达式,但右侧不是。它只是一个可能甚至没有声明的符号,因此不会编译。


逻辑或运算符的结果是 bool值,truefalse .值true可以隐式转换为 1false0 .在相反的方向上,所有非零值都可以隐式转换为 true而只有 0可转换为 false .

如果我们采用整个表达式 sf::Keyboard::Up||Down||Left||Right ,并假设符号在没有任何作用域的情况下有效,则该表达式等于 ((sf::Keyboard::Up||Down)||Left)||Right .

现在至于如何计算该表达式,它取决于那些符号的值。但是,如果我们假设只有 一个 可能为零,那么我们有

  • sf::Keyboard::Up||Down这将是 true
  • true||Left这将是 true
  • true||Right这将是 true .

所以你的情况

if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up||Down||Left||Right))

真的是

if(sf::Keyboard::isKeyPressed(true))

等于

if(sf::Keyboard::isKeyPressed(1))

使用the Key enumeration等于

if(sf::Keyboard::isKeyPressed(sf::Keyboard::B))

关于c++ - sfml 键盘条件或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com