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

📄 kota43b.pas

📁 维修店名称 陕西申元电子有限公司 店面地址 西安市友谊东路242号西海大厦一层 维修咨询 8008105858(免费) 或 010-64751880
💻 PAS
📖 第 1 页 / 共 5 页
字号:
procedure TSTG.MoveBom;
var
  iii : Integer;
begin
  for iii := 0 to 75 do
  begin
    if (BD[iii].Empty = True)then
    begin
    with BD[iii] do
    begin
      a3 := a3 + 1;
    case kind of
      0: begin
         if (a3 = 1)then EntryEffect(x,y,AL.Rnd(140)-70,AL.Rnd(140)-70,5);
         if (a1 > 16)then Empty := False;
         end;
      1: begin
         if (a3 = 1)then a2 := (random(3) mod 3);
         if (a1 > 16)then Empty := False;
         end;
      9:
      begin
        if (a3 = 1)then
        begin
         EntrySound(0);
         EntryBom(x,y,0,-2,0);
         EntryBom(x,y,-1,1,0);
         EntryBom(x,y,1,1,0);
        end;
        if ((a3 mod 5) = 1)then
        begin
          if (a3 < 11)then EntrySound(0);
          EntryBom(x,y,AL.Rnd(9)-4,AL.Rnd(7),0);
        end;
        if (a3 > 25)then empty := False;
      end;
      2:
      begin
        if (a3 = 1)then
        begin
         EntrySound(1);
         EntrySound(0);
         EntryBom(x-10,y-10,-2,-2,0);
         EntryBom(x+10,y-10,2,-2,0);
         EntryBom(x+10,y+10,2,2,0);
         EntryBom(x-10,y+10,-2,2,0);
         EntryBom(x,y,0,0,1);
        end;
        if (a3 > 3)then EntryBom(x,y,AL.Rnd(11)-5,AL.Rnd(11)-5,0);
        if (a3 > 8)then empty := False;
      end;
      3:
      begin
        if (a3 = 1)then EntrySound(0);
        EntryBom(x,y,AL.Rnd(7)-3,AL.Rnd(5)-2,0);
        if (a3 > 2)then empty := False;
      end;
      4:
      begin
        if (a3 = 1)then
        begin
          EntrySound(2);
          EntryBom(x,y,AL.Rnd(7)-3,AL.Rnd(7)-3,1);
        end;
        EntryBom(x,y,AL.Rnd(16)-8,AL.Rnd(16)-3,0);
        EntrySound(0);
        if (a3 > 8)then empty := False;
      end;
      5:
      begin
        if (a3 = 1)then
        begin
          EntrySound(1);
          EntryBom(x,y,AL.Rnd(7)-3,AL.Rnd(7)-3,1);
        end;  
        EntryBom(x,y,AL.Rnd(11)-5,AL.Rnd(11)-1,0);
        EntrySound(0);
        if (a3 > 6)then empty := False;
      end;
      6:      //抏傕偽傜嶵偔
      begin
        if (a3 = 1)then
        begin
          EntrySound(1);
          AutoEnemyShot(x,y,8,AL.Rnd(720)-1);
          EntryBom(x,y,0,0,1);
          if (Dif = 1)then AutoEnemyShot(x,y,8,AL.Rnd(720)-1);
        end;
        EntryBom(x,y,AL.Rnd(20)-10,AL.Rnd(20)-10,0);
        if (a3 > 4)then empty := False;
      end;
      7:      //戝墛忋
      begin
        if ((a3 mod 3)=0)then
        begin
          EntryBom(x+AL.Rnd(100)-50,y+AL.Rnd(100)-50,0,0,5);
          EntryBom(x+AL.Rnd(50)-25,y+AL.Rnd(50)-25,0,0,2);
          EntrySound(1);
        end;
        if (a3 > 12)then empty := False;
      end;
      8:      //愴幵敋敪
      begin
        if (a3 = 1)then
        begin
          EntrySound(1);
          EntryBom(x+12,y+6,0,0,0);
          EntryBom(x-12,y+6,0,0,0);
          EntryBom(x   ,y-6,0,0,0);
        end;
        if (a3 > 5)then EntryBom(x,y,AL.Rnd(7)-3,AL.Rnd(7)-3,0);
        if (a3 > 7)then empty := False;
      end;

    end;
    x := x + x1; y := y + y1;
    if ((x<-30) or (x>330))then Empty := False;
    if ((y<-30) or (y>330))then Empty := False;
    a1 := a1 + 1;
    end;
    end;
  end;
end;

//僄僼僃僋僩岠壥偺張棟------------------------
procedure TSTG.EntryEffect(x,y,x1,y1 : SmallInt; kind : Byte);
var
  iii : Integer;
begin
  iii := 0;
  while ((EFD[iii].Empty = True) and (iii<75))do iii := iii + 1;
  if (iii = 75)then iii := AL.Rnd(75);
  EFD[iii].Empty := True;
  EFD[iii].x := x;
  EFD[iii].y := y;
  EFD[iii].x1 := x1;
  EFD[iii].y1 := y1;
  EFD[iii].a1 := 0;
  EFD[iii].a2 := 0;
  EFD[iii].a3 := 0;
  EFD[iii].kind := kind;
