/**
 * Instantiates ball in center of window.  Returns ball.
 */
GOval initBall(GWindow window)
{
  int size = RADIUS*2;
  GOval ball = newGOval(WIDTH/2, HEIGHT/2, size, size); 
  setFilled(ball, true);
  setColor(ball, "#3366FF");
  sendToFront(ball);
  return ball;
}
Exemple #2
0
int main() {
   GWindow gw = newGWindow(600, 400);
   GRect rect = NULL;
   bool dragging = false;
   double startX = 0.0;
   double startY = 0.0;
   while (true) {
      GEvent e = waitForEvent(MOUSE_EVENT | KEY_EVENT);
      if (getEventType(e) == MOUSE_PRESSED) {
         startX = getX(e);
         startY = getY(e);
         rect = getGObjectAt(gw, startX, startY);
         dragging = (rect != NULL);
         if (!dragging) {
            rect = newGRect(startX, startY, 0, 0);
            setFilled(rect, true);
            add(gw, rect);
         }
      } else if (getEventType(e) == MOUSE_DRAGGED) {
         double x = getX(e);
         double y = getY(e);
         if (dragging) {
            move(rect, x - startX, y - startY);
            startX = x;
            startY = y;
         } else {
            double width = fabs(x - startX);
            double height = fabs(y - startY);
            x = fmin(x, startX);
            y = fmin(y, startY);
            setBounds(rect, x, y, width, height);
         }
      } else if (getEventType(e) == MOUSE_CLICKED) {
         if (rect != NULL) sendToFront(rect);
      } else if (getEventType(e) == KEY_TYPED) {
         if (rect != NULL) {
            string color = "BLACK";
            switch (getKeyChar(e)) {
             case 'b': color = "BLUE"; break;
             case 'c': color = "CYAN"; break;
             case 'g': color = "GREEN"; break;
             case 'm': color = "MAGENTA"; break;
             case 'o': color = "ORANGE"; break;
             case 'r': color = "RED"; break;
             case 'w': color = "WHITE"; break;
             case 'y': color = "YELLOW"; break;
            }
            setColor(rect, color);
         }
      }
   }
}