📄 form1.cs
字号:
}
}
private void inite()//初始化
{
for(int i=0;i<15;i++)
for(int j=0;j<15;j++)
{
table[i,j]=1;
}
for(int i=0;i<14;i++)
for(int j=1;j<14;j++)
{
table[i,j]=0;
}
}
private void timer1_Tick(object sender, System.EventArgs e)
{
if (testCanDrop())
dropDown();
else
{
disappear();
block(getRandomBlock());
if(testCanDrop()==false)
{
timer1.Stop();
MessageBox.Show("Cow boy, Game over!try again!");
inite();
Graphics g=CreateGraphics();
g.FillRectangle(new SolidBrush(Color.Blue),10,10,300,300);
g.FillRectangle(new SolidBrush(Color.Black),30,10,260,280);
block(getRandomBlock());
timer1.Start();
}
}
}
private void disappear()//消行
{
int n;
Graphics g=this.CreateGraphics();
int i=13;
while(i>=0)
{
n=0;
for(int j=1;j<14;j++)
{
if(table[i,j]==1)
n++;
else
break;
}
if(n==13)
{
for(int k=i;k>0;k--)
for(int w=1;w<14;w++)
{
if(table[k-1,w]==1)
{
g.FillRectangle(new SolidBrush(Color.Yellow),w*20+10,k*20+10,20,20);
g.DrawRectangle(new Pen(Color.Green,2),w*20+10,k*20+10,20,20);
}
else
g.FillRectangle(new SolidBrush(Color.Black),w*20+10,k*20+10,20,20);
table[k,w]=table[k-1,w];
}
}
else
i--;
}
}
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) ////////////////move
{
int a,b;
if((int)e.KeyCode==37)
{
switch(currentshape)
{
case 1: if(x>=50&&x<=250&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a+1,b-1]==0)
{
paintBlock(1,Color.Black);
x-=20;
paintBlock(1,Color.Yellow);
}
}
break;
case 2: if(x>=50&&x<=230&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a+1,b]==0)
{
paintBlock(2,Color.Black);
x-=20;
paintBlock(2,Color.Yellow);
}
}
break;
case 3: if(x>=50&&x<=210&&y>=10&&y<=270)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0)
{
paintBlock(3,Color.Black);
x-=20;
paintBlock(3,Color.Yellow);
}
}
break;
case 4: if(x>=50&&x<=230&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a+1,b]==0)
{
paintBlock(4,Color.Black);
x-=20;
paintBlock(4,Color.Yellow);
}
}
break;
case 5: if(x>=50&&x<=250&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a-1,b]==0&&table[a+1,b]==0)
{
paintBlock(5,Color.Black);
x-=20;
paintBlock(5,Color.Yellow);
}
}
break;
case 6: if(x>=70&&x<=250&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+1,b-2]==0&&table[a,b-1]==0)
{
paintBlock(6,Color.Black);
x-=20;
paintBlock(6,Color.Yellow);
}
}
break;
case 7: if(x>=50&&x<=250&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a+1,b-1]==0&&table[a+2,b-1]==0)
{
paintBlock(7,Color.Black);
x-=20;
paintBlock(7,Color.Yellow);
}
}
break;
case 8: if(x>=50&&x<=270&&y>=10&&y<=210)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a+1,b-1]==0&&table[a+2,b-1]==0&&table[a+3,b-1]==0)
{
paintBlock(8,Color.Black);
x-=20;
paintBlock(8,Color.Yellow);
}
}
break;
case 9: if(x>=50&&x<=250&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b-1]==0&&table[a+1,b-1]==0&&table[a-1,b]==0)
{
paintBlock(9,Color.Black);
x-=20;
paintBlock(9,Color.Yellow);
}
}
break;
}
}
if((int)e.KeyCode==39)
{
switch(currentshape)
{
case 1:if(x>=30&&x<=230&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+2,b]==0&&table[a+2,b+1]==0)
{
paintBlock(1,Color.Black);
x+=20;
paintBlock(1,Color.Yellow);
}
}
break;
case 2:if(x>=30&&x<=210&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+3]==0&&table[a+1,b+2]==0)
{
paintBlock(2,Color.Black);
x+=20;
paintBlock(2,Color.Yellow);
}
}
break;
case 3:if(x>=30&&x<=190&&y>=10&&y<=270)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+4]==0)
{
paintBlock(3,Color.Black);
x+=20;
paintBlock(3,Color.Yellow);
}
}
break;
case 4:if(x>=30&&x<=210&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+2]==0&&table[a+1,b=3]==0)
{
paintBlock(4,Color.Black);
x+=20;
paintBlock(4,Color.Yellow);
}
}
break;
case 5: if(x>=30&&x<=230&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a-1,b+2]==0&&table[a,b+2]==0&&table[a+1,b+2]==0)
{
paintBlock(5,Color.Black);
x+=20;
paintBlock(5,Color.Yellow);
}
}
break;
case 6: if(x>=50&&x<=230&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+1]==0&&table[a+1,b+2]==0)
{
paintBlock(6,Color.Black);
x+=20;
paintBlock(6,Color.Yellow);
}
}
break;
case 7: if(x>=30&&x<=230&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+1]==0&&table[a+1,b+2]==0&&table[a+2,b+1]==0)
{
paintBlock(7,Color.Black);
x+=20;
paintBlock(7,Color.Yellow);
}
}
break;
case 8: if(x>=30&&x<=250&&y>=10&&y<=210)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+1]==0&&table[a+1,b+1]==0&&table[a+2,b+1]==0&&table[a+3,b+1]==0)
{
paintBlock(8,Color.Black);
x+=20;
paintBlock(8,Color.Yellow);
}
}
break;
case 9: if(x>=30&&x<=230&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a,b+2]==0&&table[a+1,b+1]==0&&table[a-1,b+2]==0)
{
paintBlock(9,Color.Black);
x+=20;
paintBlock(9,Color.Yellow);
}
}
break;
}
}
if((int)e.KeyCode==38)
rotate();
if((int)e.KeyCode==40)
while(testCanDrop())
dropDown();
}
private bool testCanDrop()//测试是否可以下落
{
int a,b;
switch(currentshape)
{
case 1: if(x>=30&&x<=250&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+2,b]==0&&table[a+2,b+1]==0)
return true;
else
return false;
}
else
return false;
case 2:if(x>=30&&x<=230&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+2,b+1]==0&&table[a+1,b]==0&&table[a+1,b+2]==0)
return true;
else
return false;
}
else
return false;
case 3:if(x>=30&&x<=210&&y>=10&&y<=250)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+1,b]==0&&table[a+1,b+1]==0&&table[a+1,b+2]==0&&table[a+1,b+3]==0)
return true;
else
return false;
}
else
return false;
case 4:if(x>=30&&x<=210&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+2,b+1]==0&&table[a+2,b+2]==0)
return true;
else
return false;
}
else
return false;
case 5:if(x>=30&&x<=250&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+1,b]==0&&table[a+2,b+1]==0)
return true;
else
return false;
}
else
return false;
case 6:if(x>=30&&x<=250&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+2,b-1]==0&&table[a+2,b]==0&&table[a+2,b+1]==0)
return true;
else
return false;
}
else
return false;
case 7:if(x>=30&&x<=250&&y>=10&&y<=210)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+3,b]==0&&table[a+2,b+1]==0)
return true;
else
return false;
}
else
return false;
case 8:if(x>=30&&x<=270&&y>=10&&y<=190)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+4,b]==0)
return true;
else
return false;
}
else
return false;
case 9:if(x>=30&&x<=250&&y>=10&&y<=230)
{
a=(y-10)/20;
b=(x-10)/20;
if(table[a+2,b]==0&&table[a+1,b+1]==0)
return true;
else
return false;
}
else
return false;
default:
return false;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -