     ledtable.fill(last_x, last_y, transparent(BACKGROUND_COLOR, walked % STEPS_TO_HOLE ? 150 : 0));
     ledtable.fill(x, y, transparent(color(), 200));
   }
+
+  void catchInput()
+  {
+    if (inputState == WAITING_FOR_PLAYER_TO_SWITCH_BACK && !rightPressed() && !leftPressed())
+    {
+      inputState = CATCHING_INPUT;
+    }
+    if (inputState == CATCHING_INPUT)
+    {
+      if (leftPressed())
+      {
+        newDirection = PlayerDirection((direction + 3) % 4);
+      }
+      if (rightPressed())
+      {
+        newDirection = PlayerDirection((direction + 1) % 4);
+      }
+    }
+  }
 };
 
-class Effect
-{
-  
-}
-
 
 Player players[8] = { Player(), Player(), Player(), Player(), Player(), Player(), Player(), Player() };
 


  void react()
  {
    if (digitalRead(leftPin()) == LOW)
    {
      direction = PlayerDirection((direction + 3) % 4);
    }
    if (digitalRead(rightPin()) == LOW)
    {
      direction = PlayerDirection((direction + 1) % 4);
    }
  }


const Color colors[MAXIMUM_NUMBER_OF_PLAYERS] = {color_red, color_green, color_yellow, color_violet, 
                                                 color_orange, color_darkgreen, color_darkgoldenrod, color_white};

class Effect
{
private:
  const Color colors[EFFECT_COLORS] = {color_black, color_black, color_black, color_black, color_black};
  int x;
  int y;
  uint8_t color_index;
  bool activated; 
public:
  Effect()
  {
    activated = false;
    color_index = 0;
  }

  void activate()
  {
    for (int i = 10; i; i--)
    {
      x = random(ledtable.minX(), ledtable.maxX() + 1);
      y = random(ledtable.minY(), ledtable.maxY() + 1);
      activated = ledtable.at(x, y) == BACKGROUND_COLOR;
      if (activated)
      {
        break;
      }
    }
  }

  void update()
  {
    if (activated)
    {
      paint();
      collide();
    }
  }

  void paint()
  {
    color_index = (color_index + 1) % EFFECT_COLORS;
    ledtable.fill(x, y, colors[color_index]);
  }

  void collide()
  {
    
  }
};


enum PlaterState {MOVING, EXPLODING, END_OF_EXPLOSION, DEAD};
enum PlayerDirection {DOWN = 0, LEFT = 1, UP = 2, RIGHT = 3, STANDING};
enum ButtonState {CATCHING_INPUT, WAITING_FOR_PLAYER_TO_SWITCH_BACK};

class Player
{
