public void LeftDown(int x, int y) { if (_arrayMine[x, y].Status == 0 || _arrayMine[x, y].Status == -1) { _dq.Init(x, y, 0); } ThisQueue.Enqueue(_dq); }
public void LeftOut(int x, int y) { if ((_arrayMine[x, y].Status == 0 || _arrayMine[x, y].Status == -1) && x >= 0 && x < _columns && y >= 0 && y < _rows) { _dq.Init(x, y, 9); ThisQueue.Enqueue(_dq); } }
public void RightClick(int x, int y) { switch (_arrayMine[x, y].Status) { case 0: _arrayMine[x, y].Status = -2; _dq.Init(x, y, 10); ThisQueue.Enqueue(_dq); for (var i = 0; i < 8; i++) { if (x + _near[i, 0] >= 0 && x + _near[i, 0] < _columns && y + _near[i, 1] >= 0 && y + _near[i, 1] < _rows) { _arrayMine[x + _near[i, 0], y + _near[i, 1]].NearMineRemain--; } } RemainMine--; _remainArea--; break; case -1: _arrayMine[x, y].Status = 0; _dq.Init(x, y, 9); ThisQueue.Enqueue(_dq); break; case -2: if (Mark) { _arrayMine[x, y].Status = -1; _dq.Init(x, y, 11); ThisQueue.Enqueue(_dq); } else { _arrayMine[x, y].Status = 0; _dq.Init(x, y, 9); ThisQueue.Enqueue(_dq); } for (var i = 0; i < 8; i++) { if (x + _near[i, 0] >= 0 && x + _near[i, 0] < _columns && y + _near[i, 1] >= 0 && y + _near[i, 1] < _rows) { _arrayMine[x + _near[i, 0], y + _near[i, 1]].NearMineRemain++; } } RemainMine++; _remainArea++; break; } }
//the method appear when player win the game public void Win() { RemainMine = 0; for (var x = 0; x < _columns; x++) { for (var y = 0; y < _rows; y++) { if (_arrayMine[x, y].Status == 0 || _arrayMine[x, y].Status == -1) { _arrayMine[x, y].Status = -2; _dq.Init(x, y, 10); ThisQueue.Enqueue(_dq); } } } }
//the method use when player miss the game public void Finished() { for (var x = 0; x < _columns; x++) { for (var y = 0; y < _rows; y++) { switch (_arrayMine[x, y].Status) { case 0: if (_arrayMine[x, y].IsMine) { _dq.Init(x, y, 14); ThisQueue.Enqueue(_dq); } break; case -1: if (_arrayMine[x, y].IsMine) { _dq.Init(x, y, 14); ThisQueue.Enqueue(_dq); } break; case -2: if (!_arrayMine[x, y].IsMine) { _dq.Init(x, y, 13); ThisQueue.Enqueue(_dq); } break; } } } }
public void LeftClick(int x, int y) { if (_arrayMine[x, y].Status == 0 || _arrayMine[x, y].Status == -1) { _arrayMine[x, y].Status = 1; if (_arrayMine[x, y].IsMine) { IsFinished = true; _dq.Init(x, y, 12); ThisQueue.Enqueue(_dq); } else { _dq.Init(x, y, _arrayMine[x, y].NearMine); ThisQueue.Enqueue(_dq); _remainArea--; if (_remainArea == RemainMine) { IsWin = true; } if (_arrayMine[x, y].NearMine == 0) { for (var i = 0; i < 8; i++) { if (x + _near[i, 0] >= 0 && x + _near[i, 0] < _columns && y + _near[i, 1] >= 0 && y + _near[i, 1] < _rows) { if (_arrayMine[x + _near[i, 0], y + _near[i, 1]].Status == 0 || _arrayMine[x + _near[i, 0], y + _near[i, 1]].Status == -1) { LeftClick(x + _near[i, 0], y + _near[i, 1]); } } } } } } }