public int isGameOver ()
  {
    if (gameover!=NOPLAYER) return gameover; // cached value
    switch (neutron_x) {
      case 1: gameover=BLACK; break;
      case 5: gameover=WHITE; break;
      default:
        if (!canNeutronMove()) {
          gameover=whoDidLastMove();
          break;
        }
        gameover=NOPLAYER; 
    }
    return gameover;
  }