首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >制作tic-tac-toe草稿

制作tic-tac-toe草稿
EN

Stack Overflow用户
提问于 2020-06-01 21:59:56
回答 3查看 74关注 0票数 1
代码语言:javascript
运行
复制
import numpy as np
player1 = True


def create_board():
    board = np.zeros((3,3), dtype=int)
    return board


def place(board , player1 , position ):
    if player1 == True:
        player1 = False
        if board[position] == 0:
            board = position
        elif board[position] != 0:
            print("False , place taken 1")
    else:
        if player1 == False:
            if board[position] == 0:
                board = position
            elif board[position] != [0, 0]:
                print("False , place taken 2 ")
    return board

函数调用:

代码语言:javascript
运行
复制
place(board=create_board() , player1=1 , position=(0,0))

这是我的代码,在这段代码中,有很多事情发生了,但有一部分我无法正确理解。在粗体部分,我尝试替换

代码语言:javascript
运行
复制
([0,0,0],
 [0,0,0], 
 [0,0,0])

代码语言:javascript
运行
复制
([1,0,0],
 [0,0,0],
 [0,0,0])

我可以知道吗,我该怎么做呢?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-01 22:25:26

您错误地将if语句中的board变量更改为position

代码语言:javascript
运行
复制
if board[position] == 0:
    board = position

您应该在索引position处更改board内的值

代码语言:javascript
运行
复制
board[position] = 1   # for player 1
board[position] = 2   # for player 2

我还清理了一些代码

代码语言:javascript
运行
复制
def place(board , player1 , position ):

    x = 1 if player1 else 2

    if board[position] != 0:
        print(f'False , place taken {x}')

    else:
        board[position] = x

    return board
票数 1
EN

Stack Overflow用户

发布于 2020-06-01 22:26:37

你在用board = position给你的董事会分配职位信息,我想你指的是board[position] == 1

代码语言:javascript
运行
复制
def place(board , player, position ):
    if board[position] == 0: #if the position is unclaimed
        board[position] = player #claim it for the player
    else:
        print(f"place was already taken by player {board[position]}")
    return board

#call using the player number
place(board=create_board() , player=1 , position=(0,0))

这个函数会给你你想要的东西。

票数 1
EN

Stack Overflow用户

发布于 2020-06-01 23:10:11

当您尝试在board = position中更新您的电路板时,实际上是在使用您的坐标对更新整个电路板。

您真正想要的是精确定位二维数组中的确切位置,您必须更新该位置才能存储占用的单元格。您可以使用以下命令更改这一行

代码语言:javascript
运行
复制
board[position] = 1 # occupied cell

然而,正如Hammad在另一个答案中所说的那样,更改您的

代码语言:javascript
运行
复制
0 for unoccupied
1 for occupied

而必须依赖于知道目前谁在进行中,

代码语言:javascript
运行
复制
0 for unoccupied
1 for occupied by player one
2 for occupied by player two

所以你总能知道谁住了那间牢房。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62133942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档