📄 llkform.cs
字号:
{ //Pic1在Pic2上方
add = 0 ;
for(i=Pic1TopNum;i<Pic2TopNum;i++)
{
add = add + DeleData[i,col] ;
}
if(add == (Pic2TopNum-Pic1TopNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
}
else
{
if(Pic1TopNum == Pic2TopNum)
{ //Pic1与Pic2在同一行
//扫描线可用
LineStatus = 1 ;
}
if(Pic2LeftNum == col)
{ //扫描线与Pic2在同一列
if(Pic1TopNum > Pic2TopNum)
{ //Pic1在Pic2下方
add = 0 ;
for(i=Pic2TopNum+1;i<=Pic1TopNum;i++)
{
add = add + DeleData[i,col] ;
}
if(add == (Pic1TopNum-Pic2TopNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
if(Pic1TopNum < Pic2TopNum)
{ //Pic1在Pic2上方
add = 0 ;
for(i=Pic1TopNum;i<Pic2TopNum;i++)
{
add = add + DeleData[i,col] ;
}
if(add == (Pic2TopNum-Pic1TopNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
else
{
if(Pic1TopNum > Pic2TopNum)
{ //Pic1在Pic2下方
add = 0 ;
for(i=Pic2TopNum;i<=Pic1TopNum;i++)
{
add = add + DeleData[i,col] ;
}
if(add == (Pic1TopNum-Pic2TopNum+1))
{
//扫描线可用
LineStatus = 1 ;
}
}
if(Pic1TopNum < Pic2TopNum)
{ //Pic1在Pic2上方
add = 0 ;
for(i=Pic1TopNum;i<=Pic2TopNum;i++)
{
add = add + DeleData[i,col] ;
}
if(add == (Pic2TopNum-Pic1TopNum+1))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
}
if(LineStatus == 1)
{
//2.2 检测Pic1的可连性
if(Pic1LeftNum == col)
{ //扫描线与Pic1在同一列
//Pic1与扫描线可连
Pic1Status = 1 ;
Path[1,0] = col*40 ;
Path[1,1] = Pic1.Top + 20;
}
if(Pic1LeftNum > col)
{ //基准线在Pic1的左侧
add = 0 ;
for(i=col;i<Pic1LeftNum;i++)
{
add = add + DeleData[Pic1TopNum,i] ;
}
if(add == (Pic1LeftNum-col))
{
//Pic1与扫描线可连
Pic1Status = 1 ;
Path[1,0] = col*40 ;
Path[1,1] = Pic1.Top + 20;
}
}
if(Pic1LeftNum < col)
{ //基准线在Pic1的右侧
add = 0 ;
for(i=Pic1LeftNum+1;i<=col;i++)
{
add = add + DeleData[Pic1TopNum,i] ;
}
if(add == col - Pic1LeftNum)
{
//Pic1与扫描线可连
Pic1Status = 1 ;
Path[1,0] = col*40 ;
Path[1,1] = Pic1.Top + 20;
}
}
}
if(Pic1Status == 1)
{
//2.3 检测Pic2的可连性
if(Pic2LeftNum == col)
{
//基准线在当前列
//Pic2与扫描线可连
Pic2Status = 1 ;
Path[2,0] = col*40 ;
Path[2,1] = Pic2.Top + 20;
}
if(Pic2LeftNum > col)
{
//基准线在Pic2的左侧
add = 0 ;
for(i=col;i<Pic2LeftNum;i++)
{
add = add + DeleData[Pic2TopNum,i] ;
}
if(add == (Pic2LeftNum-col))
{
//Pic2与扫描线可连
Pic2Status = 1 ;
Path[2,0] = col*40 ;
Path[2,1] = Pic2.Top + 20;
}
}
if(Pic2LeftNum < col)
{
//基准线在Pic2的右侧
add = 0 ;
for(i=Pic2LeftNum+1;i<=col;i++)
{
add = add + DeleData[Pic2TopNum,i] ;
}
if(add == col - Pic2LeftNum)
{
//Pic2与扫描线可连
Pic2Status = 1 ;
Path[2,0] = col*40 ;
Path[2,1] = Pic2.Top + 20;
}
}
}
if(Pic2Status == 1)
{ //Pic1与Pic2可连
if (col == 0)
{
Path[1,0] = 0 ;
Path[1,1] = Pic1.Top + 20;
Path[2,0] = 0;
Path[2,1] = Pic2.Top + 20;
}
if (col == NumWidth+1)
{
Path[1,0] = Pic1.Parent.Width ;
Path[1,1] = Pic1.Top + 20;
Path[2,0] = Pic2.Parent.Width ;
Path[2,1] = Pic2.Top + 20;
}
Path[3,0] = Pic2.Left + 20 ;
Path[3,1] = Pic2.Top + 20 ;
PathCount = 4 ;
return true ;
}
}
//3.垂直扫描
for(int row=0;row<NumHeight+2;row++)
{
LineStatus = 0 ;
Pic1Status = 0 ;
Pic2Status = 0 ;
//3.1检测扫描线的可连性
if(Pic1TopNum == row )
{ //扫描线与Pic1同行
if(Pic1LeftNum == Pic2LeftNum)
{ //Pic1与Pic2同列
//扫描线可用
LineStatus = 1 ;
}
if(Pic2TopNum == row)
{ //扫描线与Pic2在同一行
if(Pic1LeftNum > Pic2LeftNum)
{ //Pic1在Pic2右方
add = 0 ;
for(i=Pic2LeftNum+1;i<Pic1LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic1LeftNum-Pic2LeftNum-1))
{
//扫描线可用
LineStatus = 1 ;
}
}
if(Pic1LeftNum < Pic2LeftNum)
{ //Pic1在Pic2左方
add = 0 ;
for(i=Pic2LeftNum+1;i<Pic1LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic2LeftNum-Pic1LeftNum-1))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
else
{
if(Pic1LeftNum > Pic2LeftNum)
{ //Pic1在Pic2右方
add = 0 ;
for(i=Pic2LeftNum;i<Pic1LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic1LeftNum-Pic2LeftNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
if(Pic1LeftNum < Pic2LeftNum)
{ //Pic1在Pic2左方
add = 0 ;
for(i=Pic2LeftNum;i<Pic1LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic2LeftNum-Pic1LeftNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
}
else
{
if(Pic1LeftNum == Pic2LeftNum)
{ //Pic1与Pic2同列
//扫描线可用
LineStatus = 1 ;
}
if(Pic2TopNum == row)
{ //扫描线与Pic2在同一行
if(Pic1LeftNum > Pic2LeftNum)
{ //Pic1在Pic2右方
add = 0 ;
for(i=Pic2LeftNum+1;i<=Pic1LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic1LeftNum-Pic2LeftNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
if(Pic1LeftNum < Pic2LeftNum)
{ //Pic1在Pic2左方
add = 0 ;
for(i=Pic1LeftNum;i<Pic2LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic2LeftNum-Pic1LeftNum))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
else
{
if(Pic1LeftNum > Pic2LeftNum)
{ //Pic1在Pic2右方
add = 0 ;
for(i=Pic2LeftNum;i<=Pic1LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic1LeftNum-Pic2LeftNum+1))
{
//扫描线可用
LineStatus = 1 ;
}
}
if(Pic1LeftNum < Pic2LeftNum)
{ //Pic1在Pic2左方
add = 0 ;
for(i=Pic1LeftNum;i<=Pic2LeftNum;i++)
{
add = add + DeleData[row,i] ;
}
if(add == (Pic2LeftNum-Pic1LeftNum+1))
{
//扫描线可用
LineStatus = 1 ;
}
}
}
}
//3.2检测Pic1的可连性
if(LineStatus == 1)
{
if(Pic1TopNum == row)
{ //扫描线与Pic1在同一行
//Pic1与扫描线可连
Pic1Status = 1 ;
}
if(Pic1TopNum > row)
{ //扫描线在Pic1上方
add = 0 ;
for(i=row;i<Pic1TopNum;i++)
{
add = add + DeleData[i,Pic1LeftNum] ;
}
if(add == (Pic1TopNum-row))
{
//Pic1与扫描线可连
Pic1Status = 1 ;
Path[1,0] = Pic1.Left + 20 ;
Path[1,1] = row*40 ;
}
}
if(Pic1TopNum < row)
{ //扫描线在Pic1下方
add = 0 ;
for(i=row;i>Pic1TopNum;i--)
{
add = add + DeleData[i,Pic1LeftNum] ;
}
if(add == row - Pic1TopNum)
{
//Pic1与扫描线可连
Pic1Status = 1 ;
Path[1,0] = Pic1.Left + 20 ;
Path[1,1] = row*40;
}
}
}
//3.3检测Pic2的可连性
if(Pic1Status == 1)
{
if(Pic2TopNum == row)
{
//基准线在当前行
//Pic2与扫描线可连
Pic2Status = 1 ;
Path[2,0] = Pic2.Left + 20;
Path[2,1] = row*40;
}
if(Pic2TopNum > row)
{ //基准线在Pic2上方
add = 0 ;
for(i=row;i<Pic2TopNum;i++)
{
add = add + DeleData[i,Pic2LeftNum] ;
}
if(add == (Pic2TopNum-row))
{
//Pic2与扫描线可连
Pic2Status = 1 ;
Path[2,0] = Pic2.Left + 20;
Path[2,1] = row*40;
}
}
if(Pic2TopNum < row)
{ //基准线在Pic2下方
add = 0 ;
for(i=row;i>Pic2TopNum;i--)
{
add = add + DeleData[i,Pic2LeftNum] ;
}
if(add == (row-Pic2TopNum))
{
//Pic1可达
Path[2,0] = Pic2.Left + 20;
Path[2,1] = row*40;
Pic2Status = 1 ;
}
}
}
if(Pic2Status == 1)
{ //Pic1与Pic2可连
if (row == 0)
{
Path[1,0] = Pic1.Left + 20 ;
Path[1,1] = 0;
Path[2,0] = Pic2.Left + 20;
Path[2,1] = 0;
}
if (row == NumHeight+1)
{
Path[1,0] = Pic1.Left + 20 ;
Path[1,1] = Pic1.Parent.Height;
Path[2,0] = Pic2.Left + 20 ;
Path[2,1] = Pic2.Parent.Height;
}
Path[3,0] = Pic2.Left + 20 ;
Path[3,1] = Pic2.Top + 20 ;
PathCount = 4 ;
return true ;
}
}
return false ;
}
private void PicDelete(PictureBox Pic1,PictureBox Pic2)
{
int NumTmp,i,Left1,Left2,Top1,Top2,NumRowLine,NumColLin ;
//两图间画线
PathShow(Pic1,Pic2) ;
//奖励时间与积分
if (NumTime < NumTimeMax )
{
NumTime += NumTimeAdd ;
labelSchedule.Left = (int)(NumTime * NumPlanDec);
labelSchedule.Width = panelSchedule.Width - labelSchedule.Left;
}
NumTmp = int.Parse(labelAchievement.Text.Trim()) ;
NumTmp = NumTmp + 10 ;
labelAchievement.Text = NumTmp.ToString() ;
//销毁图片对象
Panel PanelTmp = (Panel)Pic1.Parent ;
Left1 = Pic1.Left ;
Top1 = Pic1.Top ;
Left2 = Pic2.Left ;
Top2 = Pic2.Top ;
Thread.Sleep(500);
DeleData[(Top1- 20)/40+1,(Left1- 20)/40+1] = 1 ;
DeleData[(Top2- 20)/40+1,(Left2- 20)/40+1] = 1 ;
Pic1.Dispose() ;
Pic2.Dispose() ;
Palette.Clear(Color.Black) ;
//处理剩余图片对象
NumTmp = PanelTmp.Controls.Count ;
NumColLin = PanelTmp.Width/2 ;
NumRowLine = PanelTmp.Height/2 ;
switch (NumLev)
{
case 1 :
//不变化
//保存空闲坐标信息
DeleData[Pic1.Top/40+1,Pic1.Left/40+1] = 1 ;
DeleData[Pic2.Top/40+1,Pic2.Left/40+1] = 1 ;
break;
case 2 :
//向下
for(i=0;i<NumTmp;i++)
{
if((PanelTmp.Controls[i].Left == Left1)&&(PanelTmp.Controls[i].Top <= Top1))
{
//保存空闲坐标信息
DeleData[(PanelTmp.Controls[i].Top-20)/40+1,(PanelTmp.Controls[i].Left-20)/40+1]++ ;
//移位
PanelTmp.Controls[i].Top = PanelTmp.Controls[i].Top + 40 ;
DeleData[(PanelTmp.Controls[i].Top-20)/40+1,(PanelTmp.Controls[i].Left-20)/40+1]-- ;
}
if((PanelTmp.Controls[i].Left == Left2)&&(PanelTmp.Controls[i].Top <= Top2))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -