📄 vchessman.cs
字号:
using System;
namespace HRD.Core
{
public class VChessman : Chessman
{
public VChessman(Position position):base(position)
{
}
#region Private Functions
private bool CanMoveUp(BlankPosition _blankPosition)
{
if(_blankPosition.IsBlank(_position.x , _position.y - 1))
{
// 设置棋子新位置
_newPosition.x = _position.x;
_newPosition.y = _position.y - 1;
// 设置新的空白位置
if(_blankPosition.Pos1.x == _position.x && _blankPosition.Pos1.y == _position.y - 1)
{
_newBlankPosition.Pos1.x = _position.x;
_newBlankPosition.Pos1.y = _position.y + 1;
_newBlankPosition.Pos2 = _blankPosition.Pos2;
}
else
{
_newBlankPosition.Pos1 = _blankPosition.Pos1;
_newBlankPosition.Pos2.x = _position.x;
_newBlankPosition.Pos2.y = _position.y + 1;
}
return true;
}
return false;
}
private bool CanMoveDown(BlankPosition _blankPosition)
{
if(_blankPosition.IsBlank(_position.x , _position.y + 2))
{
// 设置棋子新位置
_newPosition.x = _position.x;
_newPosition.y = _position.y + 1;
// 设置新的空白位置
if(_blankPosition.Pos1.x == _position.x && _blankPosition.Pos1.y == _position.y + 2)
{
_newBlankPosition.Pos1 = _position;
_newBlankPosition.Pos2.x = _blankPosition.Pos2.x;
_newBlankPosition.Pos2.y = _blankPosition.Pos2.y;
}
else
{
_newBlankPosition.Pos1.x = _blankPosition.Pos1.x;
_newBlankPosition.Pos1.y = _blankPosition.Pos1.y;
_newBlankPosition.Pos2 = _position;
}
return true;
}
return false;
}
private bool CanMoveLeft(BlankPosition _blankPosition)
{
if(_blankPosition.IsBlank(_position.x - 1 , _position.y) && _blankPosition.IsBlank(_position.x - 1, _position.y + 1))
{
// 设置棋子新位置
_newPosition.x = _position.x - 1;
_newPosition.y = _position.y;
// 设置新的空白位置
_newBlankPosition.Pos1 = _position;
_newBlankPosition.Pos2.x = _position.x;
_newBlankPosition.Pos2.y = _position.y + 1;
return true;
}
return false;
}
private bool CanMoveRight(BlankPosition _blankPosition)
{
if(_blankPosition.IsBlank(_position.x + 1 , _position.y) && _blankPosition.IsBlank(_position.x + 1, _position.y + 1))
{
// 设置棋子新位置
_newPosition.x = _position.x + 1;
_newPosition.y = _position.y;
// 设置新的空白位置
_newBlankPosition.Pos1 = _position;
_newBlankPosition.Pos2.x = _position.x;
_newBlankPosition.Pos2.y = _position.y + 1;
return true;
}
return false;
}
private bool CanMoveUp2(BlankPosition _blankPosition)
{
if(_blankPosition.IsBlank(_position.x , _position.y - 2) && _blankPosition.IsBlank(_position.x , _position.y - 1))
{
// 设置棋子新位置
_newPosition.x = _position.x;
_newPosition.y = _position.y - 2;
// 设置新的空白位置
_newBlankPosition.Pos1 = _position;
_newBlankPosition.Pos2.x = _position.x;
_newBlankPosition.Pos2.y = _position.y + 1;
return true;
}
return false;
}
private bool CanMoveDown2(BlankPosition _blankPosition)
{
if(_blankPosition.IsBlank(_position.x , _position.y + 2) && _blankPosition.IsBlank(_position.x , _position.y + 3))
{
// 设置棋子新位置
_newPosition.x = _position.x;
_newPosition.y = _position.y + 2;
// 设置新的空白位置
_newBlankPosition.Pos1 = _position;
_newBlankPosition.Pos2.x = _position.x;
_newBlankPosition.Pos2.y = _position.y + 1;
return true;
}
return false;
}
#endregion
public override ChessmanType chessmanType
{
get
{
return ChessmanType.VChessman;
}
}
public override void CheckAvailableSteps(BlankPosition _blankPosition, CallBackDelegate _callback)
{
if(CanMoveLeft(_blankPosition))
_callback(_newPosition, _newBlankPosition, MoveMethod.Left);
if(CanMoveRight(_blankPosition))
_callback(_newPosition, _newBlankPosition, MoveMethod.Right);
if(CanMoveUp(_blankPosition))
_callback(_newPosition, _newBlankPosition, MoveMethod.Up);
if(CanMoveDown(_blankPosition))
_callback(_newPosition, _newBlankPosition, MoveMethod.Down);
if(CanMoveUp2(_blankPosition))
_callback(_newPosition, _newBlankPosition, MoveMethod.Up2);
if(CanMoveDown2(_blankPosition))
_callback(_newPosition, _newBlankPosition, MoveMethod.Down2);
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -