Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/47: Рейтинг темы: голосов - 47, средняя оценка - 4.70
1 / 1 / 0
Регистрация: 01.05.2021
Сообщений: 6

Шахматная доска

01.05.2021, 22:33. Показов 12367. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
Напишите функцию board(num, size), создающую графический файл в формате PNG с изображением квадратного чёрно-белого клетчатого поля.
В функцию поступают два целых числа — количество клеток n и размер клетки в пикселях s.
(в примере создаётся доска 8x8 клеток, размер каждой клетки — 50x50 пикселей).
Левая верхняя клетка должна быть чёрной.

--------------------

Помогите найти ошибку, она скорее всего в каких-то небольших смещениях квадратов, но я не могу понять где она, а интересно найти ее и понять. Я знаю, что уже есть решения этой задачи, но мне нужно именно мою ошибку понять. Буду очень благодарен

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from PIL import Image, ImageDraw
 
 
def board(num, size, cell_colour='#000000'):
    image = Image.new('RGB', (num * size, num * size), '#FFFFFF')
    drawer = ImageDraw.Draw(image)
 
    for x in range(0, num, 2):
        for y in range(0, num):
            if y % 2 == 0:
                drawer.rectangle(((x * size - 1, y * size - 1),
                                  (x * size + size - 1, y * size + size - 1)), cell_colour)
            else:
                drawer.rectangle(((x * size + size - 1, y * size - 1),
                                  (x * size + size + size - 1, y * size + size - 1)), cell_colour)
    image.save('res_1.png', 'PNG')
    image.show()
 
 
board(8, 1000)
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2021, 22:33
Ответы с готовыми решениями:

Доска с шашками
Нарисуйте доску с расставленными шашками. Постарайтесь сделать это как можно эффективнее, не рисуя каждую по отдельности.

Шахматная доска
Добрый день! Помогите новичку разобраться в данной задачи, непонятно не с чего начать, не как её реализовать: На вход подаётся строка...

Шахматная доска
На Питоне!!!!!!!!!!!!!!!!!!!!! Даны два числа n и m. Создайте двумерный массив размером n×m и заполните его символами 1 и 0 в шахматном...

6
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
01.05.2021, 23:10
skeypro, она и есть черная
Миниатюры
Шахматная доска  
0
1 / 1 / 0
Регистрация: 01.05.2021
Сообщений: 6
01.05.2021, 23:39  [ТС]
Я понимаю, визуально выглядит все правильно, но тестирующая программа не принимает, скорее всего, из-за того, что где-то съехало на пару пикселей. Хочу понять где ошибка
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
02.05.2021, 09:46
Лучший ответ Сообщение было отмечено skeypro как решение

Решение

Цитата Сообщение от skeypro Посмотреть сообщение
Я понимаю, визуально выглядит все правильно
Не правильно. Зачем делаете сторону в 1000 пикселей? Сделайте 10, и все увидите.
Исправленный код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from PIL import Image, ImageDraw
 
 
def board(num, size, cell_colour='#000000'):
    image = Image.new('RGB', (num * size, num * size), '#FFFFFF')
    drawer = ImageDraw.Draw(image)
 
    for x in range(0, num, 2):
        for y in range(0, num):
            if y % 2 == 0:
                drawer.rectangle(((x * size, y * size ),
                                  (x * size + size - 1, y * size + size - 1)), cell_colour)
            else:
                drawer.rectangle(((x * size + size, y * size),
                                  (x * size + size + size - 1, y * size + size - 1)), cell_colour)
    image.save('res_1.png', 'PNG')
    image.show()
 
 
board(8, 10)
Добавлено через 17 минут
Чуть сокращенный вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from PIL import Image, ImageDraw
 
def board(num, size):
    image = Image.new('1', (num * size, num * size), 1)
    drawer = ImageDraw.Draw(image)
    for x in range(num):
        for y in range(num):
            if (x+y) % 2 == 0:
                drawer.rectangle(((x * size, y * size ), ((x+1) * size - 1, (y +1)* size - 1)), 0)
    image.save('res_1.png', 'PNG')
    image.show()
 
board(9, 100)
1
1 / 1 / 0
Регистрация: 01.05.2021
Сообщений: 6
02.05.2021, 10:40  [ТС]
Спасибо большое, я понял ошибку)
0
0 / 0 / 0
Регистрация: 13.03.2023
Сообщений: 1
13.03.2023, 20:00
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from PIL import Image
 
 
def board(num, size):
    # создаем пустое изображение
    img_size = num * size
    img = Image.new("RGB", (img_size, img_size), color="white")
 
    # закрашиваем клетки
    for i in range(num):
        for j in range(num):
            if (i + j) % 2 == 0:
                for x in range(size):
                    for y in range(size):
                        img.putpixel((i * size + x, j * size + y), (0, 0, 0))
 
    # сохраняем изображение в формате PNG
    img.save("res.png")
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
13.03.2023, 21:36
Python
1
2
3
4
5
6
7
8
from PIL import Image
def board(num, size):
    image = Image.new('1', (num, num), 1)
    data=[(i + j) % 2 for i in range(num) for j in range(num)]
    image.putdata(data)
    image=image.resize((num*size, num*size))
    image.save("res.png")
board(9, 10)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2023, 21:36
Помогаю со студенческими работами здесь

Шахматная доска
Добрый вечер! Есть задача: Напишите функцию board(num, size), создающую графический файл в формате PNG с изображением квадратного...

Шахматная доска
Hallo, всем ползователям форума. Сори за, возможно, тупой вопрос, но у меня такая проблема: Я хочу написать простой код, который...

Шахматная доска
https://contest.yandex.ru/testsys/statement-image?imageId=f48a4dbfd6ebc09b1a5e104dfb1b9cff05111e0b469ef02c36c3ad1c37b5558f На шахматной...

Шахматная доска
Представьте, что вы пишете компьютерную игру «Шахматы». Вам надо смоделировать шахматную доску, которая представляет собой numpy-матрицу....

шахматная доска
Шахматная доска состоит из n×m клеток, покрашенных в чёрный и белый цвет в шахматном порядке. При этом клетка в левом нижнем углу доски...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru