Delphi уроки - создаём простую игру.Часть 1

Опубиковано: 07.01.2009 г., автор: , просмотров: 82849

Delphi игра - урок по созданию простой игры. Часть №1.

Сейчас мы займемся написанием простой графической игрушки, суть которой за отведенное время успеть найти все фигуры одинакового цвета. Не знаю как более точно передать смысл этой игры... в общем, дальше вы все сами поймете)

Если захотите узнать стоимость SEO услуг, то посетите сайт netsend.ru.

Как всегда открываем Delphi и создаем новый проект. Сразу кидаем на форму компонент DrawGrid с закладки Additional. У него нам нужно изменить ряд свойств:

1. Свойство ColCount - сделайте равным 20
2. Свойство RowCount - тоже 20
3. Свойство DefaultColWidth = 20
4. Свойство DefaultRowHeight = 20
5. FixedCols = 0
6. FixedRows = 0
7. DefaultDrawing = False

В итоге у вас должно получиться что то похожие.

delphi game

Теперь мы должны произвольно присвоить каждой ячейке определенный цвет. Всего цветов у нас будет 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)

Запускаем проект, вот что получилось у меня:

delphi игра

Конец 1-ой части

 



Похожие материалы

Последние из рубрики

Константин 07 Apr 2010 в 00:00 #
Спасибо! очень помогло!
Alex 09 Feb 2010 в 00:00 #
"Создаем обработчик событий OnClick на кнопке, кликнув на ней два раза. Между begin и end пропишите:

AssignBrickColors;"

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

procedure TForm1.Button1Click(Sender: TObject);
begin
AssignBrickColors;
DrawGrid1.Repaint;
end;
олег 27 Dec 2009 в 00:00 #
а де 2=ая часть
badvanek 22 Dec 2009 в 00:00 #
Коментарий добавил(а): Александр

-5
Дата: 2009-05-18
-5

Что такое дэлпши???
----------------------
чувак тебе сдесь не место
Cthutq 04 Nov 2009 в 00:00 #
Это всё лажа. Зачем писать код если не знаешь о чём он!?

ОтменитьДобавить комментарий