makeMove method

void makeMove(
  1. int num
)

Implementation

void makeMove(int num) {
  int sow;
  int color = _toguzFields[22];
  bool capturedTuzdyk = false;
  int finishedOtau;

  int numotau = num + (9 * color) - 1;
  int numkum = _toguzFields[numotau];

  if (numkum <= 0) return;

  if (numkum == 1) {
    _toguzFields[numotau] = 0;
    sow = 1;
  } else {
    _toguzFields[numotau] = 1;
    sow = numkum - 1;
  }

  for (var i = 0; i < sow; i++) {
    numotau++;
    if (numotau > 17) numotau = 0;

    if (_toguzFields[numotau] == ToguzBoard.TUZ) {
      if (numotau > 8) {
        _toguzFields[18]++;
      } else {
        _toguzFields[19]++;
      }
    } else {
      _toguzFields[numotau]++;
    }
  }

  if (_toguzFields[numotau] == 3) {
    if ((color == 0) &&
        (_toguzFields[20] == 0) &&
        (numotau > 8) &&
        (numotau < 17) &&
        (_toguzFields[21] != numotau - 8)) {
      _toguzFields[18] += 3;
      _toguzFields[numotau] = ToguzBoard.TUZ;
      _toguzFields[20] = numotau - 8;
      capturedTuzdyk = true;
    } else if ((color == 1) &&
        (_toguzFields[21] == 0) &&
        (numotau < 8) &&
        (_toguzFields[20] != numotau + 1)) {
      _toguzFields[19] += 3;
      _toguzFields[numotau] = ToguzBoard.TUZ;
      _toguzFields[21] = numotau + 1;
      capturedTuzdyk = true;
    }
  }

  if (_toguzFields[numotau] % 2 == 0) {
    if ((color == 0) && (numotau > 8)) {
      _toguzFields[18] += _toguzFields[numotau];
      _toguzFields[numotau] = 0;
    } else if ((color == 1) && (numotau < 9)) {
      _toguzFields[19] += _toguzFields[numotau];
      _toguzFields[numotau] = 0;
    }
  }

  if (numotau > 8) {
    finishedOtau = numotau - 9 + 1;
  } else {
    finishedOtau = numotau + 1;
  }

  String moveStr = num.toString() + finishedOtau.toString();
  if (capturedTuzdyk) moveStr += "x";
  _gameMoves.add(moveStr);

  _toguzFields[22] = (_toguzFields[22] == 0 ? 1 : 0);
  checkPos();
}