3. 接下來就是關鍵的部分,我曾在這裡實現機器自動下棋,但仍遇到一些困難
棋子移動
/// <summary>
/// 被吃時呼叫,或吃子時呼叫
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChessWordUserControl_Click(object sender, EventArgs e)
{
if (Factory.IsTurnToRedChessWalking)
{
// 機器下棋(Red)
if (this.IsRedChess)
{
// 紅方(機器)
}
else
{
// 紅方吃掉黑方
this.Eat(false);
return;
}
}
else
{
// 使用者下棋
if (this.IsRedChess)
{
// 黑方吃掉紅方
this.Eat(false);
return;
}
else
{
// 黑方(使用者)
}
}
if (Factory.OldQiZhi != null)
{
Factory.OldQiZhi._move = EChessDraw.Null;
Factory.OldQiZhi.Refresh();
}
Factory.WeiZhi_AL = this.GetNextLocation();
Factory.OldQiZhi = this;
this._move = EChessDraw.Click;
this.Refresh();
}
目前,我在網上查了不少資料,大家都想求一個比較厲害的象棋程式,可目前我的程式是最弱智的,CPU 自己不會下。有人告訴我,說需要調用一些已經大師們的下棋殘局 API,而無需自己寫一套規則,我覺得也是,不然寫棋的那個人一定是下棋高手,可是我棋藝一般,但我很想寫一個比較厲害的程式,讓我的象棋以 CPU 的身份來挑戰那些大師,呵呵,就是這樣一個想法,目前用 C# 實作,先不討論效能,能有人指點實現一下也不錯。
如果有人有興趣,我想把程式碼放在 Officelive.com 上,其實重要不是程式碼了,感覺這些程式的演算法和思想設計很重要,歡迎高手指點一二。:-)