📄 elsform.cs
字号:
else
{
//终止下移
Free[CurrentPic[0].Top/CurrentPic[0].Height,CurrentPic[0].Left/CurrentPic[0].Width] = 1 ;
Free[CurrentPic[1].Top/CurrentPic[1].Height,CurrentPic[1].Left/CurrentPic[1].Width] = 1 ;
Free[CurrentPic[2].Top/CurrentPic[2].Height,CurrentPic[2].Left/CurrentPic[2].Width] = 1 ;
Free[CurrentPic[3].Top/CurrentPic[3].Height,CurrentPic[3].Left/CurrentPic[3].Width] = 1 ;
//消除满行
DeleRow();
//创建新的对象
TransferPic() ;
CreatePic() ;
}
if(Status == 1)
{ GameTime.Start(); }
}
private void ELSForm_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
int X = CurrentPic[0].Left ;
int Y = CurrentPic[0].Top ;
int i ;
bool accept ;
string S = "" ;
S = e.KeyCode.ToString() ;
if( S == "Up")
{
//对象旋转
PicOrientation++;
if(PicOrientation > 4 ) { PicOrientation = 1 ; }
PicShow(X,Y,CurrentType,PicOrientation,CurrentPic);
}
if( S == "Left")
{
//对象左移
if( X > 0)
{
X = X - CurrentPic[0].Width ;
PicShow(X,Y,CurrentType,PicOrientation,CurrentPic);
}
}
if( S == "Right")
{
//对象右移
if( X < PicBox.Width - CurrentPic[0].Width )
{
X = X + CurrentPic[0].Width ;
PicShow(X,Y,CurrentType,PicOrientation,CurrentPic);
}
}
if( S == "Down")
{
//对象下移
accept = true ;
if(CurrentPic[0].Top >= (PicBox.Height - CurrentPic[0].Height)) { accept = false ; }
if(CurrentPic[1].Top >= (PicBox.Height - CurrentPic[1].Height)) { accept = false ; }
if(CurrentPic[2].Top >= (PicBox.Height - CurrentPic[2].Height)) { accept = false ; }
if(CurrentPic[3].Top >= (PicBox.Height - CurrentPic[3].Height)) { accept = false ; }
if(accept)
{
if(Free[CurrentPic[0].Top/CurrentPic[0].Height+1,CurrentPic[0].Left/CurrentPic[0].Width] == 1) { accept = false ; }
if(Free[CurrentPic[1].Top/CurrentPic[1].Height+1,CurrentPic[1].Left/CurrentPic[1].Width] == 1) { accept = false ; }
if(Free[CurrentPic[2].Top/CurrentPic[2].Height+1,CurrentPic[2].Left/CurrentPic[2].Width] == 1) { accept = false ; }
if(Free[CurrentPic[3].Top/CurrentPic[3].Height+1,CurrentPic[3].Left/CurrentPic[3].Width] == 1) { accept = false ; }
}
if(accept)
{
//下移对象
for(i=0;i<4;i++)
{
CurrentPic[i].Top = CurrentPic[i].Top + CurrentPic[i].Height ;
}
//PicShow(X,Y+CurrentPic[0].Height,CurrentType,PicOrientation,CurrentPic);
}
}
}
private void PicShow(int X,int Y,int PType,int POrientation,PictureBox[] PBox)
{
bool accept = false ;
switch (PType)
{
case 1 :
//方块
switch (POrientation)
{
case 0 :
//初始
case 1 :
//向上
case 2 :
//向右;
case 3 :
//向下
case 4 :
//向左
//边界检测
if(X < 0) { break; }
if(X > (PicBox.Width - 2*PBox[0].Width )) { break; }
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[0].Left;
PBox[2].Top = PBox[0].Top + PBox[0].Height ;
PBox[3].Left = PBox[1].Left;
PBox[3].Top = PBox[2].Top;
break;
}
PBox[0].Visible = true ;
PBox[1].Visible = true ;
PBox[2].Visible = true ;
PBox[3].Visible = true ;
break;
case 2 :
//直条
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[3].Top = PBox[2].Top + PBox[0].Height ;
break;
case 1 :
//向上
//边界检测
if(Y <= (PicBox.Height - 4*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+3,X/PBox[0].Width] == 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[3].Top = PBox[2].Top + PBox[0].Height ;
}
}
break;
case 2 :
//向右
//边界检测
if(X >= 3*PBox[0].Width)
{
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,X/PBox[0].Width-3] == 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[0].Width;
PBox[3].Top = PBox[2].Top ;
}
}
break;
case 3 :
//向下
//边界检测
if(Y >= 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-3,X/PBox[0].Width] == 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[3].Top = PBox[2].Top - PBox[0].Height ;
}
}
break;
case 4 :
//向左
if(X <= (PicBox.Width - 4*PBox[0].Width))
{
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,X/PBox[0].Width+3] == 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[0].Width;
PBox[3].Top = PBox[2].Top;
}
}
break;
}
PBox[0].Visible = true ;
PBox[1].Visible = true ;
PBox[2].Visible = true ;
PBox[3].Visible = true ;
break;
case 3 :
//左Z
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[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 1 :
//向上
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+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 2 :
//向右
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+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;
case 3 :
//向下
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-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 >= 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-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 4 :
//右Z
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[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 1 :
//向上
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+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 2 :
//向右
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-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;
case 3 :
//向下
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 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -