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上,其實重要不是代碼了,感覺這些程序的算法和思想設計很重要,歡迎高手指點一二。:-)