Сейчас мы займемся написанием простой графической игрушки, суть которой за
отведенное время успеть найти все фигуры одинакового цвета. Не знаю как более
точно передать смысл этой игры... в общем, дальше вы все сами
поймете)
Как всегда открываем Delphi и создаем новый проект. Сразу
кидаем на форму компонент DrawGrid с закладки Additional. У него нам нужно
изменить ряд свойств:
1. Свойство ColCount - сделайте равным 20
2. Свойство RowCount - тоже 20
3. Свойство DefaultColWidth = 20
4. Свойство DefaultRowHeight = 20
5. FixedCols = 0
6. FixedRows = 0
7. DefaultDrawing = False
В итоге у вас должно получиться что то похожие.
Теперь мы должны произвольно присвоить каждой ячейке
определенный цвет. Всего цветов у нас будет 3 (красный, зеленый и синий).
Переходим в код и выше ключевого слова var вставляем вот такой
код
const
MAX_COLORS = 3;
const
PossibleColors : array [0..MAX_COLORS-1] of TColor = (clRed, clBlue, clGreen);
Далее, нам понадобиться создать двухмерный массив, в ячейках
которого будут храниться цвета соответствующих квадратов. т.к. размер игровой
области у нас 20 на 20, соответственно и массив у нас будет такой же
размерности. Но для начала давайте объявим парочку констант в которых будет
храниться размер игровой области. Опять же над ключевым словом var напишем
следующий код:
Const
MAX_COLUMNS = 20;
MAX_ROWS = 20;
А теперь создадим массив. Делать мы это будем после ключевого слова var т.е.
сразу же после:
var
Form1: TForm1;
Пишем:
ColorOfBrick : array [0..MAX_COLUMNs, 0..MAX_ROWS] of TColor;
Двигаемся дальше, сейчас нам нужно создать процедуру которая будет при
запуске игры случайным образом назначать квадратам соответствующие цвета. После
ключевого слова public пишем
procedure AssignBrickColors;
Нажимаем комбинацию клавиш CTRL+SHIFT+C ...вуаля и Delphi создал шаблон для
нашей будущей процедуры. В дальнейшем я не буду подробно рассказывать о процессе
создания новой процедуры или функции, если вы вдруг что ни будь забудете
вернитесь на это место. Теперь когда шаблон для процедуры у вас уже создан
посмотрите на то что должно из неё получиться в итоге и добавьте недостающие
строчки.
procedure TForm1.AssignBrickColors;
var
i, j : integer;
begin
for i := 0 to Form1.DrawGrid1.ColCount-1 do
for j := 0 to Form1.DrawGrid1.RowCount-1 do
ColorOfBrick[i][j] := PossibleColors[Random(MAX_COLORS)]
end;
Справились ? я надеюсь что да ! Давайте дадим возможность игроку начинать
новую игру тогда когда он этого захочет, для этого киньте на форму компонент
Button (кнопка) с закладки Standard и сразу же измените у него свойство Caption
на "Новая Игра". Создаем обработчик событий OnClick на кнопке, кликнув на ней
два раза. Между begin и end пропишите:
AssignBrickColors;
Конечно же при запуске, также необходимо начинать новую игру, поэтому создаем
обработчик событий onCreate на форме, опять же между begin end пишем:
Randomize;
Button1.Click;
Ну и напоследок создайте обработчик событий OnDrawCell на компоненте DrawGrid
напишите там
DrawGrid1.Canvas.Brush.Color := ColorOfBrick[ACol][ARow];
DrawGrid1.Canvas.FillRect(Rect)
Запускаем проект, вот что получилось у меня:
Конец 1-ой части
|