package org.teachingkidsprogramming.recipes.quizzes.graders;
import java.awt.Color;
import java.awt.Graphics2D;
import javax.swing.JPanel;
import org.teachingextensions.approvals.lite.util.NumberUtils;
import org.teachingextensions.logo.Turtle;
import org.teachingextensions.logo.utils.TortoiseUtils;
import org.teachingextensions.logo.utils.LineAndShapeUtils.Paintable;
public class SimpleSquareQuizGrader implements Paintable
{
private boolean[] answers;
public static int TURTLE_SPEED = 9;
private SquareQuiz quiz;
private void displayScreen()
{
QuizUtils.prepareScoringScreen(answers, this, TURTLE_SPEED);
drawRewardShape();
}
public void grade(SquareQuiz quiz)
{
this.quiz = quiz;
answers = new boolean[]{grade1Move(), grade2Turn(), grade3Color(), grade4Width()};
displayScreen();
}
@Override
public void paint(Graphics2D g, JPanel caller)
{
QuizUtils.displayScores(g, 200, answers);
}
public void drawRewardShape()
{
TortoiseUtils.setOrientation(60, 80, 90);
quiz.question3();
quiz.question4();
for (int i = 0; i < 5; i++)
{
quiz.question1();
quiz.question2();
quiz.question2();
}
}
private boolean grade1Move()
{
TortoiseUtils.setTurtle(QuizUtils.createTestTurtle());
TortoiseUtils.setOrientation(0, 0, 90);
quiz.question1();
return NumberUtils.equals(TortoiseUtils.getTurtle().getX(), 110, 0.005);
}
private boolean grade3Color()
{
quiz.question3();
return TortoiseUtils.getTurtle().getPenColor().equals(Color.yellow);
}
private boolean grade4Width()
{
quiz.question4();
return TortoiseUtils.getTurtle().getPenWidth() == 5;
}
private boolean grade2Turn()
{
int angle = NumberUtils.getRandomInt(5, 20);
Turtle turtle = QuizUtils.createTestTurtle();
TortoiseUtils.setTurtle(turtle);
turtle.setAngleInDegrees(angle);
quiz.question2();
return NumberUtils.equals(turtle.getAngleInDegrees(), angle + 360.0 / 5, 0.005);
}
}