我想创建这个函数:
void drawSquare(int x) {
tortuga.forward(x);
tortuga.right(90);
tortuga.forward(x);
tortuga.right(90);
tortuga.forward(x);
tortuga.right(90);
}
但是,我发现标识符“tortuga”未定义。
我试着这样修改函数:
void drawSquare(int x) {
ct::TurtleScreen scr;
scr.bgcolor({ "white" });
ct::Turtle tortuga(scr);
Home(tortuga);
tortuga.forward(x);
tortuga.right(90);
tortuga.forward(x);
tortuga.right(90);
tortuga.forward(x);
tortuga.right(90);
tortuga.pencolor({ "red" });
tortuga.speed(ct::TS_FASTEST);
scr.exitonclick();
}
我知道标识符“tortuga”现在已经定义好了,这看起来很有效。但是,出现了20多个窗口,在每个窗口中,乌龟只画了一个正方形的三条边,如下图所示:image我希望绘制螺旋。
以下是所有的程序:
#include"CTurtle.hpp"
#include <iostream>
using namespace std;
#define Home(x) x.left(90)
namespace ct = cturtle;
int shellSize;
int initialShellSize;
void drawSquare(int x) {
ct::TurtleScreen scr;
scr.bgcolor({ "white" });
ct::Turtle tortuga(scr);
Home(tortuga);
tortuga.forward(x);
tortuga.right(90);
tortuga.forward(x);
tortuga.right(90);
tortuga.forward(x);
tortuga.right(90);
tortuga.pencolor({ "red" });
tortuga.speed(ct::TS_FASTEST);
scr.exitonclick();
}
int main(int argc, char** argv) {
std::cout << "Type the size of the outershell of the spiral: "; // Type a number and press enter
std::cin >> shellSize; // Get user input from the keyboard
initialShellSize = shellSize;
for (int i = 10; i <= initialShellSize; i = i + 10)
{
shellSize = initialShellSize - (initialShellSize/i);
drawSquare(shellSize);
}
return 0;
}
1条答案
按热度按时间wpx232ag1#
我以前从来没有使用过这个库,但是看起来你所需要做的就是给你的函数添加一个turtle参数,然后把turtle对象传递给函数。这和你已经对
x
参数所做的没有什么不同。参数传递是 C++ (以及几乎所有编程语言)的一个基本技术。我使用了一个引用
ct::Turtle& tortuga
而不是ct::Turtle tortuga
,我想这是正确的,但是正如我所说的,我以前从未使用过这个库。正如前面提到的,要得到一个正方形,我猜你需要调用
forward
四次。我还将对
Home
的调用放在函数内部,您可能不同意。