⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kota43b.pas

📁 维修店名称 陕西申元电子有限公司 店面地址 西安市友谊东路242号西海大厦一层 维修咨询 8008105858(免费) 或 010-64751880
💻 PAS
📖 第 1 页 / 共 5 页
字号:
        end;
        6:     //儗僨傿傾儞僪僔儖僶亅僈儞偭傐偄
        begin
          if (a4 = 1)then begin a4 := AL.Rnd(15); y1 := -40; end;
          a1 := 1;
          if ((a4 > 35) and (a4 < 49)) then a1 := (a4-35) div 2 + 1;
          if (a4 > 48)then a1 := 7;
          if (a4 > 65)then
          begin
            if (x > 150)then x1 := x1 + 2
                        else x1 := x1 - 2;
            a1 := 10 + x1 div 30;
            y1 := y1 + 2;
          end;
          y := y + y1 div 10;
          x := x + x1 div 10;
          if ((DIF<>-1) and (a4 = 60))then AutoEnemyShot(x,y,attk,-1);
          if (a4 = 65)then AutoEnemyShot(x,y,3,-1);
          if ((DIF=1)and(a4 = 75))then AutoEnemyShot(x,y,3,-1);
          if ((x < -30) or (x > 330)) then Empty := False;
        end;
        7 :     //挘傝晅偒朇戜
        begin
          if (a4 = 1)then begin y1 := y*10; a2 := 180; end;
          y1 := y1 + PSpeed;
          y := y1 div 10;
          if (y > 325)then Empty := False;
          //峌寕張棟
          if ((y<PD[0].y+50)and(100<PlayerLong(x,y)))then
           if ((a4 mod (45-DIF*15)) = 1)then AutoEnemyShot(x,y,attk,a2);
          //朇戜夞揮
          aa1 := keisan1(PD[0].x - x ,PD[0].y - y);  //夞揮寁嶼
          if (abs(aa1-a2)<360)then
            if (aa1>a2)then a2 := a2 + 4
                       else a2 := a2 - 4
          else
            if (360>a2)then a2 := a2 - 4
                       else a2 := a2 + 4;
          if (abs(aa1-a2)<5)then a2 := aa1; //峴偒夁偓杊巭

          a2 := (a2 + 720) mod 720;
          a1 := ((a2+20) mod 720) div 40 + 1;
          if (y > 325) then Empty := False;
        end;
      8 :     //愴幵
        begin
          if (a4 = 1)then
          begin
            y1 := y*10;
            if (x > 150)then x := 200 + x
                        else x := -50 - (150-x);
            a2 := 180;
          end;
          y1 := y1 + PSpeed;
          y := y1 div 10;
          if (a4 = 105)then a4 := 105 + AL.Rnd(45);
          if ((a4 > 5) and (a4 < 105))then
           if (x > 150)then x := x - 2
                       else x := x + 2;
          if (y > 325)then Empty := False;
          //峌寕
          if (100<PlayerLong(x,y))then
           if ((a4 mod (52-DIF*15)) = 1)then AutoEnemyShot(x,y,attk,a2);
          //朇戜夞揮
          aa1 := keisan1(PD[0].x - x ,PD[0].y - y);  //夞揮寁嶼
          if (abs(aa1-a2)<360)then
            if (aa1>a2)then a2 := a2 + 4
                       else a2 := a2 - 4
          else
            if (360>a2)then a2 := a2 - 4
                       else a2 := a2 + 4;
          if (abs(aa1-a2)<5)then a2 := aa1; //峴偒夁偓杊巭
          
          a2 := (a2 + 720) mod 720;
          a1 := ((a2+20) mod 720)div 40 + 1;
          if (y > 325) then Empty := False;
        end;
      9 :     //儘働僢僩朇戜
        begin
          if (a4 = 1)then begin y1 := y*10; a2 := 180; end;
          y1 := y1 + PSpeed;
          y := y1 div 10;
          if (y > 325)then Empty := False;
          //峌寕
          aa1 := keisan1(PD[0].x - x ,PD[0].y - y);  //夞揮寁嶼
          if ((y<PD[0].y)and(100<PlayerLong(x,y)))then
           if ((abs(aa1-a2)<3)and((a4 mod 5)=1))then
           begin
            EntrySound(6);
            EntryEnemyShot(x*100+SC[(a2+360)mod 720]*(AL.Rnd(20)-10)
                          ,y*100+SC[(a2+180)mod 720]*(AL.Rnd(20)-10)
                          ,SC[(a2+180)mod 720]*6
                          ,SC[a2]*6
                          ,0,0,8,8,
                          ((a2+22) mod 720) div 45 + 1,  1);
           end;
          //朇戜夞揮
          if (abs(aa1-a2)<360)then
            if (aa1>a2)then a2 := a2 + (2+Dif)
                       else a2 := a2 - (2+Dif)
          else
            if (360>a2)then a2 := a2 - (2+Dif)
                       else a2 := a2 + (2+Dif);
          if (abs(aa1-a2)<2+Dif)then a2 := aa1; //峴偒夁偓杊巭

          a2 := (a2 + 720) mod 720;
          a1 := ((a2+20) mod 720)div 40 + 1;
          if (y > 325) then Empty := False;
        end;

      10 :     //拞儃僗
        begin
          if (a4 = 1)then begin y := 350; x1 := x; a2 := 0; end;
          if (a4 < 45)then y := 375 + SC[720-a4*4]*3;
          x := x1 + SC[a4*4 mod 720] div 3;
          if (a4 > 700)then y := y - 1;
          if (y < -50)then Empty := False;
          if (a4 > 45)then
          begin
           aa1 := (a4-45) mod 360;
           case (aa1 div 72 + 1) of
            1 : if ((aa1 mod (4-DIF))=0)then AutoEnemyShot(x,y,5,-1);
            2,5 :if ((aa1 mod (5-DIF))=0)then
                 begin
                  AutoEnemyShot(x-35,y+10,10,(aa1 * 10)mod 720);
                  AutoEnemyShot(x+35,y+10,10,((360 - aa1 * 10)+7200)mod 720);
                 end;
            3 : if ((aa1 mod (16-DIF*4))=0)then AutoEnemyShot(x,y,8,aa1);
           end;
          end;
          a1 := 1;
        end;

      11 :    //塹惎宆
        begin
          if (a4 = 1)then if (x > 150)then x1 := -1  //堏摦曽岦偺愝掕
                                      else x1 := 1;
          y := y + 1;
          x := x + x1;
          aa1 := a4;
          if (aa1 mod (6-dif) = 1)then AutoEnemyShot(x,y,attk,(aa1 * 30) mod 720);
          if (y > 350)then Empty := False;
          if (abs(x-150) > 200)then Empty := False;
        end;

      12 :   //偔傞偭偲慁夞
        begin
          if (a4 = 1)then
            begin y1 := -30; y := 325; a4 := AL.Rnd(20)+1; end;
          if ((a4 > 105) and (a4 < 160))then y1 := y1 + 2;
          y := y + y1 div 10;
          if (a4 = 130)then z := z + 100;//崅偝傪曄峏
          if (a4 > 400)then Empty := False;
          case (a4 div 50) of
            0,1 : a3 := 1;
            2 : a3 := (a4-100) div 5 + 1;
            else  a3 := 10;
          end;
          if (a4 = 140)then
          begin
            AutoEnemyShot(x,y,attk,-1);
            if (Dif = 1)then AutoEnemyShot(x,y,14,-1);
          end;  
        end;

       13 :   //彫宆塹惎    墌廃婳摴
        begin
          if (a4 = 1)then
            begin a2 := x * 720 div 300; end;
          a1 := (a4 mod 9) + 1;
          case a4 div 50 of
            0,1,2,3 :
                  begin
                   a2 := (a2 + 4) mod 720;
                   x := 150 + (SC[a2] * ((240-a4)) div 100);
                   y := 100 + (SC[(a2+180) mod 720] * ((240-a4)) div 100);
                  end;
            4   : begin
                   a2 := (a2 + 4) mod 720;
                   x := 150 + (SC[a2] * 4) div 10;
                   y := 100 + (SC[(a2+180) mod 720] * 4) div 10;
                  end;
            5,6 : y := y - 3;
            7   : Empty := False;
          end;
          if ((a4 = 140) and (Dif > -1))then AutoEnemyShot(x,y,attk,180);
          if (a4 = 180)then AutoEnemyShot(x,y,attk,180);
          if ((a4 = 220) and (Dif > 0))then AutoEnemyShot(x,y,attk,-1);
        end;

        14 :   //彫宆塹惎    墌廃婳摴乮塃偐傜嵍乯
        begin
          if (a4 = 1)then
            begin a2 := 720 + x div 2; a4 := 75 - x div 4 ; end;
          a1 := (a4 mod 9) + 1;
          if ((a2 < 540)and(a2 > 500)) then y := y - 2
          else
          begin
            a2 := (a2 + 718) mod 720;
            x := 25  + SC[(a2+180) mod 720] * 3;
            y := 350 + SC[a2] * 3;
          end;
          if (y < 0)then Empty := False;
          if (a4 = 120)then AutoEnemyShot(x,y,attk,-1);
          if ((a4 = 160)and(Dif > -1))then AutoEnemyShot(x,y,attk,-1);
        end;

        15 :   //彫宆塹惎    墌廃婳摴乮嵍偐傜塃乯
        begin
          if (a4 = 1)then
            begin a2 := 360 - x div 2; a4 := 75 - x div 4; end;
          a1 := (a4 mod 9) + 1;
          if ((a2 < 580)and(a2 > 540)) then y := y - 2
          else
          begin
            a2 := (a2 + 2) mod 720;
            x := 275 + SC[(a2+180) mod 720] * 3;
            y := 350 + SC[a2] * 3;
          end;
          if (y < 0)then Empty := False;
          if (a4 = 120)then AutoEnemyShot(x,y,attk,-1);
          if ((a4 = 160)and(Dif > -1))then AutoEnemyShot(x,y,attk,-1);
        end;

        16 :  //夞揮朇戜
        begin
          if (a4 = 1)then begin y1 := y*10; a2 := 180; end;
          y1 := y1 + PSpeed;
          y := y1 div 10;

          a2 := (a2 + 1) mod 575;
          aaa := a2 mod 72;
          if (aaa mod (9-Dif*3) = 1)then
            case (a2 div 72) of
              0,3 : AutoEnemyShot(x,y,10,aaa*5);
              1,5 : AutoEnemyShot(x,y,8,aaa);
              2,7 : AutoEnemyShot(x,y,3,aaa*5);
              4,6 : AutoEnemyShot(x,y,13,aaa*5);
            end;
          a1 := (a1 + 1) mod 5 + 1;
          if (y > 332) then Empty := False;
        end;

      end;

    if (a3 > 0)then a1 := a3;
    end;
    end;
  end;
end;

procedure TSTG.AutoEnemy(x,y : smallInt; kind : Byte);
begin
  case kind of
  //                                                昞帵
  //                         HitArea   a3 4  HP  M A B  No Sc
  10 : EntryEnemy(x,y,150,  0,0,50,30, 0,0, 10,  0,0,3, 0,200); //椢偺僓僐
  11 : EntryEnemy(x,y,150,  0,0,50,30, 0,0, 10,  0,3,3, 0,200);
  20 : EntryEnemy(x,y,150,  0,0,50,30, 0,0, 15,  1,1,3, 0,150); //椢偺僓僐婲摦偪傖偆
  21 : EntryEnemy(x,y,150,  0,0,50,30, 0,0, 15,  1,3,3, 0,150);
  30 : EntryEnemy(x,y,140,  0,0,80,80, 0,1, 100, 1,8,2, 1,800);  //123  拞宆偺儎僣
  31 : EntryEnemy(x,y,140,  0,0,80,80, 0,2, 100, 1,9,2, 1,800);
  32 : EntryEnemy(x,y,140,  0,0,80,80, 0,3, 80,  1,0,2, 1,700);
  40 : EntryEnemy(x,y,150,  0,0,50,30, 0,0, 10,  2,5,9, 2,400);
  41 : EntryEnemy(x,y,150,  0,0,50,30, 0,0, 10,  2,6,9, 2,400);
  50 : EntryEnemy(x,y,150,  0,0,140,30,0,0, 75,  3,7,2, 3,500);
  51 : EntryEnemy(x,y,150,  0,0,140,30,0,0, 75,  3,4,2, 3,500);
  60 : EntryEnemy(x,y,150,  0,0,50,50, 0,0, 5 ,  4,0,6, 4,150);
  70 : EntryEnemy(x,y,150,  0,0,50,50, 0,0, 15,  5,0,3, 5,550); //僋儕僗僞儖
  80 : EntryEnemy(x,325,130,0,0,40,50, 0,0, 25,  6,0,9, 6,250); //僔儖僶亅僈儞
  81 : EntryEnemy(x,325,130,0,0,40,50, 0,0, 25,  6,3,9, 6,250);
  82 : EntryEnemy(x,325,130,0,0,40,50, 0,0, 25,  6,8,9, 6,250);
  90 : EntryEnemy(x,y,100,  0,0,40,40, 0,0, 80,  7,3,8, 7,300);   //朇戜
  91 : EntryEnemy(x,y,100,  0,0,40,40, 0,0, 80,  7,4,8, 7,300);
  100: EntryEnemy(x,y,100,  0,0,40,40, 0,0, 35,  8,1,8, 8,200);    //愴幵
  101: EntryEnemy(x,y,100,  0,0,40,40, 0,0, 35,  8,10,8,8,200);
  110: EntryEnemy(x,y,100,  0,0,40,40, 0,0,100,  9,1,8, 9,400);   //儘働僢僩朇
  120: EntryEnemy(x,y,170,  0,0,120,120,0,0,2500,10,1,7,10,2000);   //拞儃僗
  130: EntryEnemy(x,y,170,  0,0,80,70, 0,5, 300, 11,13,2,1,800);  //塹惎宆(廲)
  131: EntryEnemy(x,y,170,  0,0,80,70, 0,5, 300, 11,11,2,1,800);  //塹惎宆(愵)
  132: EntryEnemy(x,y,170,  0,0,80,70, 0,5, 300, 11,12,2,1,800);  //塹惎宆(愵戝)
  140: EntryEnemy(x,y,60,   0,0,40,40, 0,0, 15,  12,0,3,11,650);  //慁夞宆
  141: EntryEnemy(x,y,60,   0,0,40,40, 0,0, 15,  12,3,3,11,650);  //慁夞宆
  142: EntryEnemy(x,y,60,   0,0,40,40, 0,0, 15,  12,13,3,11,650);  //慁夞宆
  150: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  13,0,3,12,400);  //彫宆塹惎(墌廃)
  151: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  13,3,3,12,400);  //彫宆塹惎
  152: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  13,13,3,12,400);  //彫宆塹惎
  153: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  13,8,3,12,400);  //彫宆塹惎
  160: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  14,0,3,12,300); //彫宆塹惎(<<敿墌)
  161: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  14,3,3,12,300);
  162: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  14,13,3,12,300);
  165: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  15,0,3,12,300); //彫宆塹惎(>>敿墌)
  166: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  15,3,3,12,300);
  167: EntryEnemy(x,y,150,  0,0,40,40, 0,0, 50,  15,13,3,12,300);
  170: EntryEnemy(x,y,100,  0,0,60,60, 0,0, 800,16,0,8, 13,1500);   //夞揮朇戜
  //boss
  255:EntryBoss;
  end;
