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

📄 unit1.pas

📁 用于开发税务票据管理的软件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
        end;
        if (bally[ballch]>1) and (ysteps[sstt1]=1) then begin
            if ballx[ballch]>1 then begin
                image1.Canvas.ellipse(x1[xsteps[sstt1]-1,ysteps[sstt1]],y1[xsteps[sstt1]-1,ysteps[sstt1]],x1[xsteps[sstt1]-1,ysteps[sstt1]]+32,y1[xsteps[sstt1]-1,ysteps[sstt1]]+16);
            end;
        end;

//        if (ballx[ballch]=1) or (bally[ballch]=1) then track1:=1;

        ballshrx[ballch]:=ballshrx[ballch]+xstep;
        ballshry[ballch]:=ballshry[ballch]+ystep;
        if scount>=4 then begin
            ballmx[ballx[ballch],bally[ballch]]:=0;
            ballx[ballch]:=xsteps[sstt1];
            bally[ballch]:=ysteps[sstt1];
            ballmx[ballx[ballch],bally[ballch]]:=ballch;
            sstt1:=sstt1+1;
            xstep:=0;
            ystep:=0;
            zstep:=0;
            balltag[ballch]:=4;
            track1:=1;
            if sstt1>=sstt+1 then begin
                //ballrx[ballch]:=x1[ballx[xdest],bally[xdest]]-((tlwidth-ball1[ballch].Width) div 2);
                //ballry[ballch]:=y1[ballx[ydest],bally[ydest]]-(ball1[ballch].height-(tlheight div 2));
                by1:=ballry[ballch];
                balltag[ballch]:=6;
            end;
        end;
    end;
    if balltag[ballch]=6 then begin
        //image1.Cursor:=crArrow;

        for i:=1 to tilen do begin
            for j:=1 to 4 do begin
                disx[i,j]:=0;
                disy[i,j]:=0;
            end;
        end;
        //checking balls to eliminate by X axis
        discount[1]:=1;
        i:=1;
        while i <= tilen do begin
            if (ballmx[i,bally[ballch]]>0) and (balltype[ballmx[i,bally[ballch]]]=balltype[ballch]) then begin
                disx[discount[1],1]:=i;
                disy[discount[1],1]:=bally[ballch];
                discount[1]:=discount[1]+1;
            end
            else begin
                if discount[1]<6 then begin
                    for j:=1 to discount[1] do begin
                        disx[j,1]:=0;
                        disy[j,1]:=0;
                    end;
                    discount[1]:=1;
                end
                else i:=tilen;
            end;
            i:=i+1;
        end;
        discount[1]:=discount[1]-1;
        if discount[1]<5 then begin
            for i:=1 to 20 do begin
                disx[i,1]:=0;
                disy[i,1]:=0;
            end;
            //form1.Caption:='no X';
        end;
        //else balltag[ballch]:=7;
        /////
        //checking balls to eliminate by Y axis
        discount[2]:=1;
        i:=1;
        while i <= tilen do begin
            if (ballmx[ballx[ballch],i]>0) and (balltype[ballmx[ballx[ballch],i]]=balltype[ballch]) then begin
                disx[discount[2],2]:=ballx[ballch];
                disy[discount[2],2]:=i;
                discount[2]:=discount[2]+1;
            end
            else begin
                if discount[2]<6 then begin
                    for j:=1 to discount[2] do begin
                        disx[j,2]:=0;
                        disy[j,2]:=0;
                    end;
                    discount[2]:=1;
                end
                else i:=tilen;
            end;
            i:=i+1;
        end;
        discount[2]:=discount[2]-1;
        if discount[2]<5 then begin
            for i:=1 to 20 do begin
                disx[i,2]:=0;
                disy[i,2]:=0;
            end;
            //form1.Caption:='no';
        end;
        //else balltag[ballch]:=7;
        /////
        if ballx[ballch]<bally[ballch] then begin
            a:=1;
            b:=bally[ballch]-ballx[ballch]+1;
            c:=tilen-b+1;
        end
        else begin
            a:=ballx[ballch]-bally[ballch]+1;
            b:=1;
            c:=tilen-a+1;
        end;
        //form1.Caption:=inttostr(a)+', '+inttostr(b);
        discount[3]:=1;
        i:=1;
        while i <= c do begin
            if (ballmx[a,b]>0) and (balltype[ballmx[a,b]]=balltype[ballch]) then begin
                disx[discount[3],3]:=a;
                disy[discount[3],3]:=b;
                discount[3]:=discount[3]+1;
            end
            else begin
                if discount[3]<6 then begin
                    for j:=1 to discount[3] do begin
                        disx[j,3]:=0;
                        disy[j,3]:=0;
                    end;
                    discount[3]:=1;
                end
                else i:=c;
            end;
            a:=a+1;
            b:=b+1;
            i:=i+1;
        end;
        discount[3]:=discount[3]-1;
        if discount[3]<5 then begin
            for i:=1 to 20 do begin
                disx[i,3]:=0;
                disy[i,3]:=0;
            end;
            //form1.Caption:='no';
        end;
        ////
        if ballx[ballch]<tilen-bally[ballch]+1 then begin
            a:=1;
            b:=bally[ballch]+ballx[ballch]-1;
            c:=b;
        end
        else begin
            a:=ballx[ballch]-(tilen-bally[ballch]+1)+1;
            b:=tilen;
            c:=tilen-a+1;
        end;
        discount[4]:=1;
        i:=1;
        while i <= c do begin
            if (ballmx[a,b]>0) and (balltype[ballmx[a,b]]=balltype[ballch]) then begin
                disx[discount[4],4]:=a;
                disy[discount[4],4]:=b;
                discount[4]:=discount[4]+1;
            end
            else begin
                if discount[4]<6 then begin
                    for j:=1 to discount[4] do begin
                        disx[j,4]:=0;
                        disy[j,4]:=0;
                    end;
                    discount[4]:=1;
                end
                else i:=c;
            end;
            a:=a+1;
            b:=b-1;
            i:=i+1;
        end;
        discount[4]:=discount[4]-1;
        if discount[4]<5 then begin
            for i:=1 to 20 do begin
                disx[i,4]:=0;
                disy[i,4]:=0;
            end;
            //form1.Caption:='no';
        end;
        ////

        if discht=0 then begin
            newtag:=1;
        end
        else begin
            newtag:=0;
            discht:=1;
        end;
        //discht:=0;


        for i:=1 to 4 do begin
            if discount[i]>=5 then begin
                score:=score+discount[i];
                disptag:=1;
                newtag:=0;
            end;
        end;

        //making balls disappear
        {for i:=1 to 4 do begin
            if discount[i]>=5 then begin
                for j:=1 to discount[i] do begin
                    ballshow[ballmx[disx[j,i],disy[j,i]]]:=false;
                    ballmx[disx[j,i],disy[j,i]]:=0;
                    if(disx[j,i]=1) or (disy[j,i]=1) then image1.Canvas.Rectangle(x1[disx[j,i],disy[j,i]]-16,y1[disx[j,i],disy[j,i]]-16,x1[disx[j,i],disy[j,i]]+16,y1[disx[j,i],disy[j,i]]+16);
                    for a:=disy[j,i]-1 to disy[j,i] do begin
                        for b:=disx[j,i]-1 to disx[j,i] do begin
                            if (b>0) and (b<=tilen) and (a>0) and (a<=tilen) then begin
                                image1.Canvas.Draw(x1[b,a]-round(tlwidth/2),y1[b,a],floor1);
                                if ballmx[b,a]>0 then begin
                                    image1.Canvas.Draw(ballshrx[ballmx[b,a]],ballshry[ballmx[b,a]],ballsh[ballmx[b,a]]);
                                end;
                            end;
                        end;
                    end;
                    for a:=disy[j,i]-1 to disy[j,i]+1 do begin
                        for b:=disx[j,i]-1 to disx[j,i]+1 do begin
                            if (b>0) and (b<=tilen) and (a>0) and (a<=tilen) then begin
                                if ballmx[b,a]>0 then begin
                                    image1.Canvas.Draw(ballrx[ballmx[b,a]],ballry[ballmx[b,a]],ball1[ballmx[b,a]]);
                                end;
                            end;
                        end;
                    end;
                end;
            end;
        end;}

        balltag[ballch]:=0;
        ballch:=0;
    end;
