C++ 为数据成员分配一个新的随机方向,该方向与c+中的当前方向不同+;

C++ 为数据成员分配一个新的随机方向,该方向与c+中的当前方向不同+;,c++,class,random,assign,non-repetitive,C++,Class,Random,Assign,Non Repetitive,}) 我需要Update()函数,该函数调用ChangeDirection()和Draw()来增加和减少我所做的当前方向上的xy值。我的问题是y或x不能是(-)值 而且ChangeDirection()应该为方向数据指定一个随机方向,并且该方向必须与当前方向不同。 我能够在相同的ChangeDirection()函数中cout随机方向 class Child:public Parent{ public: enum Direction { Left, Right, Up, Down };

})

我需要Update()函数,该函数调用ChangeDirection()Draw()来增加和减少我所做的当前方向上的xy值。我的问题是yx不能是(-)值

而且ChangeDirection()应该为方向数据指定一个随机方向,并且该方向必须与当前方向不同。 我能够在相同的ChangeDirection()函数中cout随机方向

class Child:public Parent{
public:
    enum Direction { Left, Right, Up, Down };
    Direction direction;
    void Update();            
private:
    int x,y;
    void ChangeDirection();
    void Draw();
Direction=static\u cast(rand()%4);

cout由于您指定的是随机方向,因此有时指定的方向与前一个方向相等是有意义的。尝试以下方法:

if ( direction == 0 ){
    cout << "Right";
    x++;
}
else if (direction == 1 ){
    cout << "Down";
    y++;
}
else if (direction == 2 ){
    cout << "Up";
    y--;
}
else if (direction == 3 ){
    cout << "Left";
    x--;
}
Draw();

因为你没有给x和y任何限制,所以它们显然可以取任何值。但我该怎么做呢?这真的很有帮助,x和y的条件语句。。但指定随机方向有时仍会打印类似的图像。我认为,如果发生类似情况,也应该有条件再次指定方向。。。。你知道怎么做吗?哦,呜呜。我忘了rand()可以返回0。我已经编辑了我上面的帖子,以确保有一个新的价值。太好了!!现在很好用。但是,如果我调用20次,我发现它在两个或三个地方是相似的。。没关系,因为我只想要5次。无论如何,如果你有任何想法通过一个循环或其他东西进行过滤,以便我们可以再次分配,直到我们得到不同的一个,那么请让我知道。
if ( direction == 0 ){
    cout << "Right";
    x++;
}
else if (direction == 1 ){
    cout << "Down";
    y++;
}
else if (direction == 2 ){
    cout << "Up";
    y--;
}
else if (direction == 3 ){
    cout << "Left";
    x--;
}
Draw();
Direction direction = static_cast<Direction>((currentDirection + 1 + (rand() % 3) ) % 4);
 if(x > 0){
   x--;
 } else {
 //do something else
 }