2016-04-28 9 views
5

Ich möchte ein Tic Tac Toe Spiel machen, und ich mache es so, wenn der Benutzer eine Zahl von 1 - 9 eingibt, macht es ein X auf dem entsprechenden Platz im Raster. Hier ist die Funktion dafür:Kombinieren Sie die gleiche Funktion mit verschiedenen Parametern - Python

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 

und so zeigt das Raster mit dem X an der richtigen Stelle. Aber dann kommt der nächste Zug. Und ich möchte, dass sie eine neue Nummer eingeben, aber behalten Sie das alte X, wo es war. Ich dachte: Gibt es eine Möglichkeit, diese Funktion mit einem anderen Parameter mit sich selbst zu kombinieren und sie dazu zu bringen, zwei Xs am Gitter zu platzieren? Also, meine Frage ist, gibt es eine Funktion dafür, und wenn nicht, wie würde ich das tun.

Antwort

2

Sie dies tun könnte:

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) 

, wenn Sie Hilfe brauchen, bin ich glücklich Grüße zu helfen!

2

Wenn Sie beim Programmieren feststellen, dass Sie den gleichen Code immer wieder kopieren, ist etwas nicht in Ordnung. Sie sollten dieses Ding von Anfang an überdenken. Wie wäre es damit?

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) 
Verwandte Themen