Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Won't let me end a loop
#5
Here's my code now, and the error message:

Error:
Traceback (most recent call last): File "C:\Users\...\noughts and crosses.py", line 72, in <module> gameRun = checkX() File "C:\Users\...\noughts and crosses.py", line 54, in checkX return gameRun UnboundLocalError: local variable 'gameRun' referenced before assignment
grid = [1, 2, 3,
        4, 5, 6,
        7, 8, 9]

gridSave = [1, 2, 3,
            4, 5, 6,
            7, 8, 9]

gameRun = True

def show():
    print(grid[0], '|', grid[1], '|', grid[2])
    print('----------')
    print(grid[3], '|', grid[4], '|', grid[5])
    print('----------')
    print(grid[6], '|', grid[7], '|', grid[8])

def checkX():
    
    if grid[0] == 'X' and grid[1] == 'X' and grid[2] == 'X':
        print("Player one wins!")
        gameRun = False
    
    if grid[3] == 'X' and grid[4] == 'X' and grid[5] == 'X':
        print("Player one wins!")
        gameRun = False

    if grid[6] == 'X' and grid[7] == 'X' and grid[8] == 'X':
        print("Player one wins!")
        gameRun = False
        

    if grid[0] == 'X' and grid[3] == 'X' and grid[6] == 'X':
        print("Player one wins!")
        gameRun = False

    if grid[1] == 'X' and grid[4] == 'X' and grid[7] == 'X':
        print("Player one wins!")
        gameRun = False

    if grid[2] == 'X' and grid[5] == 'X' and grid[8] == 'X':
        print("Player one wins!")
        gameRun = False
        

    if grid[0] == 'X' and grid[4] == 'X' and grid[8] == 'X':
        print("Player one wins!")
        gameRun = False

    if grid[2] == 'X' and grid[4] == 'X' and grid[6] == 'X':
        print("Player one wins!")
        gameRun = False

    return gameRun
        

show()

while gameRun == True:

    inputX = input("Player one, please select a spot: ")
    inputX = (int(inputX) - 1)
    
    if grid[inputX] != 'X' and grid[inputX] != 'O':
        grid[inputX] = 'X'

    else:
        print("This space is taken!")

    show()

    gameRun = checkX()

    inputY = input("Player two, please select a spot: ")
    inputY = (int(inputY) - 1)
    
    if grid[inputY] != 'X' and grid[inputY] != 'O':
        grid[inputY] = 'O'

    else:
        print("This space is taken!")

    show()

    

if gameRun == False: 

    print("The game is now finished! Play again!")
    grid = gridSave
    print(grid)
    
Reply


Messages In This Thread
Won't let me end a loop - by mzmingle - Aug-06-2017, 07:07 PM
RE: Won't let me end a loop - by ichabod801 - Aug-06-2017, 07:55 PM
RE: Won't let me end a loop - by mzmingle - Aug-06-2017, 08:03 PM
RE: Won't let me end a loop - by ichabod801 - Aug-06-2017, 08:05 PM
RE: Won't let me end a loop - by mzmingle - Aug-06-2017, 08:28 PM
RE: Won't let me end a loop - by ichabod801 - Aug-06-2017, 08:48 PM
RE: Won't let me end a loop - by mzmingle - Aug-06-2017, 08:56 PM
RE: Won't let me end a loop - by ichabod801 - Aug-06-2017, 09:58 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020