end;

if ballch=0 then begin
    if ballch1>0 then begin
        if(ballx[ballch1]=1) or (bally[ballch1]=1) then image1.Canvas.Rectangle(ballrx[ballch1],ballry[ballch1]-5,ballrx[ballch1]+ball1[ballch1].width,ballry[ballch1]+ball1[ballch1].height);
        ballry[ballch1]:=by1;
        for i:=bally[ballch1]-1-track2 to bally[ballch1]+track1 do begin
          for j:=ballx[ballch1]-1-track2 to ballx[ballch1]+track1 do begin
            if (j>0) and (j<=tilen) and (i>0) and (i<=tilen) then begin
                image1.Canvas.Draw(x1[j,i]-round(tlwidth/2),y1[j,i],floor1);
                if ballmx[j,i]>0 then begin
                    image1.Canvas.Draw(ballshrx[ballmx[j,i]],ballshry[ballmx[j,i]],ballsh[ballmx[j,i]]);
                end;
            end;
          end;
        end;
        for i:=bally[ballch1]-1-track2 to bally[ballch1]+1+track1 do begin
          for j:=ballx[ballch1]-1-track2 to ballx[ballch1]+1+track1 do begin
            if (j>0) and (j<=tilen) and (i>0) and (i<=tilen) then begin
                if ballmx[j,i]>0 then begin
                    image1.Canvas.Draw(ballrx[ballmx[j,i]],ballry[ballmx[j,i]],ball1[ballmx[j,i]]);
                end;
            end;
          end;
        end;
        balltag[ballch]:=0;
        ballch1:=ballch;
    end;
