⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 一个简单的C# 做的俄罗斯方块
💻 CS
📖 第 1 页 / 共 2 页
字号:
			}
		}
		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 + -