可以将“重力”添加到NumPy矩阵中吗?

s71maibg  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(94)

我需要使用Python创建一个Connect Four类型的游戏。我选择使用由零构造的NumPy数组来实现这一点。
使用input()进行移动,然后转换到相应的矩阵位置。我需要添加一个函数来检查放置位置下方的值是否等于0,如果等于0,则需要向下移动位置并重复该过程。
我试过了

if row_gravity[player_row_move + 1] != 0:
    game_board[player_row_move, player_move] = 1
    print(game_board)
    player_state = 1
else:
    player_row_move = player_row_move + 1

字符串
其中row_gravity被定义为row_gravity = game_board.T[player_row_move],其中 game_board 是具有维度x,y的数组。
我不确定我对这个解决方案的期望是什么(除了希望它能起作用)。

ubbxdtey

ubbxdtey1#

这里有一个想法:

import numpy as np

def gravity(m: np.ndarray) -> np.ndarray:
    for (y, x), e in np.ndenumerate(m[:-1, :]):
        if m[y + 1, x] == 0:
            m[y, x] = 0
            m[y + 1, x] = e
    return m

a = np.array([
        [2, 0, 5],
        [0, 6, 0],
        [3, 2, 0],
    ])
print(gravity(a))

字符串
该函数将遍历除最后一行以外的所有行,如果下面有空格,则向下移动每个元素。当检查上面的行时,第一个点将向下“trippel”。
但有一个潜在的问题。如果有多个元素是“浮动的”,代码将失败,例如下面的数组:

a = np.array([
        [2, 0, 5],
        [0, 6, 4],
        [3, 2, 0],
    ])


但是如果我正确理解你的计划的话,这应该不会影响你,因为你只会添加一个新的元素。

00jrzges

00jrzges2#

在numpy中,矩阵是一个二维数组。numpy矩阵本身并不支持模拟重力。但是,您可以创建numpy矩阵并应用自己的自定义操作来模拟重力效果。
以下是如何将重力效果添加到numpy矩阵的示例:

import numpy as np

# Define the dimensions of the matrix
rows = 5
cols = 5

# Create a numpy matrix filled with zeros
matrix = np.zeros((rows, cols))

# Define the gravity value
gravity = 9.8

# Simulate the effect of gravity
for i in range(rows-1, 0, -1):
    matrix[i] = matrix[i-1] + gravity

# Print the resulting matrix
print(matrix)

字符串
在该示例中,用零初始化矩阵,然后通过基于矩阵的每行之上的行迭代地更新矩阵的每行来模拟重力的影响。重力值将添加到行中的每个元素,这将导致元素随着您在矩阵中向下移动而增加。
请注意,这是如何在numpy矩阵中模拟重力的简单说明。实际的实现将取决于您的具体要求以及您希望如何对引力效应进行建模。

相关问题