📄 elsform.cs
字号:
if(Free[Y/PBox[0].Height-1,X/PBox[0].Width+1] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-1,X/PBox[0].Width+2] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left + PBox[0].Width ;
PBox[1].Top = PBox[0].Top ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top - PBox[0].Height ;
PBox[3].Left = PBox[2].Left + PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
}
}
break;
case 4 :
//向左
if((X <= (PicBox.Width - 2*PBox[0].Width))&&(Y <= (PicBox.Height - 3*PBox[0].Height)))
{
accept = true ;
if(Free[Y/PBox[0].Height+1,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+1,X/PBox[0].Width+1] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+2,X/PBox[0].Width+1] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left;
PBox[1].Top = PBox[0].Top + PBox[0].Height ;
PBox[2].Left = PBox[1].Left + PBox[0].Width;
PBox[2].Top = PBox[1].Top ;
PBox[3].Left = PBox[2].Left ;
PBox[3].Top = PBox[2].Top + PBox[0].Height ;
}
}
break;
}
PBox[0].Visible = true ;
PBox[1].Visible = true ;
PBox[2].Visible = true ;
PBox[3].Visible = true ;
break;
case 5 :
//左L
switch (POrientation)
{
case 0 :
//初始
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left ;
PBox[1].Top = PBox[0].Top + PBox[0].Height ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top + PBox[0].Height ;
PBox[3].Left = PBox[2].Left + PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
break;
case 1 :
//向上
if((X <= (PicBox.Width - 2*PBox[0].Width))&&(Y <= (PicBox.Height - 3*PBox[0].Height)))
{
accept = true ;
if(Free[Y/PBox[0].Height+1,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+2,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+2,X/PBox[0].Width+1] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left ;
PBox[1].Top = PBox[0].Top + PBox[0].Height ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top + PBox[0].Height ;
PBox[3].Left = PBox[2].Left + PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
}
}
break;
case 2 :
//向右
if((X >= 2*PBox[0].Width)&&(Y <= (PicBox.Height - 2*PBox[0].Height)))
{
accept = true ;
if(Free[Y/PBox[0].Height,X/PBox[0].Width-1] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height,X/PBox[0].Width-2] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+1,X/PBox[0].Width-2] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left - PBox[0].Width;
PBox[1].Top = PBox[0].Top ;
PBox[2].Left = PBox[1].Left - PBox[0].Width;
PBox[2].Top = PBox[1].Top ;
PBox[3].Left = PBox[2].Left ;
PBox[3].Top = PBox[2].Top + PBox[0].Height;
}
}
break;
case 3 :
//向下
if((X >= PBox[0].Width)&&(Y >= 2*PBox[0].Height))
{
accept = true ;
if(Free[Y/PBox[0].Height-1,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-2,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-2,X/PBox[0].Width-1] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left ;
PBox[1].Top = PBox[0].Top - PBox[0].Height ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top - PBox[0].Height ;
PBox[3].Left = PBox[2].Left - PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
}
}
break;
case 4 :
//向左
if((X <= (PicBox.Width - 3*PBox[0].Width))&&(Y >= PBox[0].Height))
{
accept = true ;
if(Free[Y/PBox[0].Height,X/PBox[0].Width+1] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height,X/PBox[0].Width+2] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-1,X/PBox[0].Width+2] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left + PBox[0].Width;
PBox[1].Top = PBox[0].Top ;
PBox[2].Left = PBox[1].Left + PBox[0].Width;
PBox[2].Top = PBox[1].Top ;
PBox[3].Left = PBox[2].Left ;
PBox[3].Top = PBox[2].Top - PBox[0].Height;
}
}
break;
}
PBox[0].Visible = true ;
PBox[1].Visible = true ;
PBox[2].Visible = true ;
PBox[3].Visible = true ;
break;
case 6 :
//右L
switch (POrientation)
{
case 0 :
//初始
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left ;
PBox[1].Top = PBox[0].Top + PBox[0].Height ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top + PBox[0].Height ;
PBox[3].Left = PBox[2].Left - PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
break;
case 1 :
//向上
if((X >= PBox[0].Width)&&(Y <= (PicBox.Height - 3*PBox[0].Height)))
{
accept = true ;
if(Free[Y/PBox[0].Height+1,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+2,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+2,X/PBox[0].Width-1] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left ;
PBox[1].Top = PBox[0].Top + PBox[0].Height ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top + PBox[0].Height ;
PBox[3].Left = PBox[2].Left - PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
}
}
break;
case 2 :
//向右
if((X >= 2*PBox[0].Width)&&(Y >= PBox[0].Height))
{
accept = true ;
if(Free[Y/PBox[0].Height,X/PBox[0].Width-1] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height,X/PBox[0].Width-2] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-1,X/PBox[0].Width-2] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left - PBox[0].Width;
PBox[1].Top = PBox[0].Top ;
PBox[2].Left = PBox[1].Left - PBox[0].Width;
PBox[2].Top = PBox[1].Top ;
PBox[3].Left = PBox[2].Left ;
PBox[3].Top = PBox[2].Top - PBox[0].Height;
}
}
break;
case 3 :
//向下
if((X >= PBox[0].Width)&&(Y <= (PicBox.Width - 2*PBox[0].Height)))
{
accept = true ;
if(Free[Y/PBox[0].Height-1,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-2,X/PBox[0].Width] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height-2,X/PBox[0].Width+1] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left ;
PBox[1].Top = PBox[0].Top - PBox[0].Height ;
PBox[2].Left = PBox[1].Left;
PBox[2].Top = PBox[1].Top - PBox[0].Height ;
PBox[3].Left = PBox[2].Left + PBox[0].Width ;
PBox[3].Top = PBox[2].Top;
}
}
break;
case 4 :
//向左
if((X <= (PicBox.Width - 3*PBox[0].Width))&&(Y <= (PicBox.Height - 2*PBox[0].Height)))
{
accept = true ;
if(Free[Y/PBox[0].Height,X/PBox[0].Width+1] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height,X/PBox[0].Width+2] == 1) { accept = false ; }
if(Free[Y/PBox[0].Height+1,X/PBox[0].Width+2] == 1) { accept = false ; }
if(accept)
{
PBox[0].Left = X;
PBox[0].Top = Y;
PBox[1].Left = PBox[0].Left + PBox[0].Width;
PBox[1].Top = PBox[0].Top ;
PBox[2].Left = PBox[1].Left + PBox[0].Width;
PBox[2].Top = PBox[1].Top ;
PBox[3].Left = PBox[2].Left ;
PBox[3].Top = PBox[2].Top + PBox[0].Height;
}
}
break;
}
PBox[0].Visible = true ;
PBox[1].Visible = true ;
PBox[2].Visible = true ;
PBox[3].Visible = true ;
break;
}
}
private void CreatePic()
{
//在PicNext上生成一个游戏对象
int i;
PicID++;
Random NumRand = new Random();
NextType = NumRand.Next(1,6) ;
NextPic = new PictureBox[4];
for(i=0;i<4;i++)
{
//生成四个Pic成为一个对象
PictureBox MyPic = new PictureBox() ;
MyPic.Name = "Pic_"+PicID.ToString()+"_"+i.ToString();
MyPic.Parent = PicNext ;
MyPic.SizeMode = PictureBoxSizeMode.StretchImage ;
MyPic.ClientSize = new Size(25, 25);
MyPic.BackColor = System.Drawing.Color.Lime ;
MyPic.BorderStyle = BorderStyle.None ;
MyPic.Paint += new System.Windows.Forms.PaintEventHandler(this.MyPic_Paint);
MyPic.Visible = false;
MyPic.Left = 0;
MyPic.Top = 0;
NextPic[i] = MyPic ;
}
PicShow(30,10,NextType,0,NextPic);
}
private void TransferPic()
{
bool accept = false;
//将NextPic上的生成的对象,转到PicBox上
CurrentType = NextType ;
CurrentPic = NextPic ;
CurrentPic[0].Parent = PicBox ;
CurrentPic[1].Parent = PicBox ;
CurrentPic[2].Parent = PicBox ;
CurrentPic[3].Parent = PicBox ;
PicShow(125,0,CurrentType,0,CurrentPic);
//判断游戏终止条件
if(Free[CurrentPic[0].Top/CurrentPic[0].Height,CurrentPic[0].Left/CurrentPic[0].Width] == 1) { accept = true ; }
if(Free[CurrentPic[1].Top/CurrentPic[1].Height,CurrentPic[1].Left/CurrentPic[1].Width] == 1) { accept = true ; }
if(Free[CurrentPic[2].Top/CurrentPic[2].Height,CurrentPic[2].Left/CurrentPic[2].Width] == 1) { accept = true ; }
if(Free[CurrentPic[3].Top/CurrentPic[3].Height,CurrentPic[3].Left/CurrentPic[3].Width] == 1) { accept = true ; }
if(accept)
{
GameTime.Stop();
Status = 0 ;
MessageBox.Show("Game Over !");
}
//设置初始方向
switch (CurrentType)
{
case 1 :
PicOrientation = 1 ;
break;
case 2 :
PicOrientation = 1 ;
break;
case 3 :
PicOrientation = 2 ;
break;
case 4 :
PicOrientation = 4 ;
break;
case 5 :
PicOrientation = 1 ;
break;
case 6 :
PicOrientation = 1 ;
break;
}
}
private void DeleRow()
{
int i,j,k,count,X,Y ;
bool accept = false ;
for(i=0;i<20;i++)
{
accept = true ;
for(j=0;j<10;j++)
{
if(Free[i,j] == 0) { accept = false ; }
}
if(accept)
{
//奖励积分
Success = int.Parse(labelSuccess.Text) + 10;
labelSuccess.Text = Success.ToString() ;
//删除对象
for(k=0;k<PicBox.Controls.Count;k++)
{
Y = PicBox.Controls[k].Top ;
if( Y == i*PicBox.Controls[k].Height )
{
X = PicBox.Controls[k].Left;
X = X/PicBox.Controls[k].Width ;
Y = Y/PicBox.Controls[k].Height ;
Free[Y,X] = 0;
PicBox.Controls[k].Dispose();
k = 0 ;
}
}
//上方控件下移
count = PicBox.Controls.Count ;
for(k=0;k<count;k++)
{
if(PicBox.Controls[k].Top < i*PicBox.Controls[k].Height )
{
X = PicBox.Controls[k].Left;
X = X/PicBox.Controls[k].Width ;
Y = PicBox.Controls[k].Top ;
Y = Y/PicBox.Controls[k].Height ;
Free[Y,X]-- ;
PicBox.Controls[k].Top = PicBox.Controls[k].Top + PicBox.Controls[k].Height ;
Y = PicBox.Controls[k].Top ;
Y = Y/PicBox.Controls[k].Height ;
Free[Y,X]++ ;
}
}
}
}
}
private void MyPic_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
//将Target对象外观改为圆形
GraphicsPath gp = new GraphicsPath();
gp.AddEllipse(0, 0, 25, 25);
Region r = new Region(gp);
PictureBox TmpSender = (PictureBox)sender ;
TmpSender.Region = r;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -