gpt4 book ai didi

c++ - Vector2i 不想合作 :D

转载 作者:行者123 更新时间:2023-11-28 04:55:16 24 4
gpt4 key购买 nike

我的问题是:

if(Keyboard::isKeyPressed(Keyboard::D))
{
source.y=right;
source.x++;
}

我的简单代码片段,source.y 不想取值 0。这是什么原因造成的?完整代码:

#include <SFML/Graphics.hpp>
#include <iostream>
#include <conio.h>
#include <windows.h>

#define CW 64//cell width

using namespace std;
using namespace sf;

int main()
{
RenderWindow win(VideoMode(1200,800),"lol");
win.setFramerateLimit(30);

Texture t;
t.loadFromFile("char.png");

Sprite char_;
char_.setTexture(t);

enum dir{right,left,idle};
Vector2i source(1,idle);


while(win.isOpen())
{
win.clear();

if(Keyboard::isKeyPressed(Keyboard::D))
{
source.y=right;
source.x++;
}
if(Keyboard::isKeyPressed(Keyboard::A))
{
source.y=left;
source.x++;
}
else
{
source.y=idle;
}

char_.setTextureRect(IntRect(source.x*CW,source.y*CW,CW,CW));


if(source.x==3 || source.x>3)
{
source.x=0;
}

cout<<"source.x: "<<source.x<<endl;
cout<<"source.y: "<<source.y<<endl;

win.draw(char_);
win.display();


system("cls");

}
}

最佳答案

您在第一个 if 之后缺少一个 else:

if(Keyboard::isKeyPressed(Keyboard::D))
{
source.y=right;
source.x++;
}

if(Keyboard::isKeyPressed(Keyboard::A))
{
source.y=left;
source.x++;
}
else
{
source.y=idle;
}

即使 D 被按下,你也会在最后的 else 子句中结束,因为它不是 A。所以 source.y right 的值,但会立即被行 source.y=idle;

您可能想要的(检查第二个 if 前面的 else)是:

if(Keyboard::isKeyPressed(Keyboard::D))
{
source.y=right;
source.x++;
}
else if(Keyboard::isKeyPressed(Keyboard::A))
{
source.y=left;
source.x++;
}
else
{
source.y=idle;
}

关于c++ - Vector2i 不想合作 :D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270121/

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