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

📄 pukegamewin.pas

📁 基于使用Delphi编写源码的扑克牌游戏源码
💻 PAS
📖 第 1 页 / 共 4 页
字号:
            end;
         end;
       //----
       5:begin
           //上边第三列
           if MyPoint.Index+1=Ok3Max then
            begin
              Flag:=1;
              (Sender as Timage).BringToFront;
            end;
         end;
       6:begin
            //上边第四列
           if MyPoint.Index+1=Ok4Max then
            begin
              Flag:=1;
              (Sender as Timage).BringToFront;
            end;
         end;
       7:begin
            //下边第一列
             if MyPoint.Index+1<>Not1Max then
             begin
             More:=True;
             Flag:=1;
             end
             else
             begin
              Flag:=1;
             (Sender as Timage).BringToFront;
             end;
         end;

       8:begin
        //下边第二列
             if MyPoint.Index+1<>Not2Max then
             begin
             More:=True;
             Flag:=1;
             end
             else
             begin
              Flag:=1;
             (Sender as Timage).BringToFront;
             end;
         end;


       9:begin
         //下边第三列
             if MyPoint.Index+1<>Not3Max then
             begin
             More:=True;
             Flag:=1;
             end
             else
             begin
              Flag:=1;
             (Sender as Timage).BringToFront;
             end;
         end;
       10:begin
         //下边第四列
             if MyPoint.Index+1<>Not4Max then
             begin
             More:=True;
             Flag:=1;
             end
             else
             begin
              Flag:=1;
             (Sender as Timage).BringToFront;
             end;
         end;
   end;//end of Case;
end;

procedure TForm1.MyMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
i,j:integer;
begin
   if Flag = 1 then
     begin
        if More then
        begin
           Case Currently.Ground of
    1,2,3,4,5,6:begin
                end;
               7:begin
                   j:=0;
                   for i:=Currently.Index to High(NotCard1) do
                   begin
                      Myimage[NotCard1[i]].Top:=(Sender as Timage).Top+Y-VarY+j;
                      Myimage[NotCard1[i]].Left:=(Sender as Timage).Left+X-VarX;
                      Myimage[NotCard1[i]].BringToFront ;
                      J:=J+15;
                   end;
                 end;
               8:begin
                   j:=0;
                   for i:=Currently.Index to High(NotCard2) do
                   begin
                      Myimage[NotCard2[i]].Top:=(Sender as Timage).Top+Y-VarY+j;
                      Myimage[NotCard2[i]].Left:=(Sender as Timage).Left+X-VarX;
                      Myimage[NotCard2[i]].BringToFront ;
                      J:=J+15;
                   end;

                 end;

               9:begin
                   j:=0;
                   for i:=Currently.Index to High(NotCard3) do
                   begin
                      Myimage[NotCard3[i]].Top:=(Sender as Timage).Top+Y-VarY+j;
                      Myimage[NotCard3[i]].Left:=(Sender as Timage).Left+X-VarX;
                      Myimage[NotCard3[i]].BringToFront ;
                      J:=J+15;
                   end;

                 end;
               10:begin
                   j:=0;
                   for i:=Currently.Index to High(NotCard4) do
                   begin
                      Myimage[NotCard4[i]].Top:=(Sender as Timage).Top+Y-VarY+j;
                      Myimage[NotCard4[i]].Left:=(Sender as Timage).Left+X-VarX;
                      Myimage[NotCard4[i]].BringToFront ;
                      J:=J+15;
                   end;

                 end;
           end;//end of Case;
        end
        else  // more = flag;
        begin
        (Sender as Timage).Top :=(Sender as Timage).Top + Y - VarY;
        (Sender as Timage).Left :=(Sender as Timage).Left + X - VarX;
        (Sender as timage).BringToFront;
        end;  //end of if more = true;
    end; //Flag=1

end;

