public int CreateChecker(Checker ch) { checkers[(int)(ch.GetColor())].Add(ch); board[ch.x, ch.y] = ch; notifySetChecker(ch); return(1); }
public int DeleteChecker(int x, int y) //удаляет только шашки, с путями не работает { if (!board[x, y].isEmpty() && board[x, y].GetChecker() != null) //если клетка не пустая и на ней есть шашка { Checker checker = board[x, y].GetChecker(); checkers[(int)checker.GetColor()].Remove(checker); board[checker.x, checker.y] = new LogicCell(); notifyDeleteCheckerOrWay(checker.x, checker.y); return(-1); } return(0); }
private void MoveChecker(Checker checker, int x, int y)//перемещение шашки и контроль за становлением дамки { board[checker.x, checker.y] = new LogicCell(); notifyDeleteCheckerOrWay(checker.x, checker.y); board[x, y] = checker; checker.x = x; checker.y = y; checker.SetLight(false); if (y == ((int)checker.GetColor()) * 7) //контроль за становлением дамки { checker.SetDamka(); } notifySetChecker(checker); }
//don't look private bool SearchIntermRecursion(Moves m, int c) { for (int i = 0; i < 4; i++) { for (int k = 0; k < eaten.Count; k++) { if ((m.way[i].Count != 0) && (m.GetEatenChecker(m.way[i][0].Item1, m.way[i][0].Item2) == eaten[k]))//нашли шашку, которую можно есть { m.AddPreDelete(m.way[i][0].Item1, m.way[i][0].Item2); int x_ = selectedChecker.x; int y_ = selectedChecker.y;//сохранили координаты; bool f = false; for (int j = 0; j < m.way[i].Count; j++)//перебираем все ходы в том направлении { selectedChecker.x = m.way[i][j].Item1; selectedChecker.y = m.way[i][j].Item2;//двигаем шашку Moves m1 = new Moves(); m1.selectedChecker = selectedChecker; if (selectedChecker.y == ((int)selectedChecker.GetColor()) * 7) //контроль за становлением дамки { selectedChecker.SetDamka(); } selectedChecker.SearchEat(m1); if (SearchIntermRecursion(m1, c + 1)) { f = true; interm.Insert(0, m.way[i][j]);//надо вставлять в обратном порядке break; } } selectedChecker.x = x_;//подвинули обратно selectedChecker.y = y_; m.CancelLastPreDelete(); if (c + 1 == eaten.Count) { return(true); //значит, на следующем шаге оно просто не нашло шашек, которые надо есть - конец } if (f) { return(true); } } } } return(false); }
public void SetChecker(Checker ch) { body.Image = imgFigure[(int)ch.GetColor(), (int)ch.GetFigure(), ch.GetLight()]; }