end;

//揋偺抏偺張棟--------------------------

procedure TSTG.EntryEnemyShot(x,y,ax,ay,h1,h2,h3,h4,a2 : SmallInt;
                              Kind : Byte);
var
  iii : Integer;
begin
  iii := 0;
  while ((ESD[iii].Empty = True) and (iii<201))do iii := iii + 1;
  ESD[iii].Empty := True;
  ESD[iii].x := x;
  ESD[iii].y := y;
  ESD[iii].x1 := ax;
  ESD[iii].y1 := ay;
  ESD[iii].a1 := 0;
  ESD[iii].a2 := a2;
  ESD[iii].a3 := 0;
  ESD[iii].h1 := h1;
  ESD[iii].h2 := h2;
  ESD[iii].h3 := h3;
  ESD[iii].h4 := h4;
  ESD[iii].kind := kind;
end;

procedure TSTG.MoveEnemyShot;
var
  iii : Integer;
begin
  for iii := 0 to 200 do
  begin
    if (ESD[iii].Empty = True)then
    begin

    with ESD[iii] do
    begin
    case kind of
      0 :begin
          a2 := (a2 + 1) mod 6;
          a1 := a2 + 17;
         end;
      1 : a1 := a2 + 0;
      2 :begin
          a2 := (a2 + 1) mod 6;
          a1 := a2 + 23;
         end;
      3 :begin
          a1 := a2 + 29;
         end;
      4 :begin
          a2 := (a2 + 1) mod 6;
          a1 := a2 + 23;
          x1 := trunc(x1 * 0.97); y1 := trunc(y1 * 0.97);
          a3 := a3 + 1;
          if (a3 > 40)then
           begin Empty := False; AutoEnemyShot(x div 100,y div 100,3,-1); end;
         end;
      5 :begin
          a3 := a3 + 1;
          a1 := 255;  //椺奜丗儗亅僓亅梡
          case (a3 div 40) of
            0,3 : begin
                 h2 := -100;
                 h3 := 0;
                 h4 := 0;
                end;
            1,2 : begin
                 h1 := 0;
                 h2 := abs(300 - (y div 100)) div 2;
                 h3 := 20;
                 h4 := abs(300- y div 100);
                end;
            4 : Empty := False;
          end;
         end;
    end;

    x := x + x1; y := y + y1;
    if ((x<0) or (x>30000))then Empty := False;
    if ((y<0) or (y>30000))then Empty := False;
    end;

    end;
  end;
