bool test_pen () { cout << "Testing turtle_pen_up and turtle_pen_down:" << endl; turtle t; /* * This code one of the problems with using structures. Even though * we want all the modification of the turtle structure to happen through * our functions, the compiler will not prevent someone from changing * the contents directly. * This is helpful for my test program, but bad in general. */ t.x = 99; t.y = 99; t.angle = 99; t.penDown = false; t.writeToFile = true; turtle_init(&t, 500,500, NULL); turtle_pen_up(&t); if (t.penDown) { display_result (__FILE__, __LINE__, testcount); return false; } cout << "Test " << testcount << " passed." << endl; testcount++; turtle_pen_down(&t); if (!t.penDown) { display_result (__FILE__, __LINE__, testcount); return false; } cout << "Test " << testcount << " passed." << endl; testcount++; turtle_end(&t); cout << endl; return true; }
void turtle_draw_turtle() { int i, j; // We are going to make our own backup of the turtle, since turtle_backup() // only gives us one level of undo. turtle_t original_turtle = main_turtle; turtle_pen_up(); // Draw the legs for (i = -1; i < 2; i+=2) { for (j = -1; j < 2; j+=2) { turtle_backup(); turtle_forward(i * 7); turtle_strafe_left(j * 7); turtle_set_fill_color( main_turtle.pen_color.red, main_turtle.pen_color.green, main_turtle.pen_color.blue ); turtle_fill_circle_here(5); turtle_set_fill_color( original_turtle.fill_color.red, original_turtle.fill_color.green, original_turtle.fill_color.blue ); turtle_fill_circle_here(3); turtle_restore(); } } // Draw the head turtle_backup(); turtle_forward(10); turtle_set_fill_color( main_turtle.pen_color.red, main_turtle.pen_color.green, main_turtle.pen_color.blue ); turtle_fill_circle_here(5); turtle_set_fill_color( original_turtle.fill_color.red, original_turtle.fill_color.green, original_turtle.fill_color.blue ); turtle_fill_circle_here(3); turtle_restore(); // Draw the body for (i = 9; i >= 0; i-=4) { turtle_backup(); turtle_set_fill_color( main_turtle.pen_color.red, main_turtle.pen_color.green, main_turtle.pen_color.blue ); turtle_fill_circle_here(i+2); turtle_set_fill_color( original_turtle.fill_color.red, original_turtle.fill_color.green, original_turtle.fill_color.blue ); turtle_fill_circle_here(i); turtle_restore(); } // Restore the original turtle position: main_turtle = original_turtle; }