Python Forum
Game not letting player 1 win straight away
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Game not letting player 1 win straight away
#1
I'm making a two player noughts and crosses game, and when player one wins, it asks player two to make a move before ending the game. I don't know how to get it to end the game straight away if player 1 wins. Also, at the end of the code, I'm not sure how to get the code to restart or end depending on the user's input. Any help, please?

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

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

gameRun = True


def show():                                         # creates the gameplay grid
    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():                                       # checks if player 1 (X) has a line

    gameRun = True
    
    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

def checkY():                                       # checks if player 2 (Y) has a line

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

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

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

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

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

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

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

    return gameRun

show()

while gameRun == True:                          # main game

    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!")

    gameRun = checkX()

    show()

    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()

    gameRun = checkX()

    

if gameRun == False: 

    playAgain = input("The game is now finished! Play again? (Y/N)")
    if playAgain == 'Y':
        gameRun = True

    if playAgain == 'N':
        print("Goodbye!")
Reply


Messages In This Thread
Game not letting player 1 win straight away - by mzmingle - Aug-15-2017, 04:28 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  trying to put a a filter on identifying a straight CompleteNewb 1 1,667 Dec-01-2021, 11:11 PM
Last Post: CompleteNewb
  coding a 2-player die game Pepper887 3 2,457 Mar-17-2019, 04:02 PM
Last Post: ichabod801

Forum Jump:

User Panel Messages

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