Я работаю над блоком «Шахматы», просматривая видео на YouTube, но мне нужно, чтобы моя доска была более центрированной. Однако я сделал это, теперь мой event.get() event.pos работает не совсем правильно. Примерно 15 пикселей от низа квадрата на самом деле считается квадратом ниже (доска смещена вверх на 15 пикселей). Хотя я мог бы просто переместить доску вверх, мне бы хотелось оставить доску там, где она есть. Есть ли способ сместить координаты pygame? Есть ли способ заставить десятичное число работать с моим кодом по оси Y? Если приведенный ниже код слишком длинный, я прикрепил ссылку на свою папку Chess на GitHub
import pygame as pg
pg.init()
width = 1500
height = 1000
screen = pg.display.set_mode([width, height])
pg.display.set_caption("Play Chess")
font = pg.font.Font("freesansbold.ttf", 20)
big_font = pg.font.Font("freesansbold.ttf", 50)
timer = pg.time.Clock()
fps = 60
blocks = 8 ** 2
turn_select = 0
selection = 100
valid_moves = []
def Draw_Board():
for i in range(blocks // 2):
column = i % 4
row = i // 4
if row % 2 == 0:
pg.draw.rect(screen, 'cadetblue', [900 - (column * 200), (row * 100) + 15, 100, 100])
else:
pg.draw.rect(screen, 'cadetblue', [1000 - (column * 200), (row * 100) + 15, 100, 100])
if (row + 1) % 2 == 0:
pg.draw.rect(screen, 'silver', [900 - (column * 200), (row * 100) + 15, 100, 100])
else:
pg.draw.rect(screen, 'silver', [1000 - (column * 200), (row * 100) + 15, 100, 100])
running = True
while running:
timer.tick(fps)
screen.fill("darkgreen")
Draw_Board()
if turn_select < 2:
if selection < 2:
pg.draw.rect(
screen, 'red',
[white_loc[0] * 100 + 300,
white_loc[1] * 100 + 16, 99, 99], 1)
for event in pg.event.get():
if event.type == pg.QUIT:
running = False
if event.type == pg.MOUSEBUTTONDOWN and event.button == 1:
x_coor = event.pos[0] // 100 - 3
y_coor = event.pos[1] // 100
#I want to put -0.15 here but it won't work
clk_coor = (x_coor, y_coor)
#For White
if turn_select < 2:
if clk_coor in white_loc:
selection = white_loc.index(clk_coor)
if turn_select == 0:
turn_select = 1
if clk_coor in valid_moves and selection != 100:
white_loc[selection] = clk_coor
if clk_coor in black_loc:
black_piece = black_loc.index(clk_coor)
captured_white.append(black_pieces[black_piece])
black_pieces.pop(black_piece)
black_loc.pop(black_piece)
black_ops = check_ops(black_pieces, black_loc, 'black')
white_ops = check_ops(white_pieces, white_loc, 'white')
turn_select = 2
selection = 100
valid_moves = []
pg.display.flip()
pg.quit()
Подробнее здесь: https://stackoverflow.com/questions/786 ... -or-pixels