五子棋練習(二)

2021-08-17 11:16:01 字數 1800 閱讀 5978

這是主程式的部分。

到這裡已經可以實現黑白輪流落子了。

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...