Практика программирования (Бейсик, Си, Паскаль)


         

Написать программу, которая рисует на


Задание 8.14. Построение шахматной доски

Написать программу, которая рисует на экране шахматную доску. Идея программы подсказана К. Э. Садыровым, однако мы предпочли другую реализацию с целью демонстрации идентичных программ на разных языках.

Совет 1 (общий)

Структура программы мало чем отличается от программ, демонстрировавших палитру (см. выше). Единственная тонкость заключается в организации правильного чередования цвета заливки смежных квадратов как в пределах строки, так и при переходе на следующую строку. Для этой цели использован прием "мерцающего бита". При каждом повторении внутреннего цикла величина col принимает чередующиеся значения 7 или 8 (в "мерцающем бите" аналогичная операция выглядела бы так: bit=l- bit или bit:=not bit). Если такое же действие не было бы предусмотрено и во внешнем цикле, то две смежные линейки начинались бы с квадратов одинакового цвета.

Совет 2 (QBasic)

Для подчеркивания границ каждого поля доски приходится сначала заливать очередную клетку, а потом обводить ее границу.

Совет 3 (Си, Паскаль)

Построение залитого поля с одновременной обводкой его границы можно выполнить процедурой bar3d с нулевой глубиной трехмерного столбика.

Программа 8_14.bas

RЕМ Построение шахматной доски DEFINT A-Z SCREEN 12

х0=10: у0=10: col=8: w=50
F0R y=y0 T0 y0+7*w STEP w
col=15-col F0R x=x0 T0 x0+7*w STEP w

LINE (x,y)-(x+w,y+w),col,BF :' Заливка клетки
LINE (x,y)-(x+w,y+w),15,В :' 0бводка границ col=15-col:
' Цвет для смежной клетки NEXT x NEXT у

Программа 8_14.с

/* Построение шахматной доски */
#include <stdio.h>
#include <conio.h>
#include <graphics.h>

main() {

int x,y,x0=10,y0=10,col=8,w=50;

int gd=0,gm;

initgraph(Sgd,&gm,"");

for(y=y0; y<y0+8*w; y+=w)

{
col-15-col;

for(x=x0; x<x0+8*w; xt=w) {

setfillstyle(1,col);

bar3d(x,y,x+w,y+w,0,1); /* 0бводка и заливка клетки */
col=15-col; /* Цвет для смежной клетки */ } }

getch();
closegraph(); }

Содержание  Назад  Вперед