0

this is my code for connect four so far, the error is coming up NameError: name 'CheckWinVt' is not defined

i'm not sure how to fix this can anyone help?

class ConnectFourBoard:

    def __init__(self, cols = 7, rows = 6, requiredToWin = 4):
        self.__space = ''
        self.__board = []
        self.cols = cols
        self.rows = rows
        self.Win = requiredToWin
        self.__board = [[''] * cols for i in range(rows)]

    def MakeMove(self, row, col, element):
        global __board
        self.__board[row][col] = element

    def CheckWin(board):
        print("Check Winner")
        CheckWinVt(board)
        CheckWinHz(board)
        CheckWinDiag(board)

    def CheckWinVt(board):
        for x in range(rows):
            for y in range(columns):
                if (board[(x,y)] == "X" and board[(x+1,y)] == "X" and board[(x+2,y)] == "X" and board[(x+3,y)] == "X"):
                    print ("Winner == HumanPlayer")
                    break
                elif (board[(x,y)] == "O" and board[(x+1,y)] == "O" and board[(x+2,y)] == "O" and board[(x+3,y)] == "O"):
                    print ("Winner == ComputerPlayer")
                    break

    def CheckWinHz(board):
        for x in range(rows):
            for y in range(columns):
                if (board[(x,y)] == "X" and board[(x,y+1)] == "X" and board[(x,y+2)] == "X" and board[(x,y+3)] == "X"):
                    print ("Winner == HumanPlayer")
                    break
                elif (board[(x,y)] == "O" and board[(x,y+1)] == "O" and board[(x,y+2)] == "O" and board[(x,y+3)] == "O"):
                    print ("Winner == ComputerPlayer")
                    break

    def CheckWinDiag(board):
        for x in range(rows):
            for y in range(columns):
                if (board[x,y] == "X" and board[(x+1,y+1)] == "X" and board[(x+2,y+2)] == "X" and board[(x+3,y+3)] =="X"):
                    print ("Winner == HumanPlayer")
                elif (board[x,y] == "O" and board[(x+1,y+1)] == "O" and board[(x+2,y+2)] == "O" and board[(x+3,y+3)] =="O"):
                    print ("Winner == ComputerPlayer")
                elif (board[x,y] == "X" and board[(x-1,y-1)] == "X" and board[(x-2,y+2)] == "X" and board[(x-3,y+3)] =="X"):
                    print ("Winner == HumanPlayer")
                elif (board[x,y] == "O" and board[(x-1,y-1)] == "O" and board[(x-2,y+2)] == "O" and board[(x-3,y+3)] =="O"):
                    print ("Winner == ComputerPlayer")



    def FullBoard(self):
        row = ""
        for x in range (6):
            for y in range (7):
                row += self.__board[x][y]

            if "" in row:
                return False
            row = ""
        return True

    def FreeSpace(self, row, col):
        if self.__board[row][col] == "":
            return True
        return False

    def show_board_dynamic(self):
        print()
        print("-------")
        for i in range(len(self.__board)):
            for j in range(len(self.__board[0])):
                print("|", end = "")
                print(self.__board[i][j], end = ""),
            print("|")
            print("-------")
        print()

in my main class:

winner = gboard.CheckWin()
hiro protagonist
  • 44,693
  • 14
  • 86
  • 111
sarb
  • 13
  • 4
  • 1
    Possible duplicate of [Python NameError: name is not defined](http://stackoverflow.com/questions/14804084/python-nameerror-name-is-not-defined) – fredtantini Jan 03 '17 at 15:59

1 Answers1

1

all your functions of the form

def CheckWin(board):
    ...
    CheckWinVt(board)

should probably implemented this way (and access the board in this manner):

def CheckWin(self):
    board = self.__board # if you need to do stuff with board
    # or just access self.__board directly
    self.CheckWinVt()
    ....
hiro protagonist
  • 44,693
  • 14
  • 86
  • 111