5

I want to make a tic tac toe game, and I am making it so when the user inputs a number 1 - 9, it makes an X on the corresponding space on the grid. here's the function for that:

def move(inp):
    if inp == 1:
        one = " X |\t|\n_____________\n   |\t|\n_____________\n   |\t|"
        print one
    elif inp == 2:
        two = "   | X |\n_____________\n   |\t|\n_____________\n   |\t|"
        print two
    elif inp == 3:
        three = "   |\t| X\n_____________\n   |\t|\n_____________\n   |\t|"
        print three
    elif inp == 4:
        four = "   |\t|\n____________\n X |\t|\n_____________\n   |\t|"
        print four
    elif inp == 5:
        five = "   |\t|\n_____________\n   | X  |\n_____________\n   |\t|"
        print five
    elif inp == 6:
        six = "   |\t|\n_____________\n   |\t| X \n_____________\n   |\t|"
        print six
    elif inp == 7:
        seven = "   |\t|\n_____________\n   |\t|\n_____________\n X |\t|"
        print seven
    elif inp == 8:
        eight = "   |\t|\n_____________\n   |\t|\n_____________\n   | X |"
        print eight
    elif inp == 9:
        nine = "   |\t|\n_____________\n   |\t|\n_____________\n   |\t| X "
        print nine

and so, the grid shows up with the X at the right place. But then the next turn comes. And I want to have them enter a new number, but keep the old X where it was. I was thinking: is there a way to combine that function to itself with a different parameter and have them put two X's on the grid? So, my question is, is there a function for this, and if not, how would I do this.

2 Answers 2

2

you could do this:

def make_square(inp):
    square = " {0} |{1}\t|{2}\n_____________\n  {3} | {4}\t|{5}\n_____________\n {6}  |{7}\t|{8}" # set {} brackets for 'X' format
    inp += -1 # rest because need take from 0 as the brackts indice
    for x in range(9): # range max of 'X'
        if x != inp:
            square = square.replace('{{{0}}}'.format(x),' ') # delete brackets without the number select by the user
            # {{ {0} }}  explication http://stackoverflow.com/a/5466478/4941927
    square = square.replace('{{{0}}}'.format(inp),'{0}') # convert current {number} into {0} for format
    square = square.format('X') # formatting brackets for the 'X'
    print square

make_square(2)

if you need help, I am happy to help Greetings!

Sign up to request clarification or add additional context in comments.

Comments

2

When programming, if you find yourself copy-pasting the same code over and over, something is wrong. You should rethink this thing from the start. How about this?

board = [' '] * 9 # the 9 cells, empty at first

def show(board):
    for row in range(3):
        print '|',
        for col in range(3):
            print board[row*3 + col], '|',
        print # newline

def move(inp):
    board[inp-1] = 'X' # user input is 1-based, Python is 0-based
    show(board)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.