Просьба помочь с алгоритмом в connect4
#39429643
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: Calgary
Сообщения: 1 159
|
|
Делаю адаптацию функций для игры Connect4, столкнулся с непонятками в требуемом алгоритме проверки
требовалось написать свои функции для проверки по горизонтали, вертикали, двум диагоналям, и функцию проверки выигрышного хода. Это удалось написать. А вот на последней споткнулся окончательно. Особенно на фразе #R e m o v e t h e top checker from that column - правильно ли я ее понял? WonGame - это проверка TRUE итога хотя бы в одной из 4 проверок
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
# Checking if there is a move that the player can make to win the game?
# Params:
# board: The board as a 2D list.
# player: The player that is going to make the move, either PLAYER1 or PLAYER2.
# Returns:
# -1 if there is no winning move.
# The column number in the board if there is a winning move.
#
def WinMove(board, player):
for col in range(0,len(board[0])-1): #для фразы For each column in the board
if columnFull(board,col) == False: #If_the_column_is not full
board[dropChecker(board,col)][col] = player #Play_a_checker_in that column for the current player
if WonGame(board,playChecker(board,col),col)==True: #check if the game was won by playing that checker
board[playChecker(board,col)][col] = BLANK #Remove the top checker from that column (надо удалить этот только что введеный?)
return col
else:
board[playChecker(board,col)][col] = BLANK #Remove the top checker from that column
return -1
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
def Horizontal(board, row, col):
for row in range(0,len(board)):
for col in range(0,len(board[row])-3):
if ((board[row][col] == board[row][col+ 1] == board[row][col+ 2] ==\
board[row][col+ 3]) and (board[row][col] != BLANK)):
return True
return False
def Vertical(board, row, column):
for row in range(0,len(board)-3):
for col in range(0,len(board[row])):
if (board[row][col] == board[row + 1][col] == board[row + 2][col] ==\
board[row + 3][col]) and (board[row][col] != BLANK):
return True
return False
def PosSlope(board, row, column):
for row in range(0,len(board)-3):
for col in range(3,len(board[row])):
if len(board) >4:
if (board[row][col] == board[row + 1][col - 1] == board[row + 2][col - 2] ==\
board[row + 3][col - 3]) and (board[row][col] != BLANK):
return True
elif (board[row][col] == board[row + 1][col - 1] == board[row + 2][col - 2] ==\
board[row + 3][col - 3]) and (board[row][col] != BLANK):
return True
return False
def NegSlope(board, row, column):
for row in range(0,len(board)-3): # how many rows in array
for col in range(0,len(board[row])-3): # how many columns in array
if len(board[row]) < 5: # limits scope by 5 COLUMNS
if (board[row][col] == board[row + 1][col + 1] == board[row + 2][col + 2] ==\
board[row + 3][col + 3]) and (board[row][col] != BLANK):
return True
elif (board[row][col] == board[row + 1][col + 1] == board[row + 2][col + 2] ==\
board[row + 3][col + 3]) and (board[row][col] != BLANK):
return True
else:
return False
|
|