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);
}