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

📄 llkform.cs

📁 这个源码是我从别的网站下载下来的!我是初学者,希望给我一点源码下载(文件包含连连看,俄罗斯方块,当代罗宾汉,智慧珠,贪吃蛇)
💻 CS
📖 第 1 页 / 共 4 页
字号:
				panelDif1.Controls[0].Dispose() ;
			}			
			DeleData = new int[9,14];			
			//开始游戏
			menuOptConfig.Enabled = false ;
			GameShow(panelDif1);
		}

		private void menuGameDif2_Click(object sender, System.EventArgs e)
		{
			//配置中级参数
			Status					= 1 ;
			MouseNum				= 0 ;
			NumDif					= 2 ;
			if(NumLev				== 0)		{	NumLev		= 1   ; }
			if(NumHint				== 0)		{	NumHint		= 6   ; }
			if(NumRedo				== 0)		{	NumRedo		= 4   ; }
			if(NumTimeAdd			== 0)		{	NumTimeAdd	= 2   ; }
			if(NumTimeMax			== 0)		{	NumTimeMax	= 180 ; }
			NumTime					= NumTimeMax ;	
			NumPlanDec				= panelSchedule.Width/NumTimeMax ;		
			labelAchievement.Text	= "0" ;
			labelSchedule.Left 		= panelSchedule.Width ;
			panelPause.Visible = false ;
			panelDif1.Visible = false ;
			panelDif3.Visible = false ;	
			StatusShow() ;	
			//对象初始化
			int PicNum	= panelDif2.Controls.Count ;
			for(int i=0;i<PicNum;i++)
			{
				panelDif2.Controls[0].Dispose() ;
			}
			DeleData = new int[10,16];
			//开始游戏	
			menuOptConfig.Enabled = false ;
			GameShow(panelDif2);
		}

		private void menuGameDif3_Click(object sender, System.EventArgs e)
		{
			//配置高级参数
			Status					= 1 ;
			MouseNum				= 0 ;
			NumDif					= 3 ;
			if(NumLev				== 0)		{	NumLev		= 1   ; }
			if(NumHint				== 0)		{	NumHint		= 7   ; }
			if(NumRedo				== 0)		{	NumRedo		= 5   ; }
			if(NumTimeAdd			== 0)		{	NumTimeAdd	= 3   ; }
			if(NumTimeMax			== 0)		{	NumTimeMax	= 240 ; }
			NumTime					= NumTimeMax ;	
			NumPlanDec				= panelSchedule.Width/NumTimeMax ;	
			labelAchievement.Text	= "0" ;
			labelSchedule.Left 		= panelSchedule.Width ;
			panelPause.Visible = false ;
			panelDif1.Visible = false ;
			panelDif2.Visible = false ;	
			StatusShow() ;
			//对象初始化
			int PicNum	= panelDif3.Controls.Count ;
			for(int i=0;i<PicNum;i++)
			{
				panelDif3.Controls[0].Dispose() ;
			}
			DeleData = new int[11,18];
			//开始游戏	
			menuOptConfig.Enabled = false ;
			GameShow(panelDif3);
		}

		private void menuGameStop_Click(object sender, System.EventArgs e)
		{
			//停止游戏
			GameTime.Stop();
			menuOptConfig.Enabled = true ;
			panelDif1.Visible = false ;
			panelDif2.Visible = false ;
			panelDif3.Visible = false ;
			panelPause.Visible = true ;
			MouseNum			= 0 ;
			Status				= 0 ;
		}
		private void menuGameExit_Click(object sender, System.EventArgs e)
		{
			//退出操作
			this.Close() ;
		}

		private void menuOptHint_Click(object sender, System.EventArgs e)
		{
			//提示操作
			if ( NumHint > 0)
			{
				NumHint--;
				Panel PanelTmp = panelDif1 ;
				switch (NumDif)
				{
					case 1 :			
						PanelTmp = panelDif1 ;
						break;
					case 2 :			
						PanelTmp = panelDif2 ;
						break;
					case 3 :			
						PanelTmp = panelDif3 ;
						break;	
				}
				int TmpCount = PanelTmp.Controls.Count ;
				int result = 0 ;
				for(int i=0;i<TmpCount-1;i++)
					for(int j=i+1;j<TmpCount;j++)
					{
						if(Connexity((PictureBox)PanelTmp.Controls[i],(PictureBox)PanelTmp.Controls[j]))
						{							
							//提示可连图片
							PathShow((PictureBox)PanelTmp.Controls[i],(PictureBox)PanelTmp.Controls[j]) ;
							//直接删除可连图片
							//PicDelete((PictureBox)PanelTmp.Controls[i],(PictureBox)PanelTmp.Controls[j]) ;
							i = TmpCount ;
							j = TmpCount ;
							result = 1 ;
						}
					}	
				if(result == 0)
				{	
					NumRedo++;
					menuOptRedo_Click(sender,e);	
				}
			}
			StatusShow() ;
		}

		private void menuOptRedo_Click(object sender, System.EventArgs e)
		{
			//洗牌操作
			if (NumRedo > 0)
			{
				NumRedo--;
				Panel PanelTmp = panelDif1 ;
				switch (NumDif)
				{
					case 1 :			
						PanelTmp = panelDif1 ;
						break;
					case 2 :			
						PanelTmp = panelDif2 ;
						break;
					case 3 :			
						PanelTmp = panelDif3 ;
						break;	
				}
				int TmpCount = PanelTmp.Controls.Count ;
				int result = 0 ;
				for(int i=0;i<TmpCount;i++)
				{
					Random NumRand	= new Random();
					int NumTmp		= NumRand.Next(0,TmpCount-1) ;
					int left		= PanelTmp.Controls[i].Left ;
					int top			= PanelTmp.Controls[i].Top ;
					PanelTmp.Controls[i].Left	= PanelTmp.Controls[NumTmp].Left ;
					PanelTmp.Controls[i].Top	= PanelTmp.Controls[NumTmp].Top ;
					PanelTmp.Controls[NumTmp].Left	= left ;
					PanelTmp.Controls[NumTmp].Top	= top ;
				}
				//验证正连性
				for(int i=0;i<TmpCount-1;i++)
					for(int j=i+1;j<TmpCount;j++)
					{
						if(Connexity((PictureBox)PanelTmp.Controls[i],(PictureBox)PanelTmp.Controls[j]))
						{							
							i = TmpCount ;
							j = TmpCount ;
							result = 1 ;
						}
					}
				if(result == 0)
				{	menuOptRedo_Click(sender,e);	}
			}
			StatusShow() ;
		}

		private void menuOptPause_Click(object sender, System.EventArgs e)
		{
			//暂停操作
			if ( Status == 1)
			{
				Status = 0 ;
				GameTime.Stop() ;
				menuOptHint.Enabled = false ;
				menuOptRedo.Enabled = false;
				if (NumDif == 1 )	{	panelDif1.Visible = false ;	}
				if (NumDif == 2 )	{	panelDif2.Visible = false ;	}
				if (NumDif == 3 )	{	panelDif3.Visible = false ;	}
				panelPause.Visible = true ;
				panelPause.Focus() ;
			}
			else
			{
				Status = 1 ;
				GameTime.Start();
				menuOptHint.Enabled = true ;
				menuOptRedo.Enabled = true ;
				panelPause.Visible =  false;
				if (NumDif == 1 )	{	panelDif1.Visible = true ;	}
				if (NumDif == 2 )	{	panelDif2.Visible = true ;	}
				if (NumDif == 3 )	{	panelDif3.Visible = true ;	}
			}
		}

		private void menuOptConfig_Click(object sender, System.EventArgs e)
		{
			//配置初始参数信息
			LLKConfig LLKCF = new LLKConfig() ;
			LLKCF.Show() ;
		}
		
		private void GameTime_Tick(object sender, System.EventArgs e)
		{
			//记时操作
			NumTime-- ;
			if (NumTime == 0)
			{	//时间已用完,游戏结束
				GameTime.Stop();
				MessageBox.Show("时间已到,Game Over!");
				switch (NumDif)
				{
					case 1 :			
						menuGameDif1_Click(sender,e);
						break;
					case 2 :			
						menuGameDif2_Click(sender,e);
						break;
					case 3 :			
						menuGameDif3_Click(sender,e);
						break;
				}		
			}
			else
			{					
				labelSchedule.Left 		= (int)(NumTime * NumPlanDec);
				labelSchedule.Width		= panelSchedule.Width - labelSchedule.Left;
			}			
		}
		private void StatusShow()
		{
			//显示游戏状态信息			
			switch (NumDif)
			{
				case 1 :			
					labelDif.Text			= "难度:初级" ;
					break;
				case 2 :			
					labelDif.Text			= "难度:中级" ;
					break;
				case 3 :			
					labelDif.Text			= "难度:高级" ;
					break;	
			}
			switch (NumLev)
			{
				case 1 :			
					labelMode.Text			= "方式:不变" ;
					break;
				case 2 :			
					labelMode.Text			= "难度:向下" ;
					break;
				case 3 :			
					labelMode.Text			= "难度:向上" ;
					break;	
				case 4 :			
					labelMode.Text			= "方式:向左" ;
					break;
				case 5 :			
					labelMode.Text			= "难度:向右" ;
					break;
				case 6 :			
					labelMode.Text			= "难度:左右" ;
					break;	
				case 7 :			
					labelMode.Text			= "难度:上下" ;					
					break;
				case 8 :			
					labelMode.Text			= "难度:左右集中" ;
					break;	
				case 9 :			
					labelMode.Text			= "难度:上下集中" ;
					break;
			}
			labelLev.Text			= "级别:" + NumLev ;			
			labelHint.Text			= "提示:" + NumHint ;
			labelRedo.Text			= "刷新:" + NumRedo ;
		}
		private void GameShow(Panel faceplate)
		{
			//显示游戏面板
			faceplate.Visible = true ;
			int PanelWidth	= faceplate.Width ;
			int PanelHeight	= faceplate.Height ;
			NumWidth	= PanelWidth/40 - 1 ;
			NumHeight	= PanelHeight/40 - 1;
			int NumPic		= NumHeight*NumWidth/4 ;
			//初始空闲空间
			for(int i=0;i<NumHeight+2;i++)
				for(int j=0;j<NumWidth+2;j++)
				{
					DeleData[i,j] = 0 ;
					if((i == 0)||(i == NumHeight+1) )		{	DeleData[i,j] = 1 ; }
					if((j == 0)||(j == NumWidth+1) )		{	DeleData[i,j] = 1 ; }
				}
			//生成所需坐标组
			GridData = new DataTable("Grid") ;
			GridData.Columns.Add("X", typeof(Int32));
			GridData.Columns.Add("Y", typeof(Int32));
			for(int j=0;j<NumHeight;j++)
				for (int i=0;i<NumWidth;i++)
				{	
					DataRow workRow = GridData.NewRow();
					workRow["X"]			= i*40 + 20 ;
					workRow["Y"]			= j*40 + 20 ;
					GridData.Rows.Add(workRow);
				}
			Random NumRand = new Random();
			for(int i=1;i<= NumPic;i++)
			{	//循环生成图片对象
				string imagesfile	= @"images\LLK\"+i.ToString()+".bmp";
				for(int j=1;j<=4;j++)
				{
					PictureBox MyPic	= new PictureBox() ;
					Bitmap MyImage		= new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase+imagesfile);
					MyPic.Name			= "Pic_"+i.ToString()+"_"+j.ToString() ;
					MyPic.Parent		= faceplate ;
					MyPic.SizeMode		= PictureBoxSizeMode.StretchImage ;
					MyPic.ClientSize	= new Size(40, 40);
					int NumTmp			= NumRand.Next(0,GridData.Rows.Count - 1) ;					
					MyPic.Left			= (int)GridData.Rows[NumTmp]["X"] ;
					MyPic.Top			= (int)GridData.Rows[NumTmp]["Y"] ;
					MyPic.Image			= (Image) MyImage ;					
					MyPic.Visible		= true;
					MyPic.Click		   += new System.EventHandler(this.MyPic_Click);
					GridData.Rows[NumTmp].Delete() ;
				}				
			}			
			GameTime.Start();
		}

		private void MyPic_Click(object sender, System.EventArgs e)
		{			
			PictureBox MyPic = (PictureBox)sender ;	
			MyPic.BorderStyle	= BorderStyle.Fixed3D ;
			if(MouseNum == 0)
			{
				//点选第一张图片
				MouseNum	= 1;				
				OldSender	= MyPic ;
			}
			else
			{
				//点选第二张图片
				MouseNum	= 0;
				if( Connexity(OldSender,MyPic) )
				{	//图片可连
					//销毁这两个对类
					PicDelete(OldSender,MyPic) ;
				}
				else
				{
					//图片不可连
					MyPic.BorderStyle	= BorderStyle.None ;
					OldSender.BorderStyle	= BorderStyle.None ;
				}							
			}
		}

		private bool Connexity(PictureBox Pic1,PictureBox Pic2)
		{
			//对图片对象进行可连性判断
			//初始变量信息
			int Pic1LeftNum		= (Pic1.Left-20)/40+1 ;
			int Pic1TopNum		= (Pic1.Top-20)/40+1 ;
			int Pic2LeftNum		= (Pic2.Left-20)/40+1 ;
			int Pic2TopNum		= (Pic2.Top-20)/40+1 ;
			int add				= 0 ;
			int Pic1Status		= 0 ;
			int Pic2Status		= 0 ;
			int LineStatus		= 0 ;
			int i				= 0 ;
			//记录路由信息
			Path	  = new int[4,4];
			PathCount = 4 ;
			Path[0,0] = Pic1.Left + 20 ;
			Path[0,1] = Pic1.Top  + 20 ;				
			//0.判断图片类型是否一样			
			if((Pic1.Name == Pic2.Name)||(Pic1.Name.Substring(0,6) != Pic2.Name.Substring(0,6)))
			{
				//图片类型不一样
				Pic1.BorderStyle	= BorderStyle.None ;
				Pic2.BorderStyle	= BorderStyle.None ;
				return false ;
			}
			//1.判断是否相邻
			if(Pic1LeftNum == Pic2LeftNum)
			{
				if((Pic1TopNum-1 == Pic2TopNum)||(Pic2TopNum-1 == Pic1TopNum))
				{
					Path[1,0] = Pic1.Left + 20 ;
					Path[1,1] = Pic1.Top  + 20 ;
					Path[2,0] = Pic2.Left + 20 ;
					Path[2,1] = Pic2.Top  + 20 ;
					Path[3,0] = Pic2.Left + 20 ;
					Path[3,1] = Pic2.Top  + 20 ;
					return true ;
				}
			}
			if(Pic1TopNum == Pic2TopNum)
			{
				if((Pic1LeftNum-1 == Pic2LeftNum)||(Pic2LeftNum-1 == Pic1LeftNum))
				{
					Path[1,0] = Pic1.Left + 20 ;
					Path[1,1] = Pic1.Top  + 20 ;
					Path[2,0] = Pic2.Left + 20 ;
					Path[2,1] = Pic2.Top  + 20 ;
					Path[3,0] = Pic2.Left + 20 ;
					Path[3,1] = Pic2.Top  + 20 ;
					return true ;
				}
			}
			//2.水平扫描			
			for(int col=0;col<NumWidth+2;col++)
			{	
				LineStatus	= 0 ;
				Pic1Status	= 0 ;
				Pic2Status	= 0 ;
				//2.1检测扫描线的可连性
				if(Pic1LeftNum == col)
				{	//扫描线与Pic1在同一列					
					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-1))
							{
								//扫描线可用
								LineStatus	= 1 ;
							}
						}
						if(Pic1TopNum < Pic2TopNum)
						{	//Pic1在Pic2上方
							add = 0 ;
							for(i=Pic1TopNum+1;i<Pic2TopNum;i++)
							{
								add = add + DeleData[i,col] ;
							}
							if(add == (Pic2TopNum-Pic1TopNum-1))
							{
								//扫描线可用
								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))
							{
								//扫描线可用
								LineStatus	= 1 ;
							}
						}
						if(Pic1TopNum < Pic2TopNum)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -