C++ 为数据成员分配一个新的随机方向,该方向与c+中的当前方向不同+;
}) 我需要Update()函数,该函数调用ChangeDirection()和Draw()来增加和减少我所做的当前方向上的xy值。我的问题是y或x不能是(-)值 而且ChangeDirection()应该为方向数据指定一个随机方向,并且该方向必须与当前方向不同。 我能够在相同的ChangeDirection()函数中cout随机方向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 };
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
}