Beispiel #1
0
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;

}
Beispiel #2
0
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;
}