## <no title>

``` /*
Bubble Sort Visualization with C-Turtle
Author: Cody A. Auen
(C-Turtle by Jesse  W.  Walker)

*/

#include "CTurtle.hpp"   //This brings in the CTurtle library for use
#include <iostream> //for input & output
#include <dos.h>

namespace ct = cturtle;  //This makes it possible to use the CTurtle commands using ct::
using namespace std;

void bubble_Sort() {

//makes screen
ct::TurtleScreen scr;
scr.delay(200);

//makes Turtle on screen
ct::Turtle a(scr);
ct::Turtle b(scr);
ct::Turtle c(scr);
ct::Turtle d(scr);
ct::Turtle e(scr);
ct::Turtle f(scr);
ct::Turtle g(scr);
ct::Turtle h(scr);

//creates custom polygons to use for turtle shape
ct::Polygon square1 = {
{-40, -15},   //First point
{-40, 15}, //Second point
{40, 15},  //and so on.
{40, -15}
};

ct::Polygon square2 = {
{-50, -15},   //First point
{-50, 15}, //Second point
{50, 15},  //and so on.
{50, -15}
};

ct::Polygon square3 = {
{-100, -15},   //First point
{-100, 15}, //Second point
{100, 15},  //and so on.
{100, -15}
};

ct::Polygon square4 = {
{-110, -15},   //First point
{-110, 15}, //Second point
{110, 15},  //and so on.
{110, -15}
};

ct::Polygon square5 = {
{-60, -15},   //First point
{-60, 15}, //Second point
{60, 15},  //and so on.
{60, -15}
};

ct::Polygon square6 = {
{-80, -15},   //First point
{-80, 15}, //Second point
{80, 15},  //and so on.
{80, -15}
};

ct::Polygon square7 = {
{-90, -15},   //First point
{-90, 15}, //Second point
{90, 15},  //and so on.
{90, -15}
};

ct::Polygon square8 = {
{-130, -15},   //First point
{-130, 15}, //Second point
{130, 15},  //and so on.
{130, -15}
};

//presets all colors to white
a.fillcolor({ "white" });
b.fillcolor({ "white" });
c.fillcolor({ "white" });
d.fillcolor({ "white" });
e.fillcolor({ "white" });
f.fillcolor({ "white" });
g.fillcolor({ "white" });
h.fillcolor({ "white" });

//disables pen
a.penup();
b.penup();
c.penup();
d.penup();
e.penup();
f.penup();
g.penup();
h.penup();

//creates line of turtles
a.shift(-150, -60);
b.shift(-110, -50);
c.shift(-70, 00);
d.shift(-30, 10);
e.shift(10, -40);
f.shift(50, -20);
g.shift(90, -10);
h.shift(130, 30);

//changes shape of turtle to custom polygon shapes.
a.shape(square1);
b.shape(square2);
c.shape(square3);
d.shape(square4);
e.shape(square5);
f.shape(square6);
g.shape(square7);
h.shape(square8);

//sets speed to normal (e.g. speed = 6)
a.speed(ct::TS_NORMAL);
b.speed(ct::TS_NORMAL);
c.speed(ct::TS_NORMAL);
d.speed(ct::TS_NORMAL);
e.speed(ct::TS_NORMAL);
f.speed(ct::TS_NORMAL);
g.speed(ct::TS_NORMAL);
h.speed(ct::TS_NORMAL);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//begins first pass through
a.fillcolor({ "blue" });
ct::detail::sleep(1000); //delay added for better visulization
a.lt(1);
a.rt(1);
b.fillcolor({ "blue" });
ct::detail::sleep(1000);
b.lt(1);
b.rt(1);
a.fillcolor({ "white" });
c.fillcolor({ "blue" });
ct::detail::sleep(1000);
c.lt(1);
c.rt(1);
b.fillcolor({ "white" });
d.fillcolor({ "blue" });
ct::detail::sleep(1000);
d.lt(1);
d.rt(1);
c.fillcolor({ "white" });
e.fillcolor({ "orange" }); //detecs shape out of place
ct::detail::sleep(1000);
e.lt(1);
e.rt(1);
e.shift(-80, 0);
d.shift(40, 0);
c.shift(40, 0);
d.fillcolor({ "white" });
e.fillcolor({ "white" });

//begins second pass through
a.fillcolor({ "blue" });
ct::detail::sleep(1000);
a.lt(1);
a.rt(1);
b.fillcolor({ "blue" });
ct::detail::sleep(1000);
b.lt(1);
b.rt(1);
a.fillcolor({ "white" });
e.fillcolor({ "blue" });
ct::detail::sleep(1000);
e.lt(1);
e.rt(1);
b.fillcolor({ "white" });
c.fillcolor({ "blue" });
ct::detail::sleep(1000);
c.lt(1);
c.rt(1);
e.fillcolor({ "white" });
d.fillcolor({ "blue" });
ct::detail::sleep(1000);
d.lt(1);
d.rt(1);
c.fillcolor({ "white" });
f.fillcolor({ "orange" });
ct::detail::sleep(1000);
f.lt(1);
f.rt(1);
f.shift(-80, 0);
d.shift(40, 0);
c.shift(40,0);
d.fillcolor({ "white" });
f.fillcolor({ "white" });

//begins third pass through
a.fillcolor({ "blue" });
ct::detail::sleep(1000);
a.lt(1);
a.rt(1);
b.fillcolor({ "blue" });
ct::detail::sleep(1000);
b.lt(1);
b.rt(1);
a.fillcolor({ "white" });
e.fillcolor({ "blue" });
ct::detail::sleep(1000);
e.lt(1);
e.rt(1);
b.fillcolor({ "white" });
f.fillcolor({ "blue" });
ct::detail::sleep(1000);
f.lt(1);
f.rt(1);
e.fillcolor({ "white" });
c.fillcolor({ "blue" });
ct::detail::sleep(1000);
c.lt(1);
c.rt(1);
f.fillcolor({ "white" });
d.fillcolor({ "blue" });
ct::detail::sleep(1000);
d.lt(1);
d.rt(1);
c.fillcolor({ "white" });
g.fillcolor({ "orange" });
ct::detail::sleep(1000);
g.lt(1);
g.rt(1);
g.shift(-80, 0);
d.shift(40, 0);
c.shift(40, 0);
d.fillcolor({ "white" });
g.fillcolor({ "white" });

//begins final pass through
a.fillcolor({ "blue" });
ct::detail::sleep(1000);
a.lt(1);
a.rt(1);
b.fillcolor({ "blue" });
ct::detail::sleep(500);
b.lt(1);
b.rt(1);
a.fillcolor({ "white" });
e.fillcolor({ "blue" });
ct::detail::sleep(1000);
e.lt(1);
e.rt(1);
b.fillcolor({ "white" });
f.fillcolor({ "blue" });
ct::detail::sleep(1000);
f.lt(1);
f.rt(1);
e.fillcolor({ "white" });
g.fillcolor({ "blue" });
ct::detail::sleep(1000);
g.lt(1);
g.rt(1);
f.fillcolor({ "white" });
c.fillcolor({ "blue" });
ct::detail::sleep(1000);
c.lt(1);
c.rt(1);
g.fillcolor({ "white" });
d.fillcolor({ "blue" });
ct::detail::sleep(1000);
d.lt(1);
d.rt(1);
c.fillcolor({ "white" });
h.fillcolor({ "blue" });
ct::detail::sleep(1000);
h.lt(1);
h.rt(1);
d.fillcolor({ "white" });
h.fillcolor({ "white" });

scr.bye();  //exists graphics screen

}

int main() {
bubble_Sort();
return 0;
}
```