конечно можно и с массивами, но мне почемуто первое что пришло в голову, это разделить на потоки нажатия кнопок и проверять какой из них свободен.
WHILE(1)
   GETSCREEN
   IF_PIXEL_IN(618,671, 647,681, 566784)      
      IF($s1=0)
         SetThread (s1, 1)
      ELSE
         IF($s2=0)
            SetThread (s2, 1)
         ELSE
            IF($s3=0)
               SetThread (s3, 1)
            ELSE
               print("все потоки заняты, нужно еще")
            END_IF
         END_IF
      END_IF                              
   END_IF 
   waitms(10)
END_CYC
///////////////////////////////////////
THREAD(s1, 0)
   $s1=1
   wait(3)
   KEYDOWN(#q)
   waitms(10)
   KEYUP(#q)
   $s1=0
   SetThread (s1, 0)
END_THREAD
THREAD(s2, 0)
   $s2=1
   wait(3)
   KEYDOWN(#q)
   waitms(10)
   KEYUP(#q)
   $s2=0
   SetThread (s2, 0)
END_THREAD
THREAD(s3, 0)
   $s3=1
   wait(3)
   KEYDOWN(#q)
   waitms(10)
   KEYUP(#q)
   $s3=0
   SetThread (s3, 0)
END_THREAD
если твоих шаров будет тьма тмущяя и их(потоков) небудет хватать, нестесняйся, добовляй еще.