簡體   English   中英

Python連接四個對角線檢查

[英]Python Connect four Diagonal Checking

我在啟動代碼時遇到了問題。 我的編程課有一個Connect 4項目,我有一個非常愚蠢的問題。 我不明白對角線檢查。 他給了我們一個例子,但老實說我不明白。

def CheckForWinner(board, playerName, playerChar):


diagonal = board[2][0] + board[3][1] + board[4][2] + board[5][3]
if playerChar * 4 in diagonal:
    return playerName

這是一塊42空間板(7x6)

 1 2 3 4 5 6 7 
 _ _ _ _ _ _ _ 
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|

我只是站在它正在檢查的東西上遇到困難。 我不是要求你給我代碼。 請解釋一下。 :)

它正在構建一個存儲在對角線中的字符串。 例如,如果董事會是:

 1 2 3 4 5 6 7 
 _ _ _ _ _ _ _ 
|_|A|_|_|_|_|_|
|_|_|B|_|_|_|_|
|_|_|_|C|_|_|_|
|_|_|_|_|D|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|

然后是以下行:

diagonal = board[2][0] + board[3][1] + board[4][2] + board[5][3]

將值ABCD分配給變量diagonal ,因為它將board[2][0]A ), board[3][1]B )等中的字符連接成一個字符串: ABCD

if語句組成一個4字符的玩家角色字符串,並檢查它是否在diagonal字符串中。 例如,如果玩家的角色是X ,則if評估是否檢查XXXX是否在ABCD 如果這是True ,它將返回玩家的名字,這意味着他們已經獲勝。

(當然,我的例子中A,B,C和D的實際位置取決於列表列表代表董事會的方式)

1 2 3 4 5 6 7 
 _ _ _ _ _ _ _ 
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|W|_|_|
|_|_|_|Z|_|_|_|
|_|_|Y|_|_|_|_|
|_|X|_|_|_|_|_|

x = 2,0
y = 3,1
z = 4,2
w = 5,3

它可能在播放器1中使用1,在播放器2中使用2,因此電路板看起來像一個數組(請注意,數組可能(行)從顯示的網格中反轉。)

player = 2
the_board = [[0,0,2,0,0,0,0],  
             [0,0,0,2,0,0,0],
             [0,0,0,0,2,0,0],
             [0,0,0,0,0,2,0],
             [0,0,0,0,0,0,0],
             [0,0,0,0,0,0,0]]
print the_board[2][0]  #2
diagonal = the_board[2][0] + the_board[3][1] + the_board[4][2] + the_board[5][3] # 2+2+2+2 = 8
player * 4  == diagonal # 2*4 =?= 2+2+2+2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM