📄 pukegamewin.pas
字号:
Temp1,Temp2:String;
Ok:Boolean;
OldMax,i,j,k,m:integer;
begin
//覆盖范围检验
Result:=False;
Ok:=False;
cy:=96 div 2;
cx:=71 div 2;
ry:=780 div 2;
rx:=391 div 2;
CardCenterY:=cy+Card.Top;
CardCenterX:=cx+Card.Left;
rangCenterY:=ry+DownCard_Top;
RangCenterX:=rx+Card1_Left;
// showmessage('当上一行空时检查登录点:'+MyCard[card.Tag].CardName+','+MyCard[8].CardName);
Temp1:=MyCard[Card.Tag].CardName;
Delete(temp1,1,1);
Temp2:=MyCard[8].CardName;
Delete(Temp2,1,1);
if (Abs(Card.Top-UpCard_Top)<CardHeight) and (abs(Card.Left-Card1_Left)<591) then
begin //摆放好的牌范围
if Abs(Card.Left-UPCard_Left1)<CardWidth then
begin //-
// showmessage('上面一列');
if Ok1Max=0 then
begin //--
if Temp1=Temp2 then
begin //---
if not more then
begin
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left := UPCard_Left1;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card.Left;
Ok1Max:=Ok1Max+1;
SetLength(OkCard1,Ok1Max);
OkCard1[0]:=Card.Tag;
Result:=True;
end;
end;//---
end //--
else //--
begin //--
if CompareCard(Mycard[OkCard1[Ok1Max-1]].CardName ,MyCard[Card.Tag].CardName,1) then
begin //----
Card.Top:=UpCard_Top;
Card.Left := Card1_Left;
MyCard[Card.Tag].Top:=UpCard_Top;
MyCard[Card.Tag].Left:=Card1_Left;
Ok1Max:=Ok1Max+1;
SetLength(OkCard1,Ok1Max);
OkCard1[Ok1Max-1]:=Card.Tag;
Result:=True;
exit;
end; //----
end; //--
end; //-
if Not Ok then
begin
if Abs(Card.Left-Card2_Left)<CardWidth then
begin
// showmessage('上面二列');
if Ok2Max=0 then
begin //--
if Temp1=Temp2 then
begin //---
if not more then
begin
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left := UpCard_Left2;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card.Left;
Ok2Max:=Ok2Max+1;
SetLength(OkCard2,Ok2Max);
OkCard2[0]:=Card.Tag;
Result:=True;
end;
end;//---
end //--
else //--
begin //--
if CompareCard(MyCard[OkCard2[Ok2Max-1]].CardName,MyCard[Card.Tag].CardName,1) then
begin //----
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left := Card2_Left;
MyCard[Card.Tag].Top:=UpCard_Top;
MyCard[Card.Tag].Left:=Card2_Left;
Ok2Max:=Ok2Max+1;
SetLength(OkCard2,Ok2Max);
OkCard2[Ok2Max-1]:=Card.Tag;
Result:=True;
end; //----
end; //--
end;
end; //Ok;
if Not Ok then
begin
if Abs(Card.Left-Card3_Left)<CardWidth then
begin
// showmessage('上面三列');
if Ok3Max=0 then
begin //--
if Temp1=Temp2 then
begin //---
if not more then
begin
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left := UpCard_Left3;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card.Left;
Ok3Max:=Ok3Max+1;
SetLength(OkCard3,Ok3Max);
OkCard3[0]:=Card.Tag;
Result:=True;
end;
end;//---
end //--
else //--
begin //--
if CompareCard(MyCard[OkCard3[Ok3Max-1]].CardName,MyCard[Card.Tag].CardName,1) then
begin //----
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left := Card3_Left;
MyCard[Card.Tag].Top:=UpCard_Top;
MyCard[Card.Tag].Left:=Card3_Left;
Ok3Max:=Ok3Max+1;
Setlength(OkCard3,Ok3Max);
OkCard3[Ok3Max-1]:=Card.Tag;
Result:=True;
end; //----
end; //--
end;
end;//Ok;
if Not Ok then
begin
if Abs(Card.Left-Card4_Left)<CardWidth then
begin
// showmessage('上面四列');
if Ok4Max=0 then
begin //--
if Temp1=Temp2 then
begin //---
if not more then
begin
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left :=UpCard_Left4;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card.Left;
Ok4Max:=Ok4Max+1;
SetLength(OkCard4,Ok4Max);
OkCard4[0]:=Card.Tag;
Result:=True;
end;
end;//---
end //--
else //--
begin //--
if CompareCard(MyCard[OkCard4[Ok4Max-1]].CardName,MyCard[Card.Tag].CardName,1) then
begin //----
Ok:=True;
Card.Top:=UpCard_Top;
Card.Left := Card4_Left;
MyCard[Card.Tag].Top:=UpCard_Top;
MyCard[Card.Tag].Left:=Card4_Left;
Ok4Max:=Ok4Max+1;
SetLength(OkCard4,Ok4Max);
OkCard4[Ok4Max-1]:=Card.Tag;
Result:=True;
end; //----
end; //--
end;
end; //Ok;
end;
//下面排列的牌的检验;
if (abs(CardCenterY-RangCenterY)<cy+ry) and (abs(CardCenterX-RangCenterX)<Cx+rx) then
begin
if Not Ok then
begin
if Abs(Card.Left-Card1_Left)<CardWidth then
begin
// showmessage('下面一列');
if Not1Max=0 then
begin
Ok:=true;
if Not More then
begin
Card.Top:=DownCard_Top;
Card.Left := Card1_Left;
MyCard[Card.Tag].Top:=DownCard_Top;
MyCard[Card.Tag].Left:=Card1_Left;
Not1Max:=Not1Max+1;
SetLength(NotCard1,Not1Max);
NotCard1[Not1Max-1]:=Card.Tag;
end
else
begin
Not1Max:=High(Currently.Card)+1;
Setlength(NotCard1,Not1Max);
j:=0;
k:=DownCard_Top;
for i:=0 to High(NotCard1)do
begin
MyImage[Currently.Card[j]].top:=K;
MyImage[Currently.Card[j]].Left :=Card1_Left;
NotCard1[i]:=Currently.Card[j];
MyCard[Currently.Card[j]].Top :=K;// Myimage[Currently.Card[j]].Top;
MyCard[Currently.Card[j]].Left:=Card1_Left;//Myimage[currently.Card[j]].Left;
K:=K+15;
j:=j+1;
end;
end; //end of more=true
Result:=True;
end
else
begin
if CompareCard(MyCard[NotCard1[Not1Max-1]].CardName,MyCard[Card.Tag].CardName,2) then
begin //----
Ok:=True;
if Not More then
begin
Card.Top:=MyCard[NotCard1[Not1Max-1]].Top+15;
Card.Left := Card1_Left;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card1_Left;
Not1Max:=Not1Max+1;
SetLength(NotCard1,Not1Max);
NotCard1[Not1Max-1]:=Card.Tag;
Result:=True;
end
else
begin
OldMax:=Not1Max;
Not1Max:=Not1Max+High(Currently.Card)+1;
Setlength(NotCard1,Not1Max);
j:=0;
k:=MyCard[NotCard1[OldMax-1]].Top+15;
for i:=OldMax to High(NotCard1)do
begin
MyImage[Currently.Card[j]].top:=K;
MyImage[Currently.Card[j]].Left :=Card1_Left;
NotCard1[i]:=Currently.Card[j];
MyCard[Currently.Card[j]].Top :=K;// Myimage[Currently.Card[j]].Top;
MyCard[Currently.Card[j]].Left:=Card1_Left;//Myimage[currently.Card[j]].Left;
k:=K+15;
j:=j+1;
end;
Result:=True;
end; //end of more = true
end; //----
end;
end;
end;//Ok;
if Not Ok then
begin
if abs(Card.Left-Card2_Left)<CardWidth then
begin
// showmessage('下面二列');
if Not2Max=0 then
begin
Ok:=True;
if Not More then
begin
Card.Top:=DownCard_Top;
Card.Left := Card2_Left;
MyCard[Card.Tag].Top:=DownCard_Top;
MyCard[Card.Tag].Left:=Card2_Left;
Not2Max:=Not2Max+1;
SetLength(NotCard2,Not2Max);
NotCard2[Not2Max-1]:=Card.Tag;
Result:=True;
end
else
begin
Not2Max:=High(Currently.Card)+1;
Setlength(NotCard2,Not2Max);
j:=0;
k:=DownCard_Top;
for i:=0 to High(NotCard2)do
begin
MyImage[Currently.Card[j]].top:=K;
MyImage[Currently.Card[j]].Left :=Card2_Left;
NotCard2[i]:=Currently.Card[j];
MyCard[Currently.Card[j]].Top := K;//Myimage[Currently.Card[j]].Top;
MyCard[Currently.Card[j]].Left:=Card2_Left;//Myimage[currently.Card[j]].Left;
K:=K+15;
j:=j+1;
end;
Result:=True;
end;//end of more=true;
end
else
begin
if CompareCard(MyCard[NotCard2[Not2Max-1]].CardName,MyCard[Card.Tag].CardName,2) then
begin //----
Ok:=True;
// showmessage('第二列个数:'+inttostr(High(NotCard2)+1)+' 顶点坐标='+inttostr(MyCard[NotCard2[Not2Max-1]].Top));
if Not More then
begin
Card.Top:=MyCard[NotCard2[Not2Max-1]].Top+15;
Card.Left := Card2_Left;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card2_Left;
Not2Max:=Not2Max+1;
SetLength(NotCard2,Not2Max);
NotCard2[Not2Max-1]:=Card.Tag;
Result:=True;
end
else
begin
OldMax:=Not2Max;
Not2Max:=Not2Max+High(Currently.Card)+1;
Setlength(NotCard2,Not2Max);
j:=0;
k:=MyCard[NotCard2[OldMax-1]].Top+15;
for i:=OldMax to High(NotCard2)do
begin
MyImage[Currently.Card[j]].top:=K;
MyImage[Currently.Card[j]].Left :=Card2_Left;
NotCard2[i]:=Currently.Card[j];
MyCard[Currently.Card[j]].Top :=K; // Myimage[Currently.Card[j]].Top;
MyCard[Currently.Card[j]].Left:=card2_Left; //Myimage[currently.Card[j]].Left;
k:=K+15;
j:=j+1;
end;
Result:=True;
end;//end of more = true
end; //----
end;
end;
end; //Ok;
if Not Ok then
begin
if abs(Card.Left-Card3_Left)<CardWidth then
begin
// showmessage('下面三列');
if Not3Max=0 then
begin
Ok:=True;
if Not More then
begin
Card.Top:=DownCard_Top;
Card.Left := Card3_Left;
MyCard[Card.Tag].Top:=DownCard_Top;
MyCard[Card.Tag].Left:=Card3_Left;
Not3Max:=Not3Max+1;
SetLength(NotCard3,Not3Max);
NotCard3[Not3Max-1]:=Card.Tag;
Result:=True;
end
else
begin
Not3Max:=High(Currently.Card)+1;
Setlength(NotCard3,Not3Max);
j:=0;
k:=DownCard_Top;
for i:=0 to High(NotCard3)do
begin
MyImage[Currently.Card[j]].top:=K;
MyImage[Currently.Card[j]].Left :=Card3_Left;
NotCard3[i]:=Currently.Card[j];
MyCard[Currently.Card[j]].Top := K;//Myimage[Currently.Card[j]].Top;
MyCard[Currently.Card[j]].Left:=Card3_Left;//Myimage[currently.Card[j]].Left;
K:=K+15;
j:=j+1;
end;
Result:=True;
end;//end of More = true;
end
else
begin
if CompareCard(MyCard[NotCard3[Not3Max-1]].CardName,MyCard[Card.Tag].CardName,2) then
begin //----
Ok:=True;
if Not More then
begin
Card.Top:=MyCard[NotCard3[Not3Max-1]].Top+15;
Card.Left := Card3_Left;
MyCard[Card.Tag].Top:=Card.Top;
MyCard[Card.Tag].Left:=Card3_Left;
Not3Max:=Not3Max+1;
SetLength(NotCard3,Not3Max);
NotCard3[Not3Max-1]:=Card.Tag;
Result:=True;
end
else
begin
OldMax:=Not3Max;
Not3Max:=Not3Max+High(Currently.Card)+1;
Setlength(NotCard3,Not3Max);
j:=0;
k:=MyCard[NotCard3[OldMax-1]].Top+15;
for i:=OldMax to High(NotCard3)do
begin
MyImage[Currently.Card[j]].top:=K;
MyImage[Currently.Card[j]].Left :=Card3_Left;
NotCard3[i]:=Currently.Card[j];
MyCard[Currently.Card[j]].Top :=K; // Myimage[Currently.Card[j]].Top;
MyCard[Currently.Card[j]].Left:=card3_Left; //Myimage[currently.Card[j]].Left;
k:=K+15;
j:=j+1;
end;
Result:=True;
end;//end of more
end; //----
end;
end;
end;//Ok;
if Not ok then
begin
if Abs(Card.Left-Card4_Left)<CardWidth then
begin
// showmessage('下面四列');
if Not4Max=0 then
begin
if Not More then
begin
Card.Top:=DownCard_Top;
Card.Left := Card4_Left;
MyCard[Card.Tag].Top:=DownCard_Top;
MyCard[Card.Tag].Left:=Card4_Left;
Not4Max:=Not4Max+1;
SetLength(NotCard4,Not4Max);
NotCard4[Not4Max-1]:=Card.Tag;
Result:=True;
end
else
begin
Not4Max:=High(Currently.Card)+1;
Setlength(NotCard4,Not4Max);
j:=0;
k:=DownCard_Top;
for i:=0 to High(NotCard4)do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -