public void onTouch(MotionEvent e) {
      if (months != null) {

        switch (e.getAction()) {
          case MotionEvent.ACTION_DOWN:
            // figure out if a ball has been touched
            //
            Point touchCoord =
                new Point(
                    (int) (e.getX() * (bounds.width() * 1.0 / windowBounds.width())),
                    (int) (e.getY() * (bounds.height() * 1.0 / windowBounds.height())));

            for (rectangle month : months) {
              // if the places that we touched happens to be in the area of the ball, then set ball
              // touch to true
              if (month.contains(touchCoord)) {
                month.setPressed(true);
                //                            // add ball pressed to userSequenceTest, so that we
                // can compare with demoSequence
                //                            userSequenceTest.add(ball);
                //
                //                            monthPressedCount++;
              } else // if we didn't touch the ball
              {
                // then set all the months to false
                month.setPressed(false);
              }
            }
            break;

          case MotionEvent.ACTION_UP:
            for (rectangle month : months) {
              if (month.isPressed() == true) {
                // add ball pressed to userSequenceTest, so that we can compare with demoSequence
                java.util.Date date = new java.util.Date();
                pastTime = currentTime;
                currentTime = new Timestamp(date.getTime()).getTime();

                double timeDiff = ((double) currentTime - (double) pastTime) / 1000;
                // float timeDiffF = ((float)currentTime-(float)pastTime)/1000;
                userSequenceTest.add(month);
                userSequenceString.add(month.getMonth() + "  time taken = " + timeDiff);

                monthPressedCount++;
                month.setPressed(false);
              }
            }
            break;
        }
      }
      // if it has, add it to the users sequence
      // if(count<clips.size()&&clips.get(count) instanceof ITouchClip)((ITouchClip)
      // clips.get(count)).onTouch(e);
      // return true;
    }
    public boolean play(Canvas out, Context context) {
      Paint paint = null;
      float aspect = out.getHeight() * 1.0f / out.getWidth();
      int width = 1000;
      Bitmap bitmap = Bitmap.createBitmap(width, Math.round(width * aspect), Bitmap.Config.RGB_565);
      Canvas c = new Canvas(bitmap);
      bounds = c.getClipBounds();
      windowBounds = out.getClipBounds();

      if (!started) {
        started = true;
        months = getMonthVector();

        paint = new Paint();
        paint.setColor(Color.parseColor("#00ff00"));
        paint.setStrokeWidth(5);
      }

      for (rectangle month : months) {
        // ball.Update();  // the months don't need to be updated
        month.Draw(c);
      }

      out.drawBitmap(bitmap, c.getClipBounds(), out.getClipBounds(), paint);

      //                for(int i = 0; i < userSequenceTest.size(); i++)
      //                {
      //                    if(demoSequence.get(i) != userSequenceTest.get(i))
      //                    {
      //                        sequencesMatch = false;
      //                    }
      //
      //                    if(sequencesMatch == false)
      //                    {
      //                        break;
      //                    }
      //
      //                }

      return false;

      //                // if we've pressed more circles than are in the sequence, then we have
      // failed.
      //                if(monthPressedCount > getDemoSequence().size() || sequencesMatch == false)
      //                {
      //                    // return true when finished
      //                    for(rectangle month: months)
      //                    {
      //                        month.setPressed(false);
      //                    }
      //                    setResult(false);
      //                    return true;
      //                }
      //                // if the sequences match and we have pressed the number of months in the
      // demo sequence
      //                else if(sequencesMatch == true && monthPressedCount == demoSequence.size()){
      //                    // then we have succeded and return true because we have finished
      //
      //                    setResult(true);
      //                    return true;
      //                } else {
      //                    return false;
      //                }

    }