package org.teachingextensions.logo.utils.TKPLogoUtils;
import org.teachingextensions.logo.Tortoise;
import org.teachingextensions.logo.utils.ColorUtils.ColorWheel;
import org.teachingextensions.logo.utils.ColorUtils.PenColors;
import org.teachingkidsprogramming.recipes.completed.section01forloops.MakeALogo;
/**
* <img src="https://avatars0.githubusercontent.com/u/4691010?v=3&s=200" style="text-align: left" alt="The TKP logo" height="40">
* The TKPLogo allows <b>you</b> to create a super cool TKP logo on your window
*/
public class TKPLogo
{
/**
* Sets up a particular set of Colors on the Color Wheel
* <div><b>Example:</b> {@code TKPLogo.setupColorWheel();}</div>
*/
public static void setupColorWheel()
{
ColorWheel.addColor(PenColors.Grays.Gray);
ColorWheel.addColor(PenColors.Greens.Green);
ColorWheel.addColor(PenColors.Pinks.Pink);
ColorWheel.addColor(PenColors.Purples.Purple);
ColorWheel.addColor(PenColors.Blues.Blue);
ColorWheel.addColor(PenColors.Yellows.Yellow);
ColorWheel.addColor(PenColors.Browns.Brown);
ColorWheel.addColor(PenColors.Oranges.Orange);
ColorWheel.addColor(PenColors.Reds.Red);
ColorWheel.addColor(PenColors.Whites.White);
setupBackgroundAndLines();
}
private static void setupBackgroundAndLines()
{
Tortoise.getBackgroundWindow().setBackground(ColorWheel.getRandomColorFromWheel());
Tortoise.setPenWidth(4);
}
/**
* Draws an <i>amazing</> TKP inner P
* <div><b>Example:</b> {@code TKPLogo.draw_inner_tkp_P();}</div>
*/
public static void draw_inner_tkp_P()
{
Tortoise.setX(MakeALogo.XValue + 355);
Tortoise.setY(MakeALogo.YValue - 135);
Tortoise.turn(180);
Tortoise.move(10);
TKPLogo.curve6();
Tortoise.move(10);
Tortoise.turn(90);
Tortoise.move(50);
Tortoise.hide();
Tortoise.turn(1);
}
/**
* Draws an <i>awesome</> TKP outer P
* <div><b>Example:</b> {@code TKPLogo.draw_outer_tkp_P();}</div>
*/
public static void draw_outer_tkp_P()
{
Tortoise.setAngle(180);
Tortoise.setX(MakeALogo.XValue + 320);
Tortoise.setY(MakeALogo.YValue);
Tortoise.turn(180);
Tortoise.move(15);
Tortoise.turn(80);
Tortoise.move(10);
Tortoise.turn(-80);
Tortoise.move(120);
Tortoise.turn(-80);
Tortoise.move(10);
Tortoise.turn(80);
Tortoise.move(15);
Tortoise.turn(90);
Tortoise.move(47);
TKPLogo.curve5();
Tortoise.move(12);
Tortoise.turn(-90);
Tortoise.move(50);
Tortoise.turn(-80);
Tortoise.move(10);
Tortoise.turn(80);
Tortoise.move(15);
Tortoise.turn(90);
Tortoise.move(43);
}
/**
* Draws an <i>outstanding</> TKP right bracket
* <div><b>Example:</b> {@code TKPLogo.drawRightBracket();}</div>
*/
public static void drawRightBracket()
{
Tortoise.setAngle(-90);
Tortoise.setX(MakeALogo.XValue + 250);
Tortoise.setY(MakeALogo.YValue - 20);
Tortoise.turn(180);
Tortoise.move(30);
TKPLogo.curve3();
Tortoise.move(40);
TKPLogo.curve4();
Tortoise.move(10);
Tortoise.turn(-90);
Tortoise.move(10);
Tortoise.turn(-90);
Tortoise.move(10);
TKPLogo.curve4();
Tortoise.move(40);
TKPLogo.curve3();
Tortoise.move(30);
Tortoise.turn(-90);
Tortoise.move(10);
Tortoise.turn(-90);
Tortoise.move(15);
TKPLogo.curve1();
Tortoise.move(35);
TKPLogo.curve2();
Tortoise.turn(180);
TKPLogo.curve2();
Tortoise.move(35);
TKPLogo.curve1();
Tortoise.move(15);
Tortoise.turn(-90);
Tortoise.move(11);
}
/**
* Draws an <i>original</> TKP left bracket
* <div><b>Example:</b> {@code TKPLogo.drawLeftBracket();}</div>
*/
public static void drawLeftBracket()
{
Tortoise.setAngle(-90);
Tortoise.setX(MakeALogo.XValue + 130);
Tortoise.setY(MakeALogo.YValue - 20);
Tortoise.move(30);
TKPLogo.curve1();
Tortoise.move(40);
TKPLogo.curve2();
Tortoise.move(10);
Tortoise.turn(90);
Tortoise.move(10);
Tortoise.turn(90);
Tortoise.move(10);
TKPLogo.curve2();
Tortoise.move(40);
TKPLogo.curve1();
Tortoise.move(30);
Tortoise.turn(90);
Tortoise.move(10);
Tortoise.turn(90);
Tortoise.move(15);
TKPLogo.curve3();
Tortoise.move(35);
TKPLogo.curve4();
Tortoise.turn(180);
TKPLogo.curve4();
Tortoise.move(35);
TKPLogo.curve3();
Tortoise.move(15);
Tortoise.turn(90);
Tortoise.move(10);
}
/**
* Draws an <i>incredible</> TKP T
* <div><b>Example:</b> {@code TKPLogo.draw_tkp_T();}</div>
*/
public static void draw_tkp_T()
{
Tortoise.setX(MakeALogo.XValue);
Tortoise.setY(MakeALogo.YValue);
Tortoise.move(15);
Tortoise.turn(80);
Tortoise.move(10);
Tortoise.turn(-80);
Tortoise.move(120);
Tortoise.turn(-90);
Tortoise.move(15);
Tortoise.turn(-75);
Tortoise.move(10);
Tortoise.turn(75);
Tortoise.move(15);
Tortoise.turn(90);
Tortoise.move(35);
Tortoise.turn(90);
Tortoise.move(95);
Tortoise.turn(90);
Tortoise.move(35);
Tortoise.turn(90);
Tortoise.move(15);
Tortoise.turn(75);
Tortoise.move(10);
Tortoise.turn(-75);
Tortoise.move(15);
Tortoise.turn(-90);
Tortoise.move(120);
Tortoise.turn(-80);
Tortoise.move(10);
Tortoise.turn(80);
Tortoise.move(15);
Tortoise.turn(90);
Tortoise.move(50);
}
/**
* Draws an <i>impressive</> TKP K
* <div><b>Example:</b> {@code TKPLogo.draw_tkp_K();}</div>
*/
public static void draw_tkp_K()
{
Tortoise.setAngle(180);
Tortoise.setX(MakeALogo.XValue + 150);
Tortoise.setY(MakeALogo.YValue + 15);
Tortoise.turn(180);
Tortoise.move(200);
Tortoise.turn(90);
Tortoise.move(30);
Tortoise.turn(90);
Tortoise.move(128);
Tortoise.turn(-150);
Tortoise.move(70);
Tortoise.turn(90);
Tortoise.move(30);
Tortoise.turn(90);
Tortoise.move(70);
Tortoise.turn(-80);
Tortoise.move(80);
Tortoise.turn(140);
Tortoise.move(40);
Tortoise.turn(40);
Tortoise.move(60);
Tortoise.turn(-130);
Tortoise.move(45);
Tortoise.turn(90);
Tortoise.move(30);
Tortoise.turn(2);
}
private static void curve6()
{
for (int i = 0; i < 180; i++)
{
double size = 0.43;
Tortoise.turn(1);
Tortoise.move(size);
}
}
private static void curve5()
{
for (int i = 0; i < 180; i++)
{
double size = 0.75;
Tortoise.turn(1);
Tortoise.move(size);
Tortoise.move(-size);
Tortoise.move(size);
}
}
private static void curve4()
{
for (int i = 0; i < 90; i++)
{
double size = 0.15;
Tortoise.turn(1);
Tortoise.move(size);
}
}
private static void curve2()
{
for (int i = 0; i < 90; i++)
{
double size = 0.15;
Tortoise.turn(-1);
Tortoise.move(size);
}
}
private static void curve1()
{
for (int i = 0; i < 90; i++)
{
double size = 0.25;
Tortoise.turn(1);
Tortoise.move(size);
}
}
private static void curve3()
{
for (int i = 0; i < 90; i++)
{
double size = 0.25;
Tortoise.turn(-1);
Tortoise.move(size);
}
}
}