end;

procedure TSTG.MoveEffect;
var
  iii : Integer;
begin
  for iii := 0 to 75 do
  if (EFD[iii].Empty = True)then
    with EFD[iii] do
    begin
      a2 := a2 + 1;
      case kind of
        0 : begin
             a1 := a2+1;
             if (a2 > 5)then Empty := False;
             x := x + x1;
             y := y + y1;
            end;
        1 : begin
             a1 := a2+7;
             if (a2 > 5)then Empty := False;
             x := x + x1;
             y := y + y1;
            end;
        2 : begin
             if (a2 = 1)then begin x1 := x; y1 := y; a3 := AL.Rnd(720); end;
             a3 := (a3 + 24) mod 720;
             x := x1 + SC[a3] * (43-a2) div 100;
             y := y1 + SC[(a3 + 180) mod 720] * (43-a2) div 100;
             if (a2 > 40)then Empty := False;
             a1 := 13 + a2 div 7;
            end;
        3 : begin
             if (a2 = 1)then begin x1 := x; y1 := y; a3 := AL.Rnd(720); end;
             a3 := (a3 + 24) mod 720;
             x := x1 + SC[a3] * a2 div 100;
             y := y1 + SC[(a3 + 180) mod 720] * a2 div 100;
             if (a2 > 40)then Empty := False;
             a1 := 13 + a2 div 7;
            end;
        4 : begin
             a1 := a2+13;
             if (a2 > 6)then Empty := False;
             x := x + x1;
             y := y + y1;
            end;
        5 : begin
             a1 := (a2 mod 6)+19;
             if (a2 > 47)then Empty := False;
             x := x + x1 div 10;
             y := y + y1 div 10;
             y1 := y1 + 1;
             if (y > 300)then Empty := False;
             if (abs(x-150)>150)then Empty := False;
            end;
        6 : begin
             a1 := a2+25;
             if (a2 > 1)then Empty := False;
             x := x + x1;
             y := y + y1;
            end;
        7 : begin
             a1 := a2+25;
             if (a2 > 6)then Empty := False;
             x := x + x1;
             y := y + y1;
            end;
      end;

    end;
end;

//傾僀僥儉偺張棟------------------------------

procedure TSTG.EntryItem(x,y : SmallInt; kind : Byte);
var
  iii : Integer;
begin
  iii := 0;
  while ((ID[iii].Empty = True) and (iii<25))do iii := iii + 1;
  ID[iii].Empty := True;
  ID[iii].x := x;
  if (ID[iii].x > 300)then ID[iii].x := 300;
  if (ID[iii].x < 0)  then ID[iii].x := 0;
  ID[iii].y := y;
  ID[iii].x1 := 0;
  ID[iii].y1 := 5;
  ID[iii].kind := kind;
end;

procedure TSTG.MoveItem;
var
  iii : Integer;
begin
  for iii := 0 to 25 do
  if (ID[iii].Empty = True)then
    with ID[iii] do
    begin
     if (PD[0].x > x)then x := x + 1
                     else x := x - 1;
     if (PlayerLong(x,y)<35)then
     case kind of
     0 : begin     //ShotPowerUp
       PD[0].SLevel := PD[0].SLevel + 1;
       if ((PD[0].Slevel div 20) <> ((PD[0].SLevel-1) div 20))then EntryPText(PD[0].x,PD[0].y,'POWER UP',0);
       PD[0].score := PD[0].score + PointScore;
       EntryPText(x,y,IntToStr(PointScore),0);
       PointScore := PointScore + 10;
       if (PointScore > 1000)then PointScore := 1000;

       if (PD[0].SLevel > 65)then PD[0].SLevel := 65;
       Empty := False;
       EntrySound(11);
       end;        //BomAdd
     1 : begin
       PD[0].BOM := PD[0].BOM + 1;
       if (PD[0].BOM > 6)then
       begin
         PD[0].BOM := 6;
         PD[0].score := PD[0].score + 10000;
         EntryPText(x,y,'10000 POINTS',0);
       end
       else EntryPText(x,y,'SPECIAL BOM',0);
       EntrySound(12);
       Empty := False;
       end;
     end;
     y := y + y1 div 10;
     y1 := y1 + 1;
     if (y > 300)then
     begin
       Empty := False;
       if (kind = 0)then PointScore := 100;
     end;
    end;
end;

//僓僐揋偺張棟--------------------------------

procedure TSTG.EntryEnemy(x,y,z,h1,h2,h3,h4,a2,a3,HP : SmallInt;
                          Move,attk,bom, kind : Byte; Score:Integer);
var
  iii : Integer;
