SFML:错误:')'标记之前的预期主要表达式

问题描述 投票:1回答:1
  while (window.isOpen())
    {
        // Process events
        sf::Event event;
    while (window.pollEvent(event))
        {
         if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))()&&accelerationx > 15;
         {
   accelerationx = accelerationx + 5;
         }
         if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))()&&accelerationx > 0;
         {
   accelerationx = accelerationx -5;
         }
         if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))()&&accelerationx > 15;
         {
   accelerationy = accelerationy + 5;
         }
         if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))()&&accelerationx > 0;
         {
   accelerationy = accelerationy - 5;
         }
   speedx = accelerationx + speedx;
   speedy = accelerationy + speedy;
   sprite.move(sf::Vector2f(0.f+speedx, 0.f+speedy));

        }
   // Clear screen
   window.clear();
   // Draw the sprite
   window.draw(sprite);
   // Update the window
   window.display();
    }
    return EXIT_SUCCESS;
}

返回:

错误:')'标记之前的预期主表达式

C ++和SFML的新手,如果这是一个愚蠢的问题,我们深表歉意。 Lorem ipsum dolor坐下来,一直保持着良好的状态。 Fusce dui erat,交流变得轻松,无忧无虑。

c++ sfml
1个回答
1
投票

if之后的表达式(条件)必须在括号()中,并且不能以分号;终止。

如果if块中只有1条命令,则无需将其放在大括号{}之间:

   if ((sf::Keyboard::isKeyPressed(sf::Keyboard::D))() && accelerationx > 15)
       accelerationx = accelerationx + 5;
   if ((sf::Keyboard::isKeyPressed(sf::Keyboard::A))() && accelerationx > 0)
       accelerationx = accelerationx -5;

此外,最好使用赋值运算符(+=-=)来增加/减少值:

   if ((sf::Keyboard::isKeyPressed(sf::Keyboard::D))() && accelerationx > 15)
       accelerationx += 5;
   if ((sf::Keyboard::isKeyPressed(sf::Keyboard::A))() && accelerationx > 0)
       accelerationx -= 5;
© www.soinside.com 2019 - 2024. All rights reserved.