2013-11-26 38 views
1

我嘗試創建一個井字棋遊戲;但即時通訊有點麻煩。 我已經建立在它編號的列表,因此,當選擇該號碼它改變到的x或o。然而,當我的板子把它打印在其中的數字0,1,2,3,4,5,6,7,8,我不希望他們是這樣的。 我的問題是我如何可以改變字符的空單?我會使用索引還是有另一種方法呢如何實現列表

board = [0,1,2, 
     3,4,5, 
     6,7,8] 

def gameBoard(): 
    print(" " "a" " " "b" " " "c") 
    print(" ""-------------") 
    print(("1"),("|"),board[0],"|",board[1], "|" ,board[2], "|") 
    print(" ""-------------") 
    print(("2"),("|"),board[3],"|",board[4], "|" ,board[5], "|") 
    print(" ""-------------") 
    print(("3"),("|"),board[6],"|",board[7], "|" ,board[8], "|") 
    print(" ""-------------")  


while True: 
    user_input = input("Enter your move: ") 
    if user_input == "a1": 
     user_input = "0" 
    elif user_input == "a2": 
     user_input = "3" 
    elif user_input == "a3": 
     user_input="6" 
    elif user_input == "b1": 
     user_input = "1" 
    elif user_input == "b2": 
     user_input = "4" 
    elif user_input== "b3": 
     user_input = "7" 
    elif user_input == "c1": 
     user_input = "2" 
    elif user_input == "c2": 
     user_input = "5" 
    elif user_input == "c3": 
     user_input = "8" 
    else: 
     print("invalid coordinates") 
    user_input= int(user_input) 

回答

0

從你的代碼,你用整數填充板0 - 8.如果勾選板[7]它將返回7.

我想你想並初始化用空格板,使board [7]將返回''(空格)。

你可以做板= [ ' ' '', '', '', '', '', '', '','']

或者更乾淨,

板= [」「] * 9

希望這有助於:) 使用矩陣中也並非是實施壞主意,但比這個問題不同,你正在試圖解決

0

使用二維列表!

board = [[0,0,0], 
     [0,0,0], 
     [0,0,0]] 

,然後只用你要等的值則引用是剛:

board[row][column] 

編輯:我有種誤解,而不是通過9是0的問題,你可以讓他們所有空字符串即

board[i] = '' 

或使用字典映射號碼爲字符串

board[5] = '' 
0

您可以使用字典:

board = {0:'X', 1:'O', 2:' ', 
     3:'X', 4:'O', 5:' ', 
     6:'X', 7:'O', 8:' ', 
     } 

print board[1] # will print O 
board[1] = 'X' 
print board[1] # will print X 
0

你的問題還沒有完全完成,因爲你沒有更新在每次迭代的遊戲鍵盤。然而,這裏有一些建議:

  1. 設置你的初始板是全是零(或「O」)
  2. 如果您正在使用一個列表,所有的語句像user_input = '1'等可以直接設置爲use_input = 1避免int顯式調用。
  3. 您可以通過簡單地說board[user_input] = 'X'board[user_input] = 'O',根據玩家更改列表的值。
1

我猜是什麼你想要的是一個帶有字符串的板,而不是數字,最初填充單個空間的字符串。可以使用一個單一的列表此板或二維陣列

單個列表實現

board = [" "," "," "," "," "," "," "," "," "] 

從控制檯例如:

>>> board = [" "," "," "," "," "," "," "," "," "] 
>>> board[2] = "X" 
>>> board 
[' ', ' ', 'X', ' ', ' ', ' ', ' ', ' ', ' '] 
>>> board[0] 
' ' 
>>> board[2] 
'X' 
>>> 

2-d數組實現

board = [[" "," "," "],[" "," "," "],[" "," "," "]] 

控制檯示例:

>>> board = [[" "," "," "],[" "," "," "],[" "," "," "]] 
>>> board[1][2] = "O" 
>>> board 
[[' ', ' ', ' '], [' ', ' ', 'O'], [' ', ' ', ' ']] 
>>> board[0][1] 
' ' 
>>> board[1][2] 
'O' 

例如打印2D名單:

>>> board = [["X"," ","X"],[" ","X"," "],["X"," ","X"]] 
>>> for row in board: 
    string = "" 
    for element in row: 
     string = string + element 
    print(string) 


X X 
X 
X X 
+0

這就是我想要的方式。但它也假設打印出一個實際的井字棋板。我怎麼做 ?因爲他們的方式是這樣的,它打印出一條直線 – user2864064

+0

您需要使用循環,我會更新我的答案以顯示您。 –