我正在尝试编写游戏 connect-4,并且我尝试在 7x6 矩阵中查找代码的一部分,连续 4 个对角线或连续 4 个 2 的对角线。我的这部分代码不起作用,我尝试了我能做的一切。有时它会检测到有 4 个 1s 或 4 个 2s 的对角线而不是。我创建了矩阵,在 6 个零列表的每个位置放置了一个 7 个零列表。我正在尝试仅使用列表函数来执行此操作,我无法使用 numpy 库或类似库。好的,在这部分代码中,我试图找出矩阵的每个可能对角线中是否连续有 4 个零。PD:我只是想找到从左到右 ATM 的对角线。感谢您的帮助,我尽力解释我的问题,因为英语不是我的主要语言。这是我的代码:
import random
llista = [0]*6 #when i say llista y mean matrix
for i in range(6):
llista[i]=[0]*7
#Here i fill the 7*6 matrix of 0s 1s and 2s randomly so i can see if it works.
for i in range(30):
x=random.randrange(-1,-7,-1)
y=random.randrange(0,7,1)
llista[x][y]=1
for i in range(30):
x=random.randrange(-1,-7,-1)
y=random.randrange(0,7,1)
llista[x][y]=2
#This 2 loops here are too see if it is possible to have a diagonal in the matrece because if you want a diagonal u need at least a one or 2 in the center, the problem is not here.
for i in range(-1,-7,-1):
possible = False
if llista[i][3]==1:
possible = True
break
for i in range(7):
possible2 = False
if llista[-4][i]==1 or llista[-4][i]==1:
possible2=True
break
if possible==True and possible2==True:
#The problem starts here. This first loop i use it too find the diagonals that go from left to right. I want to find diagonals of 4 1s or 4 2s.
for i in range(len(llista)-3):
for j in range(len(llista[i])-3):
#This if is too see if we have four 1 or 2 togheter in the list, if we have them it prints the sentence below.
if (llista[i][j]==1 and llista[i+1][j+1]==1 and llista[i+2][j+2]==1 and llista[i+3][j+3]==1) or (llista[i][j]==2 and llista[i+1][j+1]==2 and llista[i+2][j+2]==2 and llista[i+3][j+3]==2 ):
print("There is at least one left to right diagonal")
或从右到左对角线。#我不想使用尚未使用的函数,也不想以其他方式使用,因为我必须以这种方式理解。谢谢
天涯尽头无女友
森栏
冉冉说
相关分类