На главную

Шахматное поле

Lighting/Colors

Рассмотрим как с помощью цикла нарисовать шахматное поле. Шахматное поле представляет собой сетку из черных и белых квадратиков 8 на 8.

Для того чтобы нарисовать двухмерное шахмаотное поле воспользуемся вложенным циклом. Первый цикл будет пробегаться по столбцам, второй по строкам. Каждый цикл будет выполнять 8 итераций. Цвет текущего квадрата может быть либо черный либо белый, при переходе к каждой следующей клетке в строке он меняется на противоположный. При переходе на новую строку, он также меняется на противоположный. Введем специальные bool переемнную , которая будет хранить текущий выводимый цвет ячейки.


bool isBlack = false;
int CllSize=50;
for(int i = 0; i < 8; i++) {
    for(int j = 0; j < 8; j++) {
        isBlack = !isBlack;
        gr.FillRectangle(
            isBlack ? Brushes.Black : Brushes.White, // текущий цвет клетки
            i * CellSize,  // начальная позиция по X
            j * CellSize, // начальная позиция по Y
            CellSize, CellSize
        ); // ширина клетки по X и Y 
}}

Вставив и запустив данный пример мы увидим следующую картинку:

Данный пример наглядно показывает что для раборты с 2х мерными массивами или сетками удобно использовать 2 цикла (один вложен в другой). Тем самым индексаторы пробегаются по каждому элементы 2х мерной структуры данных, в данном случае Шахматному полю. В дальнейшем эта техникак пригодится нам для обработки двухмерных массивов, вроде годовой температуры по месяцам и дням и так далее.

Исходный код данного примера вы можете найти здесь

Упражнения

  • Переделать отрисовку поля таким орбразом чтобы не использовать bool переменную , а использовать только индексаторы i и j
HI