- •Работа с графикой Компонент Область рисования (tPaintBox)
- •Обработка событий. Создание игры.
- •Работа с графикой Понятие холста
- •Принцип отрисовки изображений в Windows
- •Класс tGraphics
- •Свойства и методы класса tCanvas
- •Свойства холста
- •Наследники класса tGraphics Класс Точечное изображение (tBitmap)
Обработка событий. Создание игры.
Изменим сделанную программу на примитивную игру. На нарисованном шахматном поле спрячем клады разной стоимости. Игрок может открыть клад, щелкнув мышью по клетке. Накопившаяся стоимость отражается на форме.
Пояснение к тексту программы |
Изменяемые в программе строки |
|
var Form1: TForm1; d: integer=30; {задаем размер клетки} Klads: array [1..3, 1..5] of integer;
Implementation |
|
type TForm1 = class(TForm) PBox1: TPaintBox; Button1: TButton; Label1: TLabel; Label2: TLabel; LCount: TLabel; LSum: TLabel; procedure PBox1Paint(Sender: TObject); procedure StartKlads; {Эта строка вписана вручную} |
|
implementation {$R *.dfm} procedure TForm1.StartKlads; var t, i, j: integer; begin randomize; for i:=1 to 3 do {зададим нулевые значения} for j:=1 to 5 do Klads[i, j]:=0; for t:=1 to 7 do {размещаем 7 кладов} begin Repeat i:=random(3) + 1; j:=random(5) + 1; until klads[i,j]=0; klads[ i, j ]:=random(100)+1; {сумма клада в клетке} end; LCount.Caption:='0'; LSum.Caption:='0'; end; |
|
procedure TForm1.FormCreate(Sender: TObject); begin StartKlads; end;
procedure TForm1.Button1Click(Sender: TObject); begin StartKlads; end; |
|
var Form1: TForm1; d: integer=30; Klads: array [1..3, 1..5] of integer; XMouse, YMouse: integer; |
|
procedure TForm1.PBox1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer); begin XMouse:=x; YMouse:=y; end; |
|
procedure TForm1.PBox1Click(Sender: TObject); var i, j, Count, Sum:integer; begin i:=YMouse div d + 1; j:=XMouse div d + 1; Count:= StrToInt(LCount.Caption) Sum:= StrToInt(LSum.Caption) if klads[ i, j] > 0 then begin LCount.Caption:=IntToStr(Count+ 1); LSum.Caption:=IntToStr(Sum+ klads[i,j]); klads[i,j]:=0; end; end; |
Можно добавить в игру объект Timer и обработку события OnTimer , так чтобы надо было найти все клады за ограниченное время. Или дописать штрафные очки, если по клетке щелкнули повторно.