Advertisement
Guest User

Sudoku

a guest
Oct 18th, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace すくド
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.  
  20.         private Label select = new Label();
  21.         private Label[,] arraysH , SqrtArrays;
  22.         private Boolean switcherH = true, switcherL = true, BigSqrtCheck = true;
  23.         private void Form1_Load(object sender, EventArgs e)
  24.         {
  25.             arraysH = new Label[9, 9] {{ label1, label2, label3,label18,label17,label16,label27,label26,label25},
  26.                                        { label7, label6, label5,label15,label14,label13,label24,label23,label22},
  27.                                        { label9, label8, label4,label12,label11,label10,label21,label20,label19},
  28.                                        { label36,label35,label34,label45,label44,label43,label54,label53,label52},
  29.                                        { label33,label32,label31,label42,label41,label40,label51,label50,label49},
  30.                                        { label30,label29,label28,label39,label38,label37,label48,label47,label46},
  31.                                        { label63,label62,label61,label72,label71,label70,label81,label80,label79},
  32.                                        { label60,label59,label58,label69,label68,label67,label78,label77,label76},
  33.                                        { label57,label56,label55,label66,label65,label64,label75,label74,label73}};
  34.             SqrtArrays = new Label[9, 9] {{ label1, label2, label3, label7, label6, label5, label9, label8, label4},
  35.                                           { label8, label7, label6,label15,label14,label13,label12,label11,label10},
  36.                                           {label27,label26,label25,label24,label23,label22,label21,label20,label19},
  37.                                           {label36,label35,label34,label33,label32,label31,label30,label29,label28},
  38.                                           {label45,label44,label43,label42,label41,label40,label39,label38,label37},
  39.                                           {label54,label53,label52,label51,label50,label49,label48,label47,label46},
  40.                                           {label63,label62,label61,label60,label59,label58,label57,label56,label55},
  41.                                           {label72,label71,label70,label69,label68,label67,label66,label65,label64},
  42.                                           {label81,label80,label79,label78,label77,label76,label75,label74,label73}};
  43.  
  44.             Button[] btm = new Button[9] { button1, button2, button3, button4, button5, button6, button7, button8, button9 };
  45.  
  46.             for (int i = 0; i < 9; i++)
  47.             {
  48.                 for (int j = 0; j < 9; j++)
  49.                 {
  50.                     arraysH[i, j].Click += new EventHandler(labelClick);
  51.  
  52.                     arraysH[i, j].Tag = String.Format("{0},{1}", i, j);
  53.  
  54.                 }
  55.             }
  56.  
  57.             for (int i = 0; i < 9; i++)
  58.             {
  59.                 btm[i].Click += new EventHandler(Button_Click);
  60.             }
  61.         }
  62.  
  63.         private void label1_Click(object sender, EventArgs e)
  64.         {
  65.  
  66.  
  67.         }
  68.  
  69.         private void Button_Click(object sender, EventArgs e)
  70.         {
  71.             Button btn = (Button)sender;
  72.             select.Text = btn.Text;
  73.             select.Tag = "used";
  74.         }
  75.         private void labelClick(object sender, EventArgs e)
  76.         {
  77.             Label lbl = (Label)sender;
  78.             select = lbl;
  79.         }
  80.         private void button11_Click(object sender, EventArgs e)
  81.         {
  82.             for (int i = 0; i < 9; i++)
  83.             {//橫向檢查
  84.                 if (switcherH == true)
  85.                 {
  86.                     int[] check = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  87.                     for (int r = 0; r < 9; r++)
  88.                     {
  89.                         int x = Convert.ToInt16(arraysH[i, r].Text);
  90.                         check[x - 1] = 0;
  91.                     }
  92.                     for (int r = 0; r < 9; r++)
  93.                     {
  94.                         if (check[r] != 0)
  95.                         {
  96.                             switcherH = false;
  97.                             arraysH[i, r].BackColor = Color.Green;
  98.                             break;
  99.                         }
  100.                         else
  101.                         {
  102.                             switcherH = true;
  103.                         }
  104.                     }
  105.                 }
  106.             }
  107.             for (int i = 0; i < 9; i++)
  108.             {//直向檢查
  109.                 if (switcherL == true)
  110.                 {
  111.                     int[] check = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  112.                     for (int r = 0; r < 9; r++)
  113.                     {
  114.                         int x = Convert.ToInt16(arraysH[r, i].Text);
  115.                         check[x - 1] = 0;
  116.                     }
  117.                     for (int r = 0; r < 9; r++)
  118.                     {
  119.                         if (check[r] != 0)
  120.                         {
  121.                             switcherL = false;
  122.                             arraysH[r, i].BackColor = Color.Yellow;
  123.                             break;
  124.                         }
  125.                         else
  126.                         {
  127.                             switcherL = true;
  128.                         }
  129.                     }
  130.                 }
  131.             }
  132.             for (int i = 0; i < 9; i++)
  133.             {//大格檢查
  134.                 int[] check = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  135.                 for (int j = 0; j < 9; j++)
  136.                 {
  137.                     int x = Convert.ToInt16(SqrtArrays[i, j].Text);
  138.                     check[x - 1] = 0;
  139.                 }
  140.                 for (int r = 0; r < 9; r++)
  141.                 {
  142.                     if (check[r] != 0)
  143.                     {
  144.                         BigSqrtCheck = false;
  145.                         break;
  146.                     }
  147.                     else
  148.                     {
  149.                         BigSqrtCheck = true;
  150.                     }
  151.                 }
  152.             }
  153.             if (BigSqrtCheck == true && switcherL == true && switcherH == true)
  154.             {
  155.                 for (int i = 0; i < 9; i++)
  156.                 {
  157.                     for (int j = 0; j < 9; j++)
  158.                     {
  159.                         arraysH[i, j].BackColor = Color.Gold;
  160.                     }
  161.                 }
  162.             }
  163.             else
  164.             {
  165.                 String WrongMessage = "";
  166.                 for (int i = 0; i < 9; i++)
  167.                 {
  168.                     for (int j = 0; j < 9; j++)
  169.                     {
  170.                         label82.ForeColor = Color.Red;
  171.                         label82.Text = "誤る";                          
  172.                     }
  173.                 }
  174.                 if (BigSqrtCheck == false)
  175.                 {
  176.                     WrongMessage += "✘-每一大格都必須要不同數字\n";
  177.                 }
  178.                 else
  179.                 {
  180.                     WrongMessage += "✓-每一大格都必須要不同數字\n";
  181.                 }
  182.                 if (switcherH == false)
  183.                 {
  184.                     WrongMessage += "✘-橫向的所有數字必須不同\n";
  185.                 }
  186.                 else
  187.                 {
  188.                     WrongMessage += "✓-橫向的所有數字必須不同\n";
  189.                 }
  190.                 if (switcherL == false)
  191.                 {
  192.                     WrongMessage += "✘-直向的所有數字必須不同\n";
  193.                 }
  194.                 else
  195.                 {
  196.                     WrongMessage += "✓-直向的所有數字必須不同\n";
  197.                 }
  198.                 MessageBox.Show(WrongMessage);
  199.             }
  200.         }
  201.         private Random random = new Random();
  202.         int[,] answer = {{1,2,3,4,5,6,7,8,9},
  203.                          {4,5,6,7,8,9,1,2,3},
  204.                          {7,8,9,1,2,3,4,5,6},
  205.                          {8,9,7,2,3,1,5,6,4},
  206.                          {5,6,4,8,9,7,2,3,1},
  207.                          {3,1,2,5,6,4,8,9,7},
  208.                          {2,3,1,6,4,5,9,7,8},
  209.                          {6,4,5,9,7,8,3,1,2},
  210.                          {9,7,8,3,1,2,6,4,5}};
  211.         private void button12_Click(object sender, EventArgs e)
  212.         {
  213.             for (int i = 0; i < 9; i++)
  214.             {
  215.                 for (int j = 0; j < 9; j++)
  216.                 {
  217.                     arraysH[i, j].Text = answer[i,j].ToString();
  218.                 }
  219.             }
  220.         }
  221.     }
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement