uses
  GraphABC, ABCObjects;

var
  a, b, x, y: integer;
  w: Picture; 
 
const
  Image_1 = 'дом талисманов поб.jpg';
  Image_2 = 'дом мишки.jpg';
  Image_3 = 'дом зайки.jpg';
  Image_4 = 'белый фон.jpg';
  Image_5 = 'дом леопарда.jpg';
  image_6='дом талисманов закрытие.jpg';
  
procedure KeyDown(Key: integer);
label 1, 2,3;

begin
  
  case Key of
       VK_N: 
           begin
             {Создание сцены Белый мишка: дом Мишки, Мишка и факел}
             w := Picture.Create(Image_2);
             w.Load(Image_2);
             w.Draw(1, 1);
             new MultiPictureABC(10, 400, 'факел.jpg');
             a := 1350;b := 10;
             new MultiPictureABC(a, b, 'мишка в горах.jpg');        
           end;
  end;{конец создания сцены Белый Мишка}
  
  case Key of 
       VK_Left:  
              begin
                if (a < 100) and (b > 400) and (b < 450) then
                   begin
                     new MultiPictureABC(a, b, 'мишка в горах исчез.jpg');
                     new MultiPictureABC(10, 400, 'мишка с факелом.jpg');          
                     TextOut(10, 550, 'Факел в руках у мишки!Нажмите клавишу R,чтобы перейти на другой уровень');
                     goto 1;
                   end
                                                         else
                     if (a > 1283) or ((a > 1133) and (a < 1283) and (b > 211)) or ((a > 905) and (a < 1133)) or ((a > 733) and (a <= 905) and (b < 150)) or ((a > 411) and (a <= 733)) or ((a <= 411) and (a > 253) and (b > 400)) or (a<=253)  then
                        begin a := a - 5;new MultiPictureABC(a, b, 'мишка в горах.jpg'); end;
               end;{конец движения влево Мишки}
       VK_Right: 
               begin
                 if ((a>411) and (a<1000) and (b<289)) or ((a>100) and (a<600) ) then
                    begin a := a + 5; new MultiPictureABC(a, b, 'мишка в горах.jpg');end;
               end;{конец движения вправо Мишки}
       VK_Up:    
            begin
               if ((a>1133) and (b>211)) or ((a>900)and (a<1000)) or ((a>400) and (a<905)) then 
                  begin b := b - 5;new MultiPictureABC(a, b, 'мишка в горах.jpg'); end;
            end;{конец движения вверх Мишки}
       VK_Down:  
              begin        
                if ((b < 445) and ((a>905) or (a<600))) then
                   begin b := b + 5;new MultiPictureABC(a, b, 'мишка в горах.jpg');end;
              end;{конец движения вниз Мишки} 
  end;{конец перемещения Мишки}
  1:
  case Key of
       VK_R: 
           begin
              {Создание сцены Зайка: дом Зайки, Мишка с факелом,огонь}
              ClearWindow;
              w := Picture.Create(Image_3);
              w.Load(Image_3);
              w.Draw(1, 1);
              a := 150;b := 50;
              new MultiPictureABC(a, b, 'заяц.jpg');
              new MultiPictureABC(20, 350, 'мишка с факелом.jpg');
              new MultiPictureABC(1230, 290, 'огонь.jpg');
          end;
  end;{конец создания сцены Зайка}   
  case Key of 
       VK_Delete:  
                begin
                  if ((a <200)and (b>250)) then
                     begin
                       new MultiPictureABC(a, b, 'заяц с огнем влево.jpg');          
                       new MultiPictureABC(20,260, 'мишка с факелом горит.jpg');
                       TextOut(10, 510, 'Зайка зажег факел у Мишки! Нажмите клавишу M,чтобы Перейти на другой уровень');
                       goto 2;
                     end
                               else
                     begin a := a - 5;new MultiPictureABC(a, b, 'заяц с огнем влево.jpg'); end;
                end;{конец движения влево Зайки}    
        VK_PageDown: 
                   begin
                     if ((a>1200) and (b>150) and (b<400)) then
                        begin
                         new MultiPictureABC(1230, 290, 'огонь исчез.jpg');
                         new MultiPictureABC(a, b, 'заяц исчез.jpg');
                         new MultiPictureABC(a, b, 'заяц с огнем влево.jpg');
                         TextOut(1000, 520, 'Зайка c огнем! Идите строго влево и зажги факел у Мишки!');
                        end                      
                                                                     else
                      if (a<1000) or ((a>=1000)and (b>250)) then
                        begin a := a + 5; new MultiPictureABC(a, b, 'заяц.jpg'); end;
                   end;{конец движения вправо Зайки}
        VK_Home:    
                begin b := b - 5;new MultiPictureABC(a, b, 'заяц.jpg'); end;{конец движения вверх Зайки}
        VK_End:  
               begin  
                 if ((b < 325) and (a < 1140)) or ((a > 1140) and (b < 70)) then
                    begin  b := b + 5; new MultiPictureABC(a, b, 'заяц.jpg'); end;
               end;{конец движения вниз Зайки}
  end;{конец перемещения Зайки}
  
  2:   case Key of
           VK_M:
               begin
                  {Создание сцены Леопард: дом леопарда, анимация передачи огня от Мишки к Леопарду}
                  ClearWindow;
                  w := Picture.Create(Image_5);
                  w.Load(Image_5);
                  w.Draw(1, 1);
                  new MultiPictureABC(50, 50, 'мишка с факелом горит.jpg');
                  new MultiPictureABC(500, 200, 'леопард 1.jpg');
                  new MultiPictureABC(1300, 400, 'multi3.jpg');
                  a:=500; b:=200;
                  x:=50;
                  for var i:=1 to 45 do
                      begin
                          new MultiPictureABC(x, 50, 'мишка с факелом горит.jpg');
                          x:=x+5;
                          sleep(50)
                      end;       
                  new MultiPictureABC(x,50, 'мишка с факелом исчез.jpg');
                  new MultiPictureABC(500,200, 'леопард с огнем.jpg');
                  new MultiPictureABC(400,200, 'мишка в горах направо.jpg');
                  TextOut(350, 150, 'Мишка передал факел с огнем Леопарду! Помоги Леопарду передать Факел с огнем спортсмену!');
              end;
        end;{конец создания сцены Леопард}
       case Key of 
            VK_A:  
                begin a := a - 5;new MultiPictureABC(a, b, 'леопард с огнем.jpg'); end;    
            VK_D:
                if (a>1100) and (b>300) then
                    begin
                      new MultiPictureABC(a,b, 'леопард с огнем исчез.jpg');
                      new MultiPictureABC(a,b, 'леопард 2.jpg');
                      new MultiPictureABC(1270, 400, 'multi4.jpg');
                      TextOut(700, 550, 'Ура! Олимпийский огонь в руках спортсмена!Нажмите клавишу K,чтобы Перейти на другой уровень');
                      goto 3;
                    end
                                        else
                    begin a:=a+5;new MultiPictureABC(a, b, 'леопард с огнем.jpg');end;{конец движения вправо Леопарда}
              
          VK_W:    
              begin b := b - 5;new MultiPictureABC(a, b, 'леопард с огнем.jpg'); end;     
          VK_S:
              if (b<410) then
                  begin b := b + 5;new MultiPictureABC(a, b, 'леопард с огнем.jpg'); end;
      end;{конец перемещения леопарда}
  3: case Key of
          VK_K: 
              begin
                ClearWindow;
                {Создание сцены Белый фон: Бегущий спортсмен, мерцание огня в чаше}
                w := Picture.Create(Image_4);
                w.Load(Image_4);
                w.Draw(1, 1);
                {Рисование стойки чаши олимпийского огня}
                a := 900;
                b := 588;
                MoveTo(a, b);
                LineTo(a - 50, b - 60);
                MoveTo(a + 150, b - 60);
                LineTo(a + 100, b);
                Rectangle(a, b, a + 100, b + 240);
                Ellipse(a - 50, b - 70, a + 150, b - 50);
                Ellipse(a, b - 10, a + 100, b + 10);
                FloodFill(a + 10, b - 60, clSilver);
                FloodFill(a + 20, b - 40, clBlack);
                FloodFill(a + 20, b - 1, clBlack);
                FloodFill(a + 20, b + 1, clBlack);
                FloodFill(a + 50, b + 100, clSilver);
                {Анимация бега спортсмена до чаши олимпийского огня}
                x := 200;
                y := 450;
                for  var i := 1 to 200 do
                  begin
                    new MultiPictureABC(x, y, 'multi1.jpg');
                    new MultiPictureABC(x, y, 'multi2.jpg');
                    x := x + 1;
                    Sleep(10);
                end;{конец анимации бега спортсмена}
                {Анимация мерцания огня}
                Sleep(1000);
                for var i := 1 to 10 do
                    begin
                      MoveTo(a + 20, b - 60);
                      LineTo(a - 60, b - 200);
                      LineTo(a, b - 140);
                      LineTo(a - 20, b - 230);
                      LineTo(a + 10, b - 200);
                      LineTo(a + 50, b - 250);
                      LineTo(a + 80, b - 180);
                      LineTo(a + 120, b - 200);
                      LineTo(a + 80, b - 60);
                      LineTo(a + 20, b - 60);          
                      FloodFill(a, b - 100, clRed);
                      FloodFill(a, b - 100, clRed);
                      a := 910;
                      MoveTo(a + 20, b - 60);
                      LineTo(a - 60, b - 200);
                      LineTo(a, b - 140);
                      LineTo(a - 20, b - 230);
                      LineTo(a + 10, b - 200);
                      LineTo(a + 50, b - 250);
                      LineTo(a + 80, b - 180);
                      LineTo(a + 120, b - 200);
                      LineTo(a + 80, b - 60);
                      LineTo(a + 20, b - 60);
                      FloodFill(a - 10, b - 100, clYellow);
                      FloodFill(a, b - 100, clYellow);          
               end;{конец анимации мерцания огня} 
            
               
  w := Picture.Create(Image_6);
  w.Load(Image_6);
  w.Draw(1, 1);

               {CloseWindow;}
          end;
     end;{конец создания сцены Белый фон}    
end;{конец процедуры KeyDown}


begin
SetWindowTop(0);
SetWindowLeft(0);
SetWindowWidth(ScreenWidth);
SetWindowHeight(ScreenHeight);
    {Создание заставки игры Дом талисманов победителей}
  w := Picture.Create(Image_1);
  w.Load(Image_1);
  w.Draw(1, 1);
  TextOut(1000, 785, 'Нажмите клавишу N,чтобы Начать игру');   
    // Привязка обработчиков к событиям    
  OnKeyDown := KeyDown;

end.