c++ 如何使标识符“tortuga”不被定义?

7z5jn7bk  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(135)

我想创建这个函数:

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;
}
wpx232ag

wpx232ag1#

我以前从来没有使用过这个库,但是看起来你所需要做的就是给你的函数添加一个turtle参数,然后把turtle对象传递给函数。这和你已经对x参数所做的没有什么不同。参数传递是 C++ (以及几乎所有编程语言)的一个基本技术。

void drawSquare(ct::Turtle& tortuga, int x) {
    Home(tortuga);
    tortuga.forward(x);
    tortuga.right(90);
    tortuga.forward(x);
    tortuga.right(90);
    tortuga.forward(x);
    tortuga.right(90);
    tortuga.forward(x);
}

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;
    
    ct::TurtleScreen scr;
    scr.bgcolor({ "white" });
    ct::Turtle tortuga(scr);
    for (int i = 10; i <= initialShellSize; i = i + 10)
    {
        shellSize = initialShellSize - (initialShellSize/i);
        drawSquare(tortuga, shellSize);
    }
    
    return 0;
}

我使用了一个引用ct::Turtle& tortuga而不是ct::Turtle tortuga,我想这是正确的,但是正如我所说的,我以前从未使用过这个库。
正如前面提到的,要得到一个正方形,我猜你需要调用forward四次。
我还将对Home的调用放在函数内部,您可能不同意。

相关问题