gpt4 book ai didi

python - 搜索 3d 点以查找是否有连续的点

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:26 26 4
gpt4 key购买 nike

我这样做只是为了尝试提高一点我的技能,我正在尝试重新创建一个多年前我在学校无聊时想到的游戏。

基本上它有点像 3d connect 4,也应该翻转,所以如果你的空间意识不是很好,它会搞砸你的想法。我已经尝试在 python 中制作一个非常基本的显示(我知道如何在 Maya 中构建东西,而不是在 python 中,所以现在我将坚持使用看起来很垃圾的设计,直到它正常工作),并且它还可以查找点并将它们放置在其中。

但是,我一直坚持实际阅读这些点以找到 4 的任何行。我知道我可以将其全部打印出来,但我确信会有更好的方法。例如,每个角点可以是 x、y、z、xy、xz、yz 或 xyz,我不希望有人为我编写代码,但如果您能告诉我一种无需输入即可计算的方法,我将不胜感激每种可能的组合(我认为总共有 76 种,除非我错过了任何一种)

如果没有对角线,我会做一个循环,但我不知道如何检查这些

干杯

到目前为止的代码在这里 -

#x(width),z(depth),y(height),playernum
points=[1,4,1,1],[2,1,3,1],[4,4,1,2],[3,4,1,2],[2,4,1,2],[1,1,2,1]

for j in range(1,5):
#set indent
spaces=" "
#draw top
print spaces + "________________"

#search points on certain level
validPointsY=[]
for point in points:
if point[2]==5-j:
validPointsY.append( point )
#draw middle
for i in range(1,5):

#search points on certain row
validPointsZ=[]
for point in validPointsY:
if point[1]==5-i:
validPointsZ.append( point )

#place points in correct box
point1=" "
point2=" "
point3=" "
point4=" "
for point in validPointsZ:
if point[0]==1:
point1=str(point[3])
if point[0]==2:
point2=str(point[3])
if point[0]==3:
point3=str(point[3])
if point[0]==4:
point4=str(point[3])

#remove one from space
spaces = spaces[:-1]
print spaces + "/ "+point1+" / "+point2+" / "+point3+" / "+point4+" /"
spaces = spaces[:-1]
print spaces + "/___/___/___/___/"

郑重声明一下,如果你没事可做,这个游戏会很有趣,但显然它看起来不会很好,哈哈

最佳答案

这个问题不需要优化(它足够小),所以“简单”的解决方案就足够好了。您可以枚举所有可能的对齐方式,从每个可能的点开始并朝任何可能的方向进行:

for x in [1, 2, 3, 4]:
for y in [1, 2, 3, 4]:
for z in [1, 2, 3, 4]:
# start of the alignment is given by (x, y, z).
for dx in [-1, 0, +1]:
for dy in [-1, 0, +1]:
for dz in [-1, 0, +1]:
# add (dx, dy, dz) for each successive point.
# check that it makes a valid alignment first.
if ((dx, dy, dz) != (0, 0, 0) and
1 <= x + 3*dx <= 4 and
1 <= y + 3*dy <= 4 and
1 <= z + 3*dz <= 4):
# that's a valid alignment.
print (x, y, z), (x + 3*dx, y + 3*dy, z + 3*dz)

这将打印 152 行,即 2 乘以 76:从两端找到每个对齐。应该没关系。您可以用检查来替换“打印”行,以确保所有 4 个点都有来自同一玩家的棋子。

关于python - 搜索 3d 点以查找是否有连续的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com