#python #pygame #logic
#python #pygame #Логические
Вопрос:
В настоящее время я использую pygame для создания игры в шашки. Пока у меня есть функция, которая успешно создает шахматную доску размером 8×8 (см. Ниже).
Теперь мне нужно создать функцию, которая размещает 12 фигур на обоих концах шахматной доски. У меня есть функция, которая рисует фигуры «draw_piece», но я не могу понять, как их рисовать на шахматной доске. Если бы кто-нибудь мог предоставить какие-либо предложения / псевдокод, это было бы с благодарностью.
import pygame as pg
class Board:
GREEN = (34, 139, 34)
CREAM = (245, 222, 179)
ROW = 8
COL = 8
DIMENSIONS = 800
SQUARE_SIZE = DIMENSIONS//COL
#screen size is 800 x 800
def draw_squares(self, win):
win.fill(GREEN)
for row in range(ROWS):
for col in range(row % 2, COLS, 2):
pg.draw.rect(screen, CREAM, (row*SQUARE_SIZE, col *SQUARE_SIZE, SQUARE_SIZE, SQUARE_SIZE))
def draw_piece(self, screen):
radius = SQUARE_SIZE // 2 - 15
pg.draw.circle(screen, self.colour, (self.x, self.y), radius)
Комментарии:
1. «Теперь мне нужно создать функцию, которая размещает 12 фигур на обоих концах шахматной доски» как вы хотите расставить 12 фигур?
2. @Rabbid76 извиняется за то, что не уточнил, в типичной начальной позиции для игры в шашки. Так что в строках 0-2 на каждой второй плитке (цвет доски [0]) и в строках 5-7 на каждой другой плитке (цвет доски [0])
3. повторите цикл над каждым другим квадратом для n фигур с каждого конца.
Ответ №1:
Реализовать метод, который преобразует строку и столбец поля в центральную координату поля и рисует фигуру определенного цвета:
class Board:
# [...]
def drawPiece(self, screen, colour, col, row):
radius = SQUARE_SIZE // 2 - 15
x = SQUARE_SIZE * col SQUARE_SIZE // 2
y = SQUARE_SIZE * row SQUARE_SIZE // 2
pg.draw.circle(screen, colour, (x, y), radius)
Используйте метод, чтобы нарисовать фигуру на поле. Например, если вы хотите добавить фигуру в верхний левый угол поля, аргументы для строки и столбца равны 0:
board.drawPiece(screen, PIECE_COLOURS[0], 0, 0)
Строка и столбец в правом нижнем углу равны 7:
board.drawPiece(screen, PIECE_COLOURS[1], 7, 7)
Создайте список кортежей со строками и столбцами фигур:
pices_1 = []
for col in range(8):
for row in range(3):
if (col row) % 2 == 1:
pices_1.append((col, row))
pices_2 = []
for col in range(8):
for row in range(5, 8):
if (col row) % 2 == 1:
pices_2.append((col, row))
соответственно
pices_1 = [(col, row) for col in range(8) for row in range(3) if (col row) % 2 == 1]
pices_2 = [(col, row) for col in range(8) for row in range(5, 8) if (col row) % 2 == 1]
Нарисуйте фигуры в цикле:
for col, row in pices_1:
board.drawPiece(screen, PIECE_COLOURS[0], col, row)
for col, row in pices_2:
board.drawPiece(screen, PIECE_COLOURS[1], col, row)
Комментарии:
1. Спасибо, это действительно помогает!