end;

//Making balls disappear
if disptag=1 then begin
    dispfc:=dispfc+1;
    for i:=1 to 4 do begin
        if discount[i]>=5 then begin
            for j:=1 to discount[i] do begin
                image1.Canvas.Draw(ballrx[ballmx[disx[j,i],disy[j,i]]],ballry[ballmx[disx[j,i],disy[j,i]]],dispic[dispfc]);
            end;
        end;
    end;
    if dispfc>4 then begin
        dispfc:=0;
        disptag:=2;
    end;
end;
if disptag=2 then begin
        for i:=1 to 4 do begin
            if discount[i]>=5 then begin
                for j:=1 to discount[i] do begin
                    ballshow[ballmx[disx[j,i],disy[j,i]]]:=false;
                    ballx[ballmx[disx[j,i],disy[j,i]]]:=0;
                    bally[ballmx[disx[j,i],disy[j,i]]]:=0;
                    ballmx[disx[j,i],disy[j,i]]:=0;
                    if(disx[j,i]=1) or (disy[j,i]=1) then image1.Canvas.Rectangle(x1[disx[j,i],disy[j,i]]-16,y1[disx[j,i],disy[j,i]]-16,x1[disx[j,i],disy[j,i]]+16,y1[disx[j,i],disy[j,i]]+16);
                    for a:=disy[j,i]-1 to disy[j,i] do begin
                        for b:=disx[j,i]-1 to disx[j,i] do begin
                            if (b>0) and (b<=tilen) and (a>0) and (a<=tilen) then begin
                                image1.Canvas.Draw(x1[b,a]-round(tlwidth/2),y1[b,a],floor1);
                                if ballmx[b,a]>0 then begin
                                    image1.Canvas.Draw(ballshrx[ballmx[b,a]],ballshry[ballmx[b,a]],ballsh[ballmx[b,a]]);
                                end;
                            end;
                        end;
                    end;
                    for a:=disy[j,i]-1 to disy[j,i]+1 do begin
                        for b:=disx[j,i]-1 to disx[j,i]+1 do begin
                            if (b>0) and (b<=tilen) and (a>0) and (a<=tilen) then begin
                                if ballmx[b,a]>0 then begin
                                    image1.Canvas.Draw(ballrx[ballmx[b,a]],ballry[ballmx[b,a]],ball1[ballmx[b,a]]);
                                end;
                            end;
                        end;
                    end;
                end;
            end;
        end;

    //drawing score
    scores:='0000';
    scores1:=inttostr(score);
    j:=1;
    for i:=5-length(scores1) to 4 do begin
        scores[i]:=scores1[j];
        j:=j+1;
    end;
    for i:=1 to 4 do begin
        scorex:=image1.Width-10-((5-i)*tlheight);
        image1.Canvas.Draw(scorex,10,scorepic[strtoint(scores[i])]);
    end;
    ////
    disptag:=0;
    if discht=2 then discht:=1;
end;
//end;

//putting new bals;
if newtag=1 then begin
    //checking if there is enough space to put three balls
    k:=0;
    for i:=1 to tilen*tilen do begin
        if ballshow[i] then k:=k+1;
    end;
    if tilen*tilen-k>=3 then k1:=3
    else k1:=tilen*tilen-k;
    newtag:=2;
end;
if newtag=2 then begin
    for i:=1 to k1 do begin
        k:=1;
        while k<=tilen*tilen do begin
            if not ballshow[k] then begin
                newbind[i]:=k;
                ballshow[k]:=true;
                k:=tilen*tilen;
            end;
            k:=k+1;
        end;
    end;

    for i:=1 to k1 do begin
        ballpl:=false;
        while not ballpl do begin
            ballpl:=true;
            ballx[newbind[i]]:=random(tilen)+1;
            bally[newbind[i]]:=random(tilen)+1;
            for k:=1 to tilen*tilen do begin
                if (ballshow[k]) and (newbind[i]<>k) then begin
                    if (ballx[newbind[i]]=ballx[k]) and (bally[newbind[i]]=bally[k]) then ballpl:=false;
                end;
            end;
        end;
        ballmx[ballx[newbind[i]],bally[newbind[i]]]:=newbind[i];
        balltype[newbind[i]]:=newbtype[i];

        ball1[newbind[i]]:=ballt[balltype[newbind[i]]];

        ballrx[newbind[i]]:=x1[ballx[newbind[i]],bally[newbind[i]]]-((tlwidth-ball1[newbind[i]].Width) div 2);
        ballry[newbind[i]]:=y1[ballx[newbind[i]],bally[newbind[i]]]-(ball1[newbind[i]].height-(tlheight div 2));

        ballshrx[newbind[i]]:=x1[ballx[newbind[i]],bally[newbind[i]]]-16;

⌨️ 快捷键说明

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