五子棋人機對戰 11 實現AI對戰AI的五子棋程式

2021-10-12 22:36:22 字數 1059 閱讀 9315

在前文ai人機對戰的五子棋程式的基礎上,我們加入了ai對戰ai的功能。動態圖中黑白棋子都是程式通過內建的邏輯控制落子,實現ai與ai之間的對戰。這一版程式的ai邏輯在上一版本的基礎上加入了些微的隨機屬性,當遇到多個相同的最優落子點時,通過隨機的方式進行選擇,這裡用到了random.choice。

由於並沒有對兩個下棋的ai引入多少差異,所以黑白雙方棋力不相上下攻守交替,並沒有出現一方壓倒一方的情形。後期在初版ai的基礎上,對邏輯的權值進行一定規則的隨機生成,擴充ai的數量,便可以產生出一些棋力更高的邏輯塊。目前程式棋力中等,存在一些邏輯陷阱,沒有學習能力,上文引入隨機屬性,也是為了使邏輯塊能夠自行跳出這些邏輯陷阱。

def aivsai(self,event):

unit = self.unit

mydc = wx.clientdc(self.panel)

mydc.setbrush(wx.brush(self.actcolor))

x = 210

y = 210

piecepo = (x, y)

piecepocol = (x, y, self.actcolor)

mydc.drawcircle(x, y, self.unit / 2.5)

self.piecenum = self.piecenum + 1

self.tip.setvalue('%s,%s' % (x, y))

self.actcolor = self.wht

self.timer.start(1200)

def ontimer(self,event):

self.play()

if self.piecenum >= row_node_num * row_node_num-50:

self.timer.stop()

dlg = wx.messagedialog(none, u"對局結束", u"平局",

wx.yes_no | wx.icon_question)

if dlg.showmodal() == wx.id_yes:

dlg.destroy()

self.destroy()

五子棋人機對戰

參考 人機對戰 填子遊戲的攻防策略 關於機器的應對策略,在前文中有所表述,不一一解釋,本文進行了修繕和補強,但漏銅依然存在。增加了乙個倒計時功能,測試了一下,感覺一般,還是留在那裡,表明曾經研究過,供今後完善 增加了棋譜儲存功能和回放功能 增加了悔棋功能,這個還是有些用處的。另外策略中增加了禁手。如...

JS五子棋之人機對戰

文章目錄 1.效果圖 2.ui篇 3.ai篇 先來看看最終實現的效果吧!勝利顯示 主要是使用canvas繪製棋盤以及棋子 canvas繪製棋盤 for var i 0 i 9 i canvas繪製棋子部分 var onestep function i,j,me i,j表示棋盤索引,me表示黑棋或白棋...

人人對戰五子棋

c語言人人對戰五子棋 看起來五子棋很簡單,但是對於其中有許多需要考慮的因素,所以前前後後大概花了有24小時左右的時間,找bug的時間應該花的是最多的,另外主要是自己的思考非常重要,不能忙碌的複製別人的 別人每一行 都需要弄清楚,不是簡單意義上的搬磚,那樣對於自己是沒有一點成長的。以下附上我的 c 中...