begin
  iii := 0;
  while ((ED[iii].Empty = True) and (iii<50))do iii := iii + 1;
  ED[iii].Empty := True;
  ED[iii].x := x;
  ED[iii].y := y;
  ED[iii].z := z;
  ED[iii].a2 := a2;
  ED[iii].a3 := a3;
  ED[iii].a4 := 0;
  ED[iii].h1 := h1; ED[iii].h2 := h2;
  ED[iii].h3 := h3; ED[iii].h4 := h4;
  ED[iii].kind := kind;
  ED[iii].Move := Move;
  ED[iii].attk := attk;
  ED[iii].Hit := 0;
  ED[iii].HP := HP;
  ED[iii].x1 := 0;
  ED[iii].y1 := 0;
  ED[iii].bom := bom;
  ED[iii].score := score;
end;

procedure TSTG.MoveEnemy;
var
  iii,jjj,aaa : Integer;
  aa1,aa2,aa3,aa4 : Integer;
begin
  //揋偺崅掅偝傪僗儚僢僾偡傞
  EnemyNo := 0;
  for iii := 0 to 50 do
   if (ED[iii].Empty = True)then
   begin
    ESwap[EnemyNo] := iii;
    EnemyNo := EnemyNo + 1;
   end;

  for iii := 0 to EnemyNo-1 do
   for jjj := 0 to (EnemyNo-iii-1) do
   begin
    if (ED[Eswap[iii]].z > ED[ESwap[iii+jjj]].z)then
    begin
      aaa := Eswap[iii];
      Eswap[iii] := ESwap[iii+jjj];
      ESwap[iii+jjj] := aaa;
    end;
   end;

  for iii := 0 to EnemyNo-1 do
  begin
    aaa := ESwap[iii];
    if (ED[aaa].Empty = True)then
    begin
    ED[aaa].a4 := ED[aaa].a4 + 1;
    with ED[aaa] do
    begin
      //摦偒
      Shot := False;
      case Move of
        0 :     //慜恑丒慁夞
        begin
          y1 := 300; a1 := 2;
          if (a4 = 1)then a4 := AL.Rnd(40);
          if (a4 > 80)then if (x > 150)then begin x1 := x1 + 20; a1 := 3; end
                                       else begin x1 := x1 - 20; a1 := 1; end;
          x := x + x1 div 100;
          y := y + y1 div 100;
          if (100<PlayerLong(x,y))then
            if ((a4 mod (40-dif*15)) = 1)then AutoEnemyShot(x,y,attk,-1);
          if ((x < -25) or (x > 325)) then Empty := False;
        end;
        1 :    //慜恑丒掆巭丒慜恑
        begin
          if (a4 = 1)then y1 := 800;
          if (y1 > 70)then y1 := y1 - 25;
          if (a4 > 65)then  y1 := y1 + 40;
          x := x + x1 div 100;
          y := y + y1 div 100;
          if ((a4 = 30)and(dif>-1))then AutoEnemyShot(x,y,3,180);
          if (a4 = 35)then AutoEnemyShot(x,y,attk,-1);
          if ((dif = 1)and(a4 = 10))then AutoEnemyShot(x,y,3,-1);
          a1 := 2;
          if (y > 350) then Empty := False;
        end;
        2 :    //慜恑丒屻戅
        begin
          if (a4 = 1)then y1 := 600;
          y1 := y1 - 10;
          x := x + x1 div 100;
          y := y + y1 div 100;
          if ((a4>(33-dif*3))and(a4<39))then AutoEnemyShot(x,y,attk,-1);
          if ((y1 < 0) and (y < -20))then Empty := False;
          a1 := keisan1(PD[0].x - x ,PD[0].y - y);
          a1 := abs(360-a1);
          a1 := (a1 div 55)+1;
          if (y < -50) then Empty := False;
        end;
        3 :    //慜恑丒屻戅丒僶僸儏亅儞
        begin
          if (a4 = 1)then y1 := 600;
          y1 := y1 - 10;
          x := x + x1 div 100;
          y := y + y1 div 100;
          if (a4 = 30)then
          begin
            AutoEnemyShot(x-20,y,attk,200);
            AutoEnemyShot(x+20,y,attk,160);
            y := y - 15;
          end;
          if ((a4 > (37-dif*2)) and (a4 < 42))then
          begin
            AutoEnemyShot(x-40,y+10,5,-1);
            AutoEnemyShot(x+40,y+10,5,-1);
          end;
          if ((y1 < 0) and (y < -20))then Empty := False;
          a1 := 1;
        end;
        4 :    //慜恑丒帺敋乮抏偽傜嶵偒乯
        begin
          y := y + 4;
          if (y > 250)then
          begin
            Empty := False;
            EntryBom(x,y,0,0,6);
          end;
          a2 := (a2 + 1) mod 9;
          a1 := a2 + 1;
        end;
        5:     //傎傠悓偄僒僀儞嬋慄
        begin
          if (a4 = 1)then x1 := x;
          if (a4 = 1)then a4 := AL.Rnd(25);
          y := y + 3;
          a2 := (a2 + 12) mod 720;
          a3 := (a3 + 1) mod 18;
          a1 := a3 + 1;
          x := x1 + trunc(SC[a2]*30 / 100);
          if (100<PlayerLong(x,y))then
            if ((a4 mod (35-dif*15)) = 1)then AutoEnemyShot(x,y,attk,-1);
          if (y > 325) then Empty := False;

⌨️ 快捷键说明

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