OccamaRazor
@OccamaRazor

Как отобразить координаты X,Y клеток шахматной доски?

Натолкните на мысль, как осуществить это? С циклами запутался
CELL_WIDTH = CELL_HEIGHT = 75
        for X in range(CELL_WIDTH, 610, CELL_WIDTH):
            for Y in range(CELL_HEIGHT, 610, CELL_HEIGHT):
                if (Y + X) % 2 == 0:
                    pygame.draw.rect(DISPLAY, WHITE_CELL, [X, Y, CELL_WIDTH, CELL_HEIGHT])
                else:
                    pygame.draw.rect(DISPLAY, BLACK_CELL, [X, Y, CELL_WIDTH, CELL_HEIGHT])

                if event.type == pygame.MOUSEBUTTONDOWN:
                    if event.button == 1:
                        if (X+75,Y) > event.pos > (X, Y):
                            print(X,Y)


При клике на клетку выводит сразу всю линию, где X правильная координата а Y просто итерируется, так как же сделать чтобы Y определялась а потом выводилась?:
300 75
300 150
300 225
300 300
300 375
300 450
300 525
300 600
  • Вопрос задан
  • 721 просмотр
Решения вопроса 1
karulyana
@karulyana
Начинающий питонист
CELL_WIDTH = CELL_HEIGHT = 75
for p in [(x, y) for x in  range(CELL_WIDTH, 610, CELL_WIDTH) for y  in range(CELL_HEIGHT, 610, CELL_HEIGHT)]:
     if (p[0] + p[1] ) % 2 == 0:
                    pygame.draw.rect(DISPLAY, WHITE_CELL, [X, Y, CELL_WIDTH, CELL_HEIGHT])
                else:
                    pygame.draw.rect(DISPLAY, BLACK_CELL, [X, Y, CELL_WIDTH, CELL_HEIGHT])

                if event.type == pygame.MOUSEBUTTONDOWN:
                    if event.button == 1:
                        if (X+75,Y) > event.pos > (X, Y):
                            print(X,Y)


Вообщем как-то так)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@DennyD314
Впервые услышал про pygame, не очень понимаю логику.
В цикле производится рисование шахматной доски и одновременно ожидается событие клика на какую то область?
Мб это дело вынести за цикл основной надо и написать что-то вроде

if event.type == pygame.MOUSEBUTTONDOWN:
    if event.button == 1:
        for i in range(CELL_WIDTH, 610, CELL_WIDTH):
            for j in range(CELL_HEIGHT, 610, CELL_HEIGHT):              
                 if (i+75,j) > event.pos > (i, j):
                            print(i,j)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы