неправильно numpe.zeros 0 преобразуется - PullRequest
0 голосов
/ 15 января 2020

У меня проблема с переключением чисел с помощью команды np.zeros.

Код должен позволить мне щелкнуть один из девяти квадратов на экране, и он должен переключать ноль в список нулей в один, соответствующий положению квадрата, который я нажал. Вместо этого, когда я случайным образом нажимаю на разные квадраты, обычно выводится форма x, как это, хотя я нахожу это довольно непоследовательным:

    [[1. 0. 1.]
     [0. 1. 0.]
     [1. 0. 1.]]

Я пробовал поискать его в Google, просмотрел некоторые результаты поиска Я не смог найти ничего подобного, и я просмотрел некоторые вопросы, уже заданные в StackOverflow, но я не нашел ответа.

Вот мой код.

    import pygame
    import sys
    import numpy as np
    import math

    pygame.init()

    ROWS = 3
    COLS = 3

    def drop_piece(board, x, y, tun):
        turn = tun + 1
        board[x][y] = turn

    def isValidMove(board, x, y):
        return board[x, y] == 0

    def create_board():
        board = np.zeros((ROWS, COLS))
        return board

    def print_board(board):
        print(board)

    board = create_board()
    width = 999
    height = 999
    turn = 0
    displaySize = (width, height)
    gameOver = False
    print_board(board)
    screen = pygame.display.set_mode(displaySize)

    while not gameOver:

        if event.type == pygame.MOUSEBUTTONUP:
            rawx = event.pos[0]
            rawy = event.pos[1]
            usex = int(math.floor(rawx / 333))
            usey = int(math.floor(rawy / 333))

            if isValidMove(board, usex, usey):
                >if turn == 0:
                    >print(usex,", ",usey)
                    drop_piece(board, usex, usey, turn)


            print_board(board)
            turn += 1
            turn = turn % 2

1 Ответ

0 голосов
/ 15 января 2020

Я попробовал ваш код (он нуждался в некоторой корректировке), и он прекрасно работает для меня. Код, который я использовал:

import pygame
import sys
import numpy as np
import math

pygame.init()

ROWS = 3
COLS = 3

def drop_piece(board, x, y, tun):
    turn = tun + 1
    board[y][x] = turn

def isValidMove(board, x, y):
    return board[x, y] == 0

def create_board():
    board = np.zeros((ROWS, COLS))
    return board

def print_board(board):
    print(board)

board = create_board()
width = 999
height = 999
turn = 0
displaySize = (width, height)
gameOver = False
print_board(board)
screen = pygame.display.set_mode(displaySize)

while not gameOver:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONUP:
            rawx = event.pos[0]
            rawy = event.pos[1]
            usex = int(math.floor(rawx / 333))
            usey = int(math.floor(rawy / 333))

            print(usex,", ",usey)
            drop_piece(board, usex, usey, turn)


            print_board(board)
            turn += 1
            turn = turn % 2

Пример вывода:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
0 ,  0
[[1. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
1 ,  0
[[1. 2. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
2 ,  0
[[1. 2. 1.]
 [0. 0. 0.]
 [0. 0. 0.]]
1 ,  0

Кто-нибудь может подтвердить или опровергнуть это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...