end;

//揋偺抏偺娙棯搊榐梡-----------------------

procedure TSTG.AutoEnemyShot(x,y : SmallInt; Kind : Byte; opt : Integer);
var
  k1,k2,k3,ax,ay,iii,aaa : Integer;
begin
  if (abs(x-150)>150)then exit;
  if (abs(y-150)>160)then exit;
  if (opt < 0)then k1 := keisan1(PD[0].x-x ,PD[0].y-y)
              else k1 := opt;
  k1 := k1 mod 720;            
  ay := SC[k1];
  ax := SC[(k1+180) mod 720];
  k2 := ((k1+22) mod 720) div 45 + 1;
  case Kind of
    0 : begin
          EntryEnemyShot(x*100,y*100,ax*3,ay*3, 0,0,8,8, 0,  0);
          EntrySound(5);
        end;
    1 : begin
          EntryEnemyShot(x*100,y*100,ax*4,ay*4, 0,0,8,8, k2, 1);
          EntrySound(6);
        end;
    2 : begin
          EntryEnemyShot(x*100,y*100,ax*5,ay*5, 0,0,8,8, 0,  2);
          EntrySound(5);
        end;
    3 : begin
          EntrySound(6);
          for iii := 0 to 2 do
          begin
            k3 := (k1 +660 + iii*60) mod 720;
            ay := SC[k3]; ax := SC[(k3+180) mod 720];
            k2 := ((k3+22) mod 720) div 45 + 1;
            EntryEnemyShot(x*100,y*100,ax*4,ay*4, 0,0,8,8, k2,  1);
          end;
          EntryEffect(x,y,0,0,1);
        end;
    4 : begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -