[英]How can I add 1D numpy array to the first column of a 2D numpy array?
[英]I only can check the first column of an 2D array
我用精靈寫了那個記憶謎題,但我有一些錯誤: 1.- 當我將鼠標移到框上時,只有第一列顯示高亮效果。 2.- 同樣,只有第一列顯示覆蓋框的效果
我認為問題在於功能:
def cartesianToPositional(x, y):
'''
That function is used to check if the mouse is over a box. In that case, the function return the position of the
box on which is over in the 2D list positional order
'''
for boxx in range(COLUMNS):
for boxy in range(ROWS):
left, top = positionalToCartesian(boxx, boxy)
boxRect = pygame.Rect(left, top, BOXSIZE, BOXSIZE)
if boxRect.collidepoint(x, y): # That method is used to check if the x, y position is colliding with the boxRect
return (boxx, boxy)
return (None, None)
def drawHighlightBox(boxx, boxy):
'''
This function draw a perimether around the box passed with the highlightcolor
'''
left, top = positionalToCartesian(boxx, boxy)
pygame.draw.rect(DISPLAY, HIGHLIGHTCOLOR, (left - 5, top - 5, BOXSIZE + 10, BOXSIZE + 10), 4) # 4 is for the width of the line
def drawBoxCovers(board, boxes, cover):
'''
This function cover the icons if is needed
'''
for box in boxes:
left, top = positionalToCartesian(box[0], box[1])
pygame.draw.rect(DISPLAY, BGCOLOR, (left, top, BOXSIZE, BOXSIZE))
ball = getBall(board, box[0], box[1])
drawIcon(ball, box[0], box[1])
if cover > 0:
pygame.draw.rect(DISPLAY, BOXCOLOR, (left, top, BOXSIZE, BOXSIZE))
pygame.display.update()
FPSCLOCK.tick(FPS)
這是一個縮進問題。 在cartesianToPositional
,返回語句( return (None, None)
)必須在函數的末尾,而不是在外循環中:
def cartesianToPositional(x, y):
for boxx in range(COLUMNS):
for boxy in range(ROWS):
left, top = positionalToCartesian(boxx, boxy)
boxRect = pygame.Rect(left, top, BOXSIZE, BOXSIZE)
if boxRect.collidepoint(x, y):
return (boxx, boxy)
# <--
return (None, None)
在您的源代碼中,您的一個函數會提前返回。
def cartesianToPositional(x, y):
'''
That function is used to check if the mouse is over a box. In that case, the function return the position of the
box on which is over in the 2D list positional order
'''
for boxx in range(COLUMNS):
for boxy in range(ROWS):
left, top = positionalToCartesian(boxx, boxy)
boxRect = pygame.Rect(left, top, BOXSIZE, BOXSIZE)
if boxRect.collidepoint(x, y): # That method is used to check if the x, y position is colliding with the boxRect
return (boxx, boxy)
# This prevents your outer for loop from completing
return (None, None)
return (none, None)
刪除一級縮進return (none, None)
,它應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.