Public paste
voor Twan
By: Timo | Date: Oct 25 2010 16:36 | Format: None | Expires: never | Size: 8.08 KB | Hits: 463

  1. namespace DraaiPuzzel
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.         SpeelVeld veld;
  6.         Verandering veranderingen;
  7.  
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.             veld = SpeelVeld.GetInstance();
  12.             veranderingen = new Verandering();
  13.             veld.MaakSpeelVeld();            
  14.             veranderingen.UpdateForm += new EventHandler(veranderingen_UpdateForm);
  15.             buttonEvent();
  16.             panelEvent();
  17.         }
  18.  
  19.      
  20.  
  21.         void veranderingen_UpdateForm(object sender, EventArgs e)
  22.         {
  23.             veranderingen.VakjesUpdaten();
  24.         }
  25.  
  26.  
  27.         private void Form1_Load(object sender, EventArgs e)
  28.         {
  29.             for (int i = 0; i < veld.Sv.GetLength(0); i++)
  30.             {
  31.                 for (int j = 0; j < veld.Sv.GetLength(1); j++)
  32.                 {
  33.                     this.Controls.Add(veld.Sv[i, j]);
  34.                 }
  35.             }
  36.             this.Controls.Add(veld.WisselVak);
  37.         }
  38.  
  39.         private void buttonEvent()
  40.         {
  41.             foreach (Button b in Controls)
  42.             {
  43.                 if (b.Text == "<")
  44.                     b.MouseClick += new MouseEventHandler(b_MouseClick_Links);
  45.                 else if (b.Text == ">")
  46.                     b.MouseClick += new MouseEventHandler(b_MouseClick_Rechts);
  47.             }            
  48.         }
  49.         private void panelEvent()
  50.         {
  51.             foreach (Vakje v in veld.Sv)
  52.             {
  53.                 v.MouseClick += new MouseEventHandler(v_MouseClick);
  54.             }
  55.         }
  56.  
  57.         void v_MouseClick(object sender, MouseEventArgs e)
  58.         {
  59.             //MessageBox.Show("Test" + (sender as Vakje).Location.X.ToString());
  60.             veranderingen.VerticaalWissel((sender as Vakje).Location.Y / 55, (sender as Vakje).Location.X / 55);
  61.         }
  62.  
  63.         void b_MouseClick_Rechts(object sender, MouseEventArgs e)
  64.         {
  65.             veranderingen.Wissel("rechts", (sender as Button).Name);
  66.         }
  67.  
  68.         void b_MouseClick_Links(object sender, MouseEventArgs e)
  69.         {
  70.             veranderingen.Wissel("links", (sender as Button).Name);
  71.         }
  72.  
  73.         private void btnVerstop_Click(object sender, EventArgs e)
  74.         {
  75.             veranderingen.Verstoppen();
  76.         }
  77.     }
  78.  
  79. public class SpeelVeld
  80.     {
  81.         #region fields
  82.         private Vakje[,] sv;        
  83.         private Vakje[,] beginStaat;
  84.         private Vakje wisselVak;        
  85.         private int kleurIndex = 35;
  86.         private Color[] Kleuren = { Color.Red, Color.Blue, Color.Yellow, Color.Purple };
  87.         private static SpeelVeld speelveld;
  88.         #endregion
  89.  
  90.         #region constructors
  91.         public SpeelVeld()
  92.         {
  93.         }
  94.  
  95.         public SpeelVeld(Vakje[,] sVeld)
  96.         {
  97.             sVeld = this.sv;
  98.         }
  99.         #endregion
  100.  
  101.         #region methods
  102.         public void MaakSpeelVeld()
  103.         {
  104.             sv = new Vakje[5, 3];
  105.             int ID = 1;
  106.            
  107.             for (int i = 0; i < sv.GetLength(0); i++)
  108.             {
  109.                 for (int j = 0; j < sv.GetLength(1); j++)
  110.                 {
  111.                     sv[i, j] = new Vakje(ID);
  112.                     sv[i, j].Location = new Point(50 + j * 55, 50 + i * 55);
  113.                     sv[i, j].BackColor = Color.FromArgb(kleurIndex, Kleuren[j]);
  114.                     ID++;
  115.                 }
  116.                 kleurIndex += 35;
  117.             }
  118.             wisselVak = new Vakje(0);
  119.             wisselVak.Location = new Point(105, 325);
  120.             wisselVak.BackColor = Color.White;
  121.  
  122.             beginStaat = (Vakje[,])sv.Clone();
  123.         }
  124.  
  125.        
  126.         public static SpeelVeld GetInstance()
  127.         {
  128.             if (speelveld == null)
  129.                 speelveld = new SpeelVeld();
  130.             return speelveld;
  131.         }
  132.         #endregion
  133.  
  134.         #region properties
  135.         public Vakje[,] Sv
  136.         {
  137.             get { return sv; }
  138.             set { sv = value; }
  139.         }
  140.  
  141.         public Vakje WisselVak
  142.         {            
  143.             get { return wisselVak; }
  144.             set { wisselVak = value; }
  145.         }
  146.         #endregion
  147.     }    
  148.  
  149. public class Verandering
  150.     {
  151.         private int rij;
  152.         public event EventHandler UpdateForm;
  153.         private SpeelVeld speelveld;
  154.  
  155.         public Verandering()
  156.         {
  157.             speelveld = SpeelVeld.GetInstance();
  158.         }
  159.  
  160.         public void Wissel(string kant, string naam)
  161.         {
  162.             if (naam.Contains("1"))
  163.                 rij = 1;
  164.             else if (naam.Contains("2"))
  165.                 rij = 2;
  166.             else if (naam.Contains("3"))
  167.                 rij = 3;
  168.             else if (naam.Contains("4"))
  169.                 rij = 4;
  170.             else if (naam.Contains("5"))
  171.                 rij = 5;
  172.  
  173.             switch (kant)
  174.             {
  175.                 case "links":
  176.                     LinksSchuiven(rij);
  177.                     break;
  178.                 case "rechts":
  179.                     RechtsSchuiven(rij);
  180.                     break;
  181.             }
  182.         }
  183.  
  184.         private void RechtsSchuiven(int rij)
  185.         {
  186.             rij -= 1;
  187.             Vakje bewaarvakje = speelveld.Sv[rij, 2];
  188.             speelveld.Sv[rij, 2] = speelveld.Sv[rij, 1];
  189.             speelveld.Sv[rij, 1] = speelveld.Sv[rij, 0];
  190.             speelveld.Sv[rij, 0] = bewaarvakje;
  191.  
  192.             if ( UpdateForm != null)
  193.                 UpdateForm(this, new EventArgs());
  194.         }
  195.  
  196.         private void LinksSchuiven(int rij)
  197.         {
  198.             rij -= 1;
  199.             Vakje bewaarvakje = speelveld.Sv[rij, 0];
  200.             speelveld.Sv[rij, 0] = speelveld.Sv[rij, 1];
  201.             speelveld.Sv[rij, 1] = speelveld.Sv[rij, 2];
  202.             speelveld.Sv[rij, 2] = bewaarvakje;
  203.  
  204.             if (UpdateForm != null)
  205.                 UpdateForm(this, new EventArgs());
  206.         }
  207.        
  208.         public void Verstoppen()
  209.         {
  210.             if (speelveld.WisselVak.BackColor == Color.White || speelveld.Sv[4, 1].BackColor == Color.White)
  211.             {
  212.                 Vakje buffer = speelveld.WisselVak;
  213.                 speelveld.WisselVak = speelveld.Sv[4, 1];
  214.                 speelveld.Sv[4, 1] = buffer;
  215.  
  216.                 if (UpdateForm != null)
  217.                     UpdateForm(this, new EventArgs());
  218.             }
  219.         }
  220.  
  221.         public void VakjesUpdaten()
  222.         {
  223.             for (int i = 0; i < speelveld.Sv.GetLength(0); i++)
  224.             {
  225.                 for (int j = 0; j < speelveld.Sv.GetLength(1); j++)
  226.                 {
  227.                     speelveld.Sv[i, j].Location = new Point(50 + j * 55, 50 + i * 55);
  228.                 }
  229.             }
  230.             speelveld.WisselVak.Location = new Point(105, 325);
  231.         }
  232.         public int Rij
  233.         {
  234.             get { return rij; }
  235.         }
  236.  
  237.         public void VerticaalWissel(int i, int j)
  238.         {
  239.  
  240.             if (speelveld.Sv[speelveld.Sv.GetLength(0), j].BackColor != Color.White)
  241.             {
  242.                 //if (speelveld.Sv[i, j] == speelveld.Sv[speelveld.Sv.GetLength(0) - 1, j] && speelveld.Sv[i - 1, j].BackColor == Color.White)
  243.                 //{
  244.                 //    Vakje buffer = speelveld.Sv[i, j];
  245.                 //    speelveld.Sv[i, j] = speelveld.Sv[i - 1, j];
  246.                 //    speelveld.Sv[i - 1, j] = buffer;
  247.                 //}
  248.                 if (speelveld.Sv[i + 1, j].BackColor == Color.White && speelveld.Sv[i, j] != speelveld.Sv[4, j])
  249.                 {
  250.                     Vakje buffer = speelveld.Sv[i, j];
  251.                     speelveld.Sv[i, j] = speelveld.Sv[i + 1, j];
  252.                     speelveld.Sv[i + 1, j] = buffer;
  253.                 }
  254.                 else if (speelveld.Sv[i - 1, j].BackColor == Color.White)
  255.                 {
  256.                     Vakje buffer = speelveld.Sv[i, j];
  257.                     speelveld.Sv[i, j] = speelveld.Sv[i - 1, j];
  258.                     speelveld.Sv[i - 1, j] = buffer;
  259.                 }
  260.                 else
  261.                 {
  262.                 }
  263.             }
  264.  
  265.             if(UpdateForm != null)
  266.                 UpdateForm(this, new EventArgs());
  267.         }
  268.     }