2016-03-29 13 views
0

Hier sind einige relevante Teile des Codes. Wie würden Sie das Problem beheben, wenn ein Benutzer falsche Koordinaten außerhalb des Bereichs oder andere Zeichen/Symbole eingibt, damit das Programm sie erneut zur Eingabe auffordert?Verhindern Programmabsturz, wenn ungültige Koordinaten eingegeben werden

Hier sind die relevanten Teile des Programms:

Import Zufalls

def SetUpGameBoard(Board, Boardsize): 
    for Row in range(1, BoardSize + 1): 
    for Column in range(1, BoardSize + 1): 
     if (Row == (BoardSize + 1) // 2 and Column == (BoardSize + 1) // 2 + 1) or (Column == (BoardSize + 1) // 2 and Row == (BoardSize + 1) // 2 + 1): 
     Board[Row][Column] = "C" 
     elif (Row == (BoardSize + 1) // 2 + 1 and Column == (BoardSize + 1) // 2 + 1) or (Column == (BoardSize + 1) // 2 and Row == (BoardSize + 1) // 2): 
     Board[Row][Column] = "H" 
     else: 
     Board[Row][Column] = " " 

def ChangeBoardSize(): 
    BoardSize = int(input("Enter a board size (between 4 and 9): ")) 
    while not(BoardSize >= 4 and BoardSize <= 9): 
    BoardSize = int(input("Enter a board size (between 4 and 9): ")) 
    return BoardSize 

def CheckIfMoveIsValid(Board, Move): 
    Row = Move % 10 
    Column = Move // 10 
    MoveIsValid = False 
    if Board[Row][Column] == " ": 
    MoveIsValid = True 
    return MoveIsValid 

def MakeMove(Board, BoardSize, Move, HumanPlayersTurn): 
    Row = Move % 10 
    Column = Move // 10 
    if HumanPlayersTurn: 
    Board[Row][Column] = "H" 
    else: 
    Board[Row][Column] = "C" 
    FlipOpponentPiecesInOneDirection(Board, BoardSize, Row, Column, 1, 0) 
    FlipOpponentPiecesInOneDirection(Board, BoardSize, Row, Column, -1, 0) 
    FlipOpponentPiecesInOneDirection(Board, BoardSize, Row, Column, 0, 1) 
    FlipOpponentPiecesInOneDirection(Board, BoardSize, Row, Column, 0, -1) 

Vielen Dank für all die Hilfe. Hier ist der gesamte Code, wenn Sie wollen es sehen und es laufen:

http://www.writeurl.com/text/mpt643e0ryn96l0m8zhc/tpcx0mbjc8hdqo2zizwm/ettx0pq62ufshh3y2ays

+0

Was ist falsch an Ihrem Versuch? –

+0

Es stürzt ab. Ich habe alles versucht und es funktioniert nicht. –

+0

Wäre hilfreich, wenn Sie die Fehlermeldung –

Antwort

0

Nun, Sie könnten in eine ValueError laufen versuchen Strings auf ganze Zahlen zu konvertieren. Und da ChangeBoardSize der einzige Ort ist, wo Sie Benutzereingaben verarbeiten, könnte eine Lösung sein: wie darauf in den Kommentaren

def ChangeBoardSize(): 
    try: 
     BoardSize = int(input("Enter a board size (between 4 and 9): ")) 
     assert 4 <= BoardSize <= 9 
     return BoardSize 
    except: # ValueError, AssertionError 
     ChangeBoardSize() 

Und aus, die Sie Python Codierung Konventionen halten sollen (zB Kamel-Fall für Funktionen, Variablen)

+0

Offenbar ist die '= <' ungültige Syntax. –

+0

Hoppla, natürlich ist es, änderte es in '<=' – schwobaseggl

+0

Es löst immer noch einen Fehler mit der Meldung 'IndexError: Listenindex außerhalb des Bereichs '. –

Verwandte Themen