![]() |
![]() |
![]() |
Во время игры программа
воспринимает нажатия кнопок мыши и, в соответствии с правилами игры, открывает
клетки или ставит в клетки флажки.
Основную работу выполняет
процедура обработки события onMouseDown (ее текст приведен в листинге 15.6).
Сначала процедура преобразует координаты точки, в которой игрок нажал кнопку
мыши, в координаты клетки игрового поля. Затем делает необходимые изменения
в массиве Pole и, если нажата правая кнопка, рисует в клетке флажок. Если нажата
левая кнопка в клетке, в которой нет мины, то эта клетка открывается, на экран
выводится ее содержимое. Если нажата левая кнопка в клетке, в которой есть мина,
то вызывается процедура showPole, которая показывает все мины, в том числе и
те, которые игрок не успел найти.
Листинг 15.6.
Обработка события OnMouseDown на поверхности игрового поля
//
нажатие кнопки мыши на игровом поле
procedure TForm1.Form1MouseDown(Sender: TObject;
Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
row, col : integer;
begin
if status = 2 // игра завершена
then
exit;
if status = 0 then // первый щелчок
status
:= 1;
//
преобразуем координаты мыши в индексы
//
клетки поля
row
:= Trunc(y/H) + 1;
col
:= Trunc(x/W) + 1;
if
Button = mbLeft then
begin
if
Pole[row,col] = 9 then
begin // открыта клетка, в которой есть мина
Pole[row,col] := Pole[row,col] + 100;
status := 2; // игра закончена
ShowPole(Form1.Canvas, status);
end else
if
Pole[row,col] < 9 then
Open(row,col);
end
else
if
Button = mbRight then
if
Pole[row,col] > 200 then begin
// уберем флаг и закроем клетку
nFlag
:= nFlag — 1;
Pole[row,col] := Pole[row,col]-200;
// уберем флаг
x := (col-D* W + 1; у := (row-1)* H + 1;
Canvas.Brush.Color := clLtGray;
Canvas.Rectangle(x-1,y-1,x+W,y+H);
end
else
begin // поставить в клетку флаг
nFlag
:= nFlag + 1; if Pole[row,col] = 9
then
nMin := nMin + 1;
Pole[row,col]:=Pole[row,col]+200;
// поставили флаг
if
(nMin = NM) and (nFlag = NM) then begin
status := 2;
// игра закончена
ShowPole(Form1.Canvas, status);
end
else Kletka(Form1.Canvas, row, col, status);
end;
end;
![]() |
![]() |
![]() |
1. Электромагнитная волна (в религиозной терминологии релятивизма - "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например, ~200 тыс км/с в стекле и ~3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")
2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" - это волнение ничего в ничем. У него нет среды-носителя колебаний.
3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.
4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.
|
![]() |