這是主程式的部分。
到這裡已經可以實現黑白輪流落子了。
import chess
import tkinter as tk
import time
#生成視窗和畫布
root=tk.tk()
cv=tk.canvas(root,width=980,height=700,bg='#c09900')
cv.create_text(700,35,text='五子棋')
cv.pack()
player1=chess.player('black')
player2=chess.player('white')
#繪製棋盤線條
for i in chess.locations:
cv.create_line(i[0]*35,35,i[0]*35,665)
cv.create_line(35,i[1]*35,665,i[1]*35)
cv.create_rectangle(35,35,665,665,width=3)
#繪製9個角邊點
for i in (4,10,16):
for j in (4,10,16):
cv.create_oval(i*35-5,j*35-5,i*35+5,j*35+5,fill='black')
null_location=chess.chess()
chessborad=[null_location,] #初始棋盤為空
player1.token=1 #初始令牌給棋手1
player2.token=0
player=player1
def match(event):
if player1.token==1:
player=player1
elif player2.token==1:
player=player2
location=chess.get_location(event) #獲取當前的滑鼠位置
index=0
#當前的位置已經落子,則沒有動作
if location not in (player1.locations + player2.locations):
piece=chess.pieces(player.color,location,cv) #生成乙個新的棋子
chess.pieces.choose_piont(piece) #將棋子放在棋盤
player.pionts+=1 #棋手的落子數量加1
player1.token,player2.token=player2.token,player1.token #兩個棋手交換令牌
player.last_piece=piece #記錄為棋手的最後落下的棋子。
newlocation=chess.chess() #生成乙個新的棋盤點
newlocation.location=location #棋盤點確定位置
newlocation.state=piece #棋盤點記錄棋子
index=index+1
newlocation.index=index #記錄當前位置的手數
print(player.color,'已經在這些點落子:',player.locations)
print(player.color,'已經落子的數量是:',player.pionts)
print(player.color,'最後的乙個棋子是:',player.last_piece)
cv.bind('',match)
root.mainloop()
pythonAI五子棋 二
以為第二篇很晚到來,主要是我的想法是等我把機器學習學個大概之後再回來優化。不過最近在深入的學習python,學到了一些pythonic的 風格,所以決定回來重構一下我的五子棋 這次主要做了 1.優化了我的 使得 更加簡潔美觀。可讀性更高。比如這段優化前的函式 def robotchess self ...
下五子棋的bot 五子棋演算法
include include include include include include jsoncpp json.h c 編譯時預設包含此庫 define n 7 每個節點的分支數 以下為各棋型的識別碼 權重 define win 1 4000 define lose 2 4000 defi...
窮舉五子棋
本想窮舉五子棋必勝點,可惜呀,這貨窮舉太不現實了,寫出來了,根本沒辦法執行出來結果 include include include define rl 17 char s 14 int five rl rl void init void void print void int cs int i,in...