Remainder Trainer - Lab #3 Assignment Techniques - STUDY THIS!
Here is some of the code (the onMouseRelease event code) for you
to study. It has changed some since the class handout!
public void onMouseRelease(Location point)
{
if ( correctAnswerFrame.contains( point ) && dragging)
{
new Text("HOORAY!!!!!!!!!!!!!!!", 50, 50, canvas);
goodGuesses++;
result.setText("Great! " + goodGuesses + " right so far!");
nextGame();
}
else if (pointIsInsideGuessFrame(point))
{
result.setText("Sorry, try again! " + ++badGuesses + " wrong so far.");
numberDisplayFrame.moveTo(HOME);
numberDisplay.moveTo(10, 10);
}
}
Here is some more code, for a nice private helper function that is
needed. I do NOT send the dragged number back to its corner unless the
mouse was released on a guess box (2, 3, both or neither guess).
private boolean pointIsInsideGuessFrame(Location point)
{
return neitherDividesFrame.contains( point ) ||
twoDividesFrame.contains( point ) ||
threeDividesFrame.contains( point ) ||
bothDivideFrame.contains( point );
}
And finally, here is that other helper method, also a PRIVATE helper
method.
private void nextGame()
{
int nextNumber;
nextNumber = generator.nextValue();
while (nextNumber == lastNumber)
{
nextNumber = generator.nextValue();
}
numberDisplay.setText( nextNumber );
lastNumber = nextNumber;
if (nextNumber % 2 == 0 && nextNumber % 3 == 0)
{
correctAnswerFrame = bothDivideFrame;
}
else if (nextNumber % 3 == 0)
{
correctAnswerFrame = threeDividesFrame;
}
else if (nextNumber % 2 == 0)
{
correctAnswerFrame = twoDividesFrame;
}
else
{
correctAnswerFrame = neitherDividesFrame;
}
numberDisplayFrame.moveTo( HOME ); // HOME is a Location constant...
numberDisplay.moveTo(10, 10);
}