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

📄 mainform.cs

📁 英国几乎所有的报纸都刊登数独游戏
💻 CS
📖 第 1 页 / 共 2 页
字号:
this.Closing += new System.ComponentModel.CancelEventHandler(this.MainForm_Closing);
this.ResumeLayout(false);

		}
		#endregion

		public static void Main()
		{
			try
			{
				splash sp=new splash();
				Application.Run(sp);
				sp.Dispose();
				Application.Run(new MainForm());
			}
			catch(Exception e)
			{
				MessageBox.Show(e.Message);
			}
		}

		protected override void OnResize(EventArgs e)
		{
			base.OnResize (e);
			if(gridControl!=null)
			{
				gridControl.Location=new Point(8,8);
				gridControl.Size=new Size(ClientSize.Width-16, ClientSize.Height-32);
			}
		}

		private void autoGenerateItem_Click(object sender, System.EventArgs e)
		{	
			gridControl.generatingPuzzle=false;
			doneButton.Visible=false;
			ProblemGenerator problemGenerator=new ProblemGenerator(this);
			if(!problemGenerator.GenerateProblem())
				return;
			gridControl.LoadData(problemGenerator.completeGrid,problemGenerator.problemGrid); 
			changeMenuState(true);
			showsolutionItem.Enabled=true;
			gridControl.Enabled=true;
		}

		private void autoFillItem_Click(object sender, System.EventArgs e)
		{
			for(int row=0;row<Constants.nbOfCells;row++)
			{
				for(int col=0;col<Constants.nbOfCells;col++)
				{
					int Count=this.gridControl.cellGrid[row,col].cellData.candidateNb.Count;
					this.gridControl.cellGrid[row,col].CheckedNbs.Clear();
					for(int i=0;i<Count;i++)
					{
						this.gridControl.cellGrid[row,col].CheckedNbs.Add(
							this.gridControl.cellGrid[row,col].cellData.candidateNb[i]);
					}
					this.gridControl.RedrawCell(this.gridControl.cellGrid[row,col]);
				}
			}
		}

		private void autoUpdateItem_Click(object sender, System.EventArgs e)
		{
			gridControl.autoUpdate=!gridControl.autoUpdate;
			if(gridControl.autoUpdate)
			{
				this.autoUpdateItem.Checked=true;
				this.simultaneousItem.Checked=true;
				this.gridControl.simultaneousCheck=true;			
			}
			else
				this.autoUpdateItem.Checked=false;
		}

		private void removeAllItem_Click(object sender, System.EventArgs e)
		{
			for(int row=0;row<Constants.nbOfCells;row++)
			{
				for(int col=0;col<Constants.nbOfCells;col++)
				{
					this.gridControl.cellGrid[row,col].CheckedNbs.Clear();
					this.gridControl.RedrawCell(this.gridControl.cellGrid[row,col]);
				}
			}
		}

		private void simultaneousItem_Click(object sender, System.EventArgs e)
		{
			this.gridControl.simultaneousCheck=!gridControl.simultaneousCheck;
			if(gridControl.simultaneousCheck)
				simultaneousItem.Checked=true;
			else
				simultaneousItem.Checked=false;
		}

		private void showsolutionItem_Click(object sender, System.EventArgs e)
		{
			for(int row=0;row<Constants.nbOfCells;row++)
			{
				for(int col=0;col<Constants.nbOfCells;col++)
				{
					gridControl.cellGrid[row,col].cellData.problemNb=
						gridControl.cellGrid[row,col].cellData.originalNb;
					gridControl.RedrawCell(gridControl.cellGrid[row,col]);
				}
			}		
		}

		private void clearSolutionItem_Click(object sender, System.EventArgs e)
		{
			for(int row=0;row<Constants.nbOfCells;row++)
			{
				for(int col=0;col<Constants.nbOfCells;col++)
				{
					if(!gridControl.cellGrid[row,col].cellData.readOnly)
					{
						gridControl.cellGrid[row,col].cellData.problemNb=Constants.NoNumber;
						gridControl.cellGrid[row,col].CheckedNbs.Clear();
						this.gridControl.RedrawCell(this.gridControl.cellGrid[row,col]);
					}
				}
			}
			for(int row=0;row<Constants.nbOfCells;row++)
			{
				for(int col=0;col<Constants.nbOfCells;col++)
				{
					gridControl.searchCandidates(row,col);
				}
			}
		}

		private void eraseItem_Click(object sender, System.EventArgs e)
		{
			for(int row=0;row<Constants.nbOfCells;row++)
			{
				for(int col=0;col<Constants.nbOfCells;col++)
				{	
					gridControl.cellGrid[row,col].cellData.problemNb=
						gridControl.cellGrid[row,col].cellData.originalNb=Constants.NoNumber;
					gridControl.cellGrid[row,col].cellData.candidateNb.Clear();
					gridControl.cellGrid[row,col].CheckedNbs.Clear();
					gridControl.Enabled=false;
					this.gridControl.RedrawCell(this.gridControl.cellGrid[row,col]);
				}
			}
			changeMenuState(false);
		}
		private void EndGame(object sender,EventArgs e)
		{
			int row,col;
			if(!gridControl.varify(out  row,out col))
			{
				MessageBox.Show("Wrong solution. Entry at " +row+" ," +col+" needs a check","ERROR");
			}
			else
			{
				MessageBox.Show("Congratulations!" ,"Success");
			}
		}

		private void saveImageItem_Click(object sender, System.EventArgs e)
		{
			saveFileDialog.DefaultExt=".jpeg";
			saveFileDialog.Filter="JPEG Files(*.jpeg)| *.jpeg|Bitmap Files(*.bmp)|*.bmp";
			saveFileDialog.ShowDialog();
			if(saveFileDialog.FileName!="")
				gridControl.bufferBitmap.Save(saveFileDialog.FileName);
		}

		private void saveItem_Click(object sender, System.EventArgs e)
		{
			saveFileDialog.DefaultExt=".sdk";
			saveFileDialog.Filter="Sudoku Files(*.sdk)| *.sdk";
			saveFileDialog.ShowDialog();		
			if(saveFileDialog.FileName!="")
				gridControl.SaveGameToFile(Path.GetFileNameWithoutExtension(saveFileDialog.FileName)+".sdk");
		}

		private void loadItem_Click(object sender, System.EventArgs e)
		{
			OpenFileDialog ofd=new OpenFileDialog();
			ofd.Filter="Sudoku Files(*.sdk)| *.sdk";
			ofd.DefaultExt=".sdk";
			ofd.ShowDialog();
			if(ofd.FileName!="")
				gridControl.LoadGameFromFile(ofd.FileName);
			changeMenuState(true);
		}

		private void exitItem_Click(object sender, System.EventArgs e)
		{
			try
			{
				DialogResult dr=MessageBox.Show("退出","真的要退出吗?",MessageBoxButtons.YesNo);
				if(dr==DialogResult.Yes)
					Application.Exit();
				else 
					e=EventArgs.Empty;
			}
			catch
			{
				MessageBox.Show("Some error has occured to the application"
					+",Retry or close the program and start again","Error");
			}
		}

		private void manuallyGenearteItem_Click(object sender, System.EventArgs e)
		{
			eraseItem.PerformClick();
			gridControl.generatingPuzzle=true;
			MessageBox.Show("Select Problem numbers by clicking, Press DONE when 'Done'  ","Maually generate new problem");
			doneButton.Visible=true;
			gridControl.Enabled=true;			
		    changeMenuState(false);
		}

		private void doneButton_Click(object sender, System.EventArgs e)
		{
            int row,col;
			if(!gridControl.varify(out row,out col))
			{
				MessageBox.Show("Wrong statement. Entry at " +row+" ," +col+" needs a check","ERROR");
				return;
			}
			
			int [,] completeGrid,problemGrid;
			completeGrid=new int [Constants.nbOfCells,Constants.nbOfCells];
			problemGrid=new int [Constants.nbOfCells,Constants.nbOfCells];
			//see if problem is solvable or not
			for(row=0;row<Constants.nbOfCells;row++)
			{
				for(col=0;col<Constants.nbOfCells;col++)
				{
					problemGrid[row,col]=gridControl.cellGrid[row,col].cellData.problemNb;
				}			
			}

			if(!ProblemGenerator.hasSolution(problemGrid,ref completeGrid,true))
			{
				DialogResult dr=MessageBox .Show("This problem is not solvable by the algorithm implemented"+
					"\nDo you still want to play ? Click YES to start playing and NO to reconfigure the problem staement ","Sorry",
					MessageBoxButtons.YesNo);
				if(dr==DialogResult.No)
				{
					completeGrid=problemGrid=null;
					return;
				}
				else
				{
					gridControl.LoadData(completeGrid,problemGrid);					
					changeMenuState(true);
					gridControl.generatingPuzzle=false;	
					doneButton.Visible=false;                    
					showsolutionItem.Enabled=false;
					return;
				}			    
			}

			gridControl.LoadData(completeGrid,problemGrid);
			MessageBox.Show("You can start playing or view the solution","Done");
			changeMenuState(true);
			gridControl.generatingPuzzle=false;	
			doneButton.Visible=false;
		}

		private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
		{
			try
			{
				DialogResult dr=MessageBox.Show("Exit?","Exit?",MessageBoxButtons.YesNo);
				if(dr==DialogResult.Yes)
					Application.Exit();
				else 
					e.Cancel=true;
			}
			catch
			{
				MessageBox.Show("Some error has occured to the application"
					+",Retry or close the program and start again","Error");
			}		
		}

		private void aboutItem_Click(object sender, System.EventArgs e)
		{
			String s=" \t\t? Abhishek Agrawal "
				+"\n\tB.Tech IIIyr Computer Science And Technology"
				+"\n\t    Indian Institute of Technology , Roorkee ";
			String s1="For any queries or feedback please mail me at amiable.abhi@rediffmail.com";
			MessageBox.Show(s+"\n\n"+s1,"About" );      
		}

		private void helpItem_Click(object sender, System.EventArgs e)
		{
		
		}

		private void showNextItem_Click(object sender, System.EventArgs e)
		{
			gridControl.showNext();
            			
		}

		private void changeMenuState(bool Enable)
		{
			saveItem.Enabled=Enable;
            toolsItem.Enabled=Enable;			
		}

        private void newItem_Click(object sender, EventArgs e)
        {
        
        }

	}
}

⌨️ 快捷键说明

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