procedure TForm1.MyMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i:integer;
begin
   if Flag = 1 then Flag:=0;
   if CheckGround((Sender as Timage)) then
   begin
        if (OldTop >= UpCard_Top) and ( OldTop<=UpCard_Top+99)
         and (OldLeft>=104) and (OldLeft<= 152) then
         begin
          Counts:=Counts-1;
          if Counts<=0 then
          counts:=1;
          DelHandCard((Sender as Timage).Tag);
          Label1.Caption:='剩余牌数:'+inttostr(High(HandCard)+1);
         end;
         if (OldTop=DownCard_Top) and (OldLeft=Card0_Left) then
         begin
           MoveCard(1,1,1);
         end;

         if (OldTop>=DownCard_Top) and  (OldLeft=Card1_Left) then
         begin
            //下面第一列;
            MoveCard(3,1,(Sender as Timage).Tag);

         end;

         if (OldTop>=DownCard_Top) and  (OldLeft=Card2_Left) then
         begin
            //下面第二列;
            MoveCard(3,2,(Sender as Timage).Tag);

         end;

         if (OldTop>=DownCard_Top) and  (OldLeft=Card3_Left) then
         begin
            //下面第三列;
             MoveCard(3,3,(Sender as Timage).Tag);


         end;

         if (OldTop>=DownCard_Top) and  (OldLeft=Card4_Left) then
         begin
            //下面第四列;
             MoveCard(3,4,(Sender as Timage).Tag);
         end;

         if (OldTop=UPCard_Top) And ((OldLeft=Card1_Left) or (OldLeft=UpCard_Left1)) then
         begin
            //上面第一列;
            MoveCard(2,1,Ok1Max);
         end;

         if (OldTop=UPCard_Top) And ((OldLeft=Card2_Left) or (OldLeft=UpCard_Left2)) then
         begin
            //上面第二列;
            MoveCard(2,2,Ok2Max);
         end;

          if (OldTop=UPCard_Top) And ((OldLeft=Card3_Left) or (OldLeft= UpCard_Left3)) then
         begin
            //上面第三列;
            MoveCard(2,3,Ok3Max);
         end;

          if (OldTop=UPCard_Top) And ((OldLeft=Card4_Left) or (OldLeft=UpCard_Left4))then
         begin
            //上面第四列;
            MoveCard(2,4,Ok4Max);
         end;


//自动送牌-------------------------


        if NotCard1=nil then
        begin
           if BackCard<>nil then
           begin
              MyImage[BackCard[0]].top:=DownCard_Top;
              MyImage[BackCard[0]].Left:=Card1_Left;
              Myimage[BackCard[0]].Visible:=True;
              Myimage[BackCard[0]].Enabled :=True;
              Myimage[BackCard[0]].BringToFront ;
              Not1Max:=1;
              SetLength(NotCard1,Not1Max);
              NotCard1[0]:=BackCard[0];
              MyCard[BackCard[0]].Top:=DownCard_Top;
              MyCard[BackCard[0]].Left:=Card1_Left;
              MoveCard(1,0,0);
              Label2.Caption:='剩余牌数:'+inttostr(High(BackCard)+1);
          end
          else
          begin
              if HandCard<>nil then
              begin
              Myimage[HandCard[0]].Top :=DownCard_Top;
              MYimage[HandCard[0]].Left:=Card1_Left;
              MYimage[HandCard[0]].Visible :=true;
              Myimage[HandCard[0]].Enabled :=True;
              Not1Max:=1;
              SetLength(NotCard1,Not1Max);
              NotCard1[0]:=HandCard[0];
              MyCard[HandCard[0]].Top :=DownCard_Top;
              MyCard[HandCard[0]].Left :=Card1_Left;
              delHandCard(HandCard[0]);
              Label2.Caption:='剩余牌数:0';
              Label1.Caption:='剩余牌数:'+inttostr(High(HandCard)+1);

              end;
          end;
        end;
        if NotCard2=nil then
        begin
           if BackCard<>nil then
           begin
              MyImage[BackCard[0]].top:=DownCard_Top;
              MyImage[BackCard[0]].Left:=Card2_Left;
              Myimage[BackCard[0]].Visible:=True;
              Myimage[BackCard[0]].Enabled := true;
              Myimage[BackCard[0]].BringToFront ;
              Not2Max:=1;
              SetLength(NotCard2,Not1Max);
              NotCard2[0]:=backCard[0];
              MyCard[BackCard[0]].Top:=DownCard_Top;
              MyCard[BackCard[0]].Left:=Card2_Left;
              MoveCard(1,0,0);
              Label2.Caption:='剩余牌数:'+inttostr(High(BackCard)+1);
          end
          else
          begin
              if HandCard<>nil then
              begin
              Myimage[HandCard[0]].Top :=DownCard_Top;
              MYimage[HandCard[0]].Left:=Card2_Left;
              MYimage[HandCard[0]].Visible :=true;
              Myimage[HandCard[0]].Enabled := True;
              Not2Max:=1;
              Setlength(NotCard2,Not2Max);
              NotCard2[0]:=HandCard[0];
              MyCard[HandCard[0]].Top :=DownCard_Top;
              MyCard[HandCard[0]].Left :=Card2_Left;
              delHandCard(HandCard[0]);
              Label2.Caption:='剩余牌数:0';
              Label1.Caption:='剩余牌数:'+inttostr(High(HandCard)+1);

              end;
          end;

        end;
        if NotCard3=nil then
        begin
           if BackCard<>nil then
           begin
              MyImage[BackCard[0]].top:=DownCard_Top;
              MyImage[BackCard[0]].Left:=Card3_Left;
              Myimage[BackCard[0]].Visible:=True;
              MYimage[BackCard[0]].Enabled :=True;
              Myimage[BackCard[0]].BringToFront ;
              Not3Max:=1;
              SetLength(NotCard3,Not3Max);
              NotCard3[0]:=BackCard[0];
              MyCard[BackCard[0]].Top:=DownCard_Top;
              MyCard[BackCard[0]].Left:=Card3_Left;
              MoveCard(1,0,0);
              Label2.Caption:='剩余牌数:'+inttostr(High(BackCard)+1);

          end
          else
          begin
              if HandCard<>nil then
              begin
              Myimage[HandCard[0]].Top :=DownCard_Top;
              MYimage[HandCard[0]].Left:=Card3_Left;
              MYimage[HandCard[0]].Visible :=true;
              Myimage[HandCard[0]].Enabled :=True;
              Not3Max:=1;
              SetLength(NotCard3,Not3Max);
              NotCard3[0]:=HandCard[0];
              MyCard[HandCard[0]].Top :=DownCard_Top;
              MyCard[HandCard[0]].Left :=Card3_Left;
              delHandCard(HandCard[0]);
              Label2.Caption:='剩余牌数:0';
              Label1.Caption:='剩余牌数:'+inttostr(High(HandCard)+1);

              end;
          end;

        end;

        if NotCard4=nil then
        begin
           if BackCard<>nil then
           begin
              MyImage[BackCard[0]].top:=DownCard_Top;
              MyImage[BackCard[0]].Left:=Card4_Left;
              Myimage[BackCard[0]].Visible:=True;
              Myimage[BackCard[0]].Enabled:=True;
              Myimage[BackCard[0]].BringToFront ;
              Not4Max:=1;
              SetLength(NotCard4,Not4Max);
              NotCard4[0]:=BackCard[0];
              MyCard[BackCard[0]].Top:=DownCard_Top;
              MyCard[BackCard[0]].Left:=Card4_Left;
              MoveCard(1,0,0);
              Label2.Caption:='剩余牌数:'+inttostr(High(BackCard)+1);

          end
          else
          begin
              if HandCard<>nil then
              begin
              Myimage[HandCard[0]].Top :=DownCard_Top;
              MYimage[HandCard[0]].Left:=Card4_Left;
              MYimage[HandCard[0]].Visible :=true;
              Myimage[HandCard[0]].Enabled :=True;
              Not4Max:=1;
              Setlength(NotCard4,Not4Max);
              NotCard4[0]:=HandCard[0];
              MyCard[HandCard[0]].Top :=DownCard_Top;
              MyCard[HandCard[0]].Left :=Card4_Left;
              delHandCard(HandCard[0]);
              Label2.Caption:='剩余牌数:0';
              Label1.Caption:='剩余牌数:'+inttostr(High(HandCard)+1);

              end;
          end;

        end;

    end
    else
    begin
         if Not More then
         begin
         (Sender as Timage).Top := OldTop;
         (Sender as Timage).Left := OldLeft;
         end
         else
         begin
            for i:=0 to High(Currently.Card)do
            begin
             MyImage[Currently.Card[i]].Top:=MyCard[Currently.Card[i]].Top;
             MyImage[Currently.Card[i]].Left:=MyCard[Currently.Card[i]].Left;
            end;
         end;

    end;

           if (high(OkCard1)=12) and (high(OkCard2)=12) and (high(Okcard3)=12) and (high(OkCard4)=12) then
           Application.MessageBox('恭喜你!!!,成功了!!!'+#13#10+'祝你今天有个好心情','开心一刻',MB_Ok+MB_IconInformation);
end;

procedure TForm1.DelHandCard(CardVar: integer);
var
 i,j:integer;
 MoveIndex:Array of integer;
 Has:Bool;
begin
   Has:=false;
   for i:=0 to High(HandCard) do
   begin
    if HandCard[i]=CardVar then
    Has:=True;
    end;

   if Has then
   begin
   SetLength(MoveIndex,High(HandCard));
   j:=0;
   for i:=0 to High(MoveIndex) do
   begin
      if HandCard[j]=CardVar then
      begin
       j:=j+1;
      end;
      MoveIndex[i]:=HandCard[j];
      inc(j);
   end;
   Setlength(HandCard,High(HandCard));
   for i:=0 to High(MoveIndex) do
   begin
      HandCard[i]:=MoveIndex[i];
   end;
    if (pointer-1)<=0 then
      Pointer:=0
      else
      Pointer:=Pointer-1;
    end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
  if HandCard = nil then
  exit;
  j:=Downcard_Top;
  for i:=0 to High(HandCard) do
  begin
  Myimage[HandCard[i]].Top :=j;
  MYimage[HandCard[i]].Left:=130;
  MYimage[HandCard[i]].Visible :=true;
  Myimage[HandCard[i]].BringToFront;
  J:=J+15;
  end;
end;

function TForm1.CheckGround(Card: Timage): bool;
var
CardCenterX,CardCenterY:integer;
rangCenterX,rangCenterY:integer;
Cx,Cy,rx,ry:integer;

⌨️ 快捷键说明

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