Guest User

Untitled

a guest
May 26th, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 21.02 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.Text;
  7. using System.Windows.Forms;
  8.  
  9. namespace Bejewellers
  10. {
  11.     public partial class Form1 : Form
  12.     {
  13.  
  14.         //Options for each picturebox
  15.         enum picture { empty, red, orange, yellow, green, blue, purple, white };
  16.  
  17.         //Set numTaken to 0
  18.         int numTaken = 0;
  19.  
  20.         //Structure for each space
  21.         public struct space
  22.         {
  23.             public bool selected;  //If chosen
  24.             public picture image;  //Image file
  25.         };
  26.  
  27.         //Structure for entire board
  28.         public struct board
  29.         {
  30.             public spots[][] spots;    //Array of positions in board
  31.             public int nummoves;       //I don't know what this does
  32.         };
  33.  
  34.         //Pointer to board structure
  35.         board gameBoard;
  36.  
  37.         public Form1()
  38.         {
  39.             InitializeComponent();
  40.         }
  41.  
  42.  
  43.         private void Form1_Load(object sender, EventArgs e)
  44.         {
  45.  
  46.         }
  47.  
  48.  
  49.         private void pic00_Click(object sender, EventArgs e)
  50.         {
  51.             //Set this position in the array to selected
  52.             gameBoard.spots[0][0].selected = true;
  53.             //Run selected function
  54.             Selected();
  55.         }
  56.  
  57.  
  58.         private void pic01_Click(object sender, EventArgs e)
  59.         {
  60.             gameBoard.spots[0][1].selected = true;
  61.             Selected();
  62.         }
  63.  
  64.  
  65.         private void pic02_Click(object sender, EventArgs e)
  66.         {
  67.             gameBoard.spots[0][2].selected = true;
  68.             Selected();
  69.         }
  70.  
  71.  
  72.         private void pic03_Click(object sender, EventArgs e)
  73.         {
  74.             gameBoard.spots[0][3].selected = true;
  75.             Selected();
  76.         }
  77.  
  78.  
  79.         private void pic04_Click(object sender, EventArgs e)
  80.         {
  81.             gameBoard.spots[0][4].selected = true;
  82.             Selected();
  83.         }
  84.  
  85.  
  86.         private void pic05_Click(object sender, EventArgs e)
  87.         {
  88.             gameBoard.spots[0][5].selected = true;
  89.             Selected();
  90.         }
  91.  
  92.  
  93.         private void pic06_Click(object sender, EventArgs e)
  94.         {
  95.             gameBoard.spots[0][6].selected = true;
  96.             Selected();
  97.         }
  98.  
  99.  
  100.         private void pic07_Click(object sender, EventArgs e)
  101.         {
  102.             gameBoard.spots[0][7].selected = true;
  103.             Selected();
  104.         }
  105.  
  106.  
  107.         private void pic10_Click(object sender, EventArgs e)
  108.         {
  109.             gameBoard.spots[1][0].selected = true;
  110.             Selected();
  111.         }
  112.  
  113.  
  114.  
  115.         private void pic11_Click(object sender, EventArgs e)
  116.         {
  117.             gameBoard.spots[1][1].selected = true;
  118.             Selected();
  119.         }
  120.  
  121.  
  122.         private void pic12_Click(object sender, EventArgs e)
  123.         {
  124.             gameBoard.spots[1][2].selected = true;
  125.             Selected();
  126.         }
  127.  
  128.  
  129.         private void pic13_Click(object sender, EventArgs e)
  130.         {
  131.             gameBoard.spots[1][3].selected = true;
  132.             Selected();
  133.         }
  134.  
  135.  
  136.  
  137.         private void pic14_Click(object sender, EventArgs e)
  138.         {
  139.             gameBoard.spots[1][4].selected = true;
  140.             Selected();
  141.         }
  142.  
  143.  
  144.  
  145.         private void pic15_Click(object sender, EventArgs e)
  146.         {
  147.             gameBoard.spots[1][5].selected = true;
  148.             Selected();
  149.         }
  150.  
  151.  
  152.         private void pic16_Click(object sender, EventArgs e)
  153.         {
  154.             gameBoard.spots[1][6].selected = true;
  155.             Selected();
  156.         }
  157.  
  158.  
  159.  
  160.         private void pic17_Click(object sender, EventArgs e)
  161.         {
  162.             gameBoard.spots[1][7].selected = true;
  163.             Selected();
  164.         }
  165.  
  166.  
  167.         private void pic20_Click(object sender, EventArgs e)
  168.         {
  169.             gameBoard.spots[2][0].selected = true;
  170.             Selected();
  171.         }
  172.  
  173.  
  174.  
  175.         private void pic21_Click(object sender, EventArgs e)
  176.         {
  177.             gameBoard.spots[2][1].selected = true;
  178.             Selected();
  179.         }
  180.  
  181.  
  182.  
  183.         private void pic22_Click(object sender, EventArgs e)
  184.         {
  185.             gameBoard.spots[2][2].selected = true;
  186.             Selected();
  187.         }
  188.  
  189.  
  190.  
  191.         private void pic23_Click(object sender, EventArgs e)
  192.         {
  193.             gameBoard.spots[2][3].selected = true;
  194.  
  195.             Selected();
  196.         }
  197.  
  198.  
  199.  
  200.         private void pic24_Click(object sender, EventArgs e)
  201.         {
  202.             gameBoard.spots[2][4].selected = true;
  203.             Selected();
  204.         }
  205.  
  206.  
  207.  
  208.         private void pic25_Click(object sender, EventArgs e)
  209.         {
  210.             gameBoard.spots[2][5].selected = true;
  211.             Selected();
  212.         }
  213.  
  214.  
  215.  
  216.         private void pic26_Click(object sender, EventArgs e)
  217.         {
  218.             gameBoard.spots[2][6].selected = true;
  219.             Selected();
  220.         }
  221.  
  222.  
  223.  
  224.         private void pic27_Click(object sender, EventArgs e)
  225.         {
  226.             gameBoard.spots[2][7].selected = true;
  227.             Selected();
  228.         }
  229.  
  230.  
  231.  
  232.         private void pic30_Click(object sender, EventArgs e)
  233.         {
  234.             gameBoard.spots[3][0].selected = true;
  235.             Selected();
  236.         }
  237.  
  238.  
  239.  
  240.         private void pic31_Click(object sender, EventArgs e)
  241.         {
  242.             gameBoard.spots[3][1].selected = true;
  243.             Selected();
  244.         }
  245.  
  246.  
  247.  
  248.         private void pic32_Click(object sender, EventArgs e)
  249.         {
  250.             gameBoard.spots[3][2].selected = true;
  251.             Selected();
  252.         }
  253.  
  254.  
  255.  
  256.         private void pic33_Click(object sender, EventArgs e)
  257.         {
  258.             gameBoard.spots[3][3].selected = true;
  259.             Selected();
  260.         }
  261.  
  262.  
  263.  
  264.         private void pic34_Click(object sender, EventArgs e)
  265.         {
  266.             gameBoard.spots[3][4].selected = true;
  267.             Selected();
  268.         }
  269.  
  270.  
  271.  
  272.         private void pic35_Click(object sender, EventArgs e)
  273.         {
  274.             gameBoard.spots[3][5].selected = true;
  275.             Selected();
  276.         }
  277.  
  278.  
  279.  
  280.         private void pic36_Click(object sender, EventArgs e)
  281.         {
  282.             gameBoard.spots[3][6].selected = true;
  283.             Selected();
  284.         }
  285.  
  286.  
  287.  
  288.         private void pic37_Click(object sender, EventArgs e)
  289.         {
  290.             gameBoard.spots[3][7].selected = true;
  291.             Selected();
  292.         }
  293.  
  294.  
  295.  
  296.         private void pic40_Click(object sender, EventArgs e)
  297.         {
  298.             gameBoard.spots[4][0].selected = true;
  299.             Selected();
  300.         }
  301.  
  302.  
  303.  
  304.         private void pic41_Click(object sender, EventArgs e)
  305.         {
  306.             gameBoard.spots[4][1].selected = true;
  307.             Selected();
  308.         }
  309.  
  310.  
  311.  
  312.         private void pic42_Click(object sender, EventArgs e)
  313.         {
  314.             gameBoard.spots[4][2].selected = true;
  315.             Selected();
  316.         }
  317.  
  318.  
  319.         private void pic43_Click(object sender, EventArgs e)
  320.         {
  321.             gameBoard.spots[4][3].selected = true;
  322.             Selected();
  323.         }
  324.  
  325.  
  326.         private void pic44_Click(object sender, EventArgs e)
  327.         {
  328.             gameBoard.spots[4][4].selected = true;
  329.             Selected();
  330.         }
  331.  
  332.  
  333.         private void pic45_Click(object sender, EventArgs e)
  334.         {
  335.             gameBoard.spots[4][5].selected = true;
  336.             Selected();
  337.         }
  338.  
  339.  
  340.         private void pic46_Click(object sender, EventArgs e)
  341.         {
  342.             gameBoard.spots[4][6].selected = true;
  343.             Selected();
  344.         }
  345.  
  346.  
  347.         private void pic47_Click(object sender, EventArgs e)
  348.         {
  349.             gameBoard.spots[4][7].selected = true;
  350.             Selected();
  351.         }
  352.  
  353.  
  354.         private void pic50_Click(object sender, EventArgs e)
  355.         {
  356.             gameBoard.spots[5][0].selected = true;
  357.             Selected();
  358.         }
  359.  
  360.  
  361.         private void pic51_Click(object sender, EventArgs e)
  362.         {
  363.             gameBoard.spots[5][1].selected = true;
  364.             Selected();
  365.         }
  366.  
  367.  
  368.         private void pic52_Click(object sender, EventArgs e)
  369.         {
  370.             gameBoard.spots[5][2].selected = true;
  371.             Selected();
  372.         }
  373.  
  374.  
  375.         private void pic53_Click(object sender, EventArgs e)
  376.         {
  377.             gameBoard.spots[5][3].selected = true;
  378.             Selected();
  379.         }
  380.  
  381.  
  382.         private void pic54_Click(object sender, EventArgs e)
  383.         {
  384.             gameBoard.spots[5][4].selected = true;
  385.             Selected();
  386.         }
  387.  
  388.  
  389.         private void pic55_Click(object sender, EventArgs e)
  390.         {
  391.             gameBoard.spots[5][5].selected = true;
  392.             Selected();
  393.         }
  394.  
  395.  
  396.         private void pic56_Click(object sender, EventArgs e)
  397.         {
  398.             gameBoard.spots[5][6].selected = true;
  399.             Selected();
  400.         }
  401.  
  402.  
  403.         private void pic57_Click(object sender, EventArgs e)
  404.         {
  405.             gameBoard.spots[5][7].selected = true;
  406.             Selected();
  407.         }
  408.  
  409.  
  410.         private void pic60_Click(object sender, EventArgs e)
  411.         {
  412.             gameBoard.spots[6][0].selected = true;
  413.             Selected();
  414.         }
  415.  
  416.  
  417.         private void pic61_Click(object sender, EventArgs e)
  418.         {
  419.             gameBoard.spots[6][1].selected = true;
  420.             Selected();
  421.         }
  422.  
  423.  
  424.         private void pic62_Click(object sender, EventArgs e)
  425.         {
  426.             gameBoard.spots[6][2].selected = true;
  427.             Selected();
  428.         }
  429.  
  430.  
  431.         private void pic63_Click(object sender, EventArgs e)
  432.         {
  433.             gameBoard.spots[6][3].selected = true;
  434.             Selected();
  435.         }
  436.  
  437.  
  438.         private void pic64_Click(object sender, EventArgs e)
  439.         {
  440.             gameBoard.spots[6][4].selected = true;
  441.             Selected();
  442.         }
  443.  
  444.  
  445.         private void pic65_Click(object sender, EventArgs e)
  446.         {
  447.             gameBoard.spots[6][5].selected = true;
  448.             Selected();
  449.         }
  450.  
  451.  
  452.         private void pic66_Click(object sender, EventArgs e)
  453.         {
  454.             gameBoard.spots[6][6].selected = true;
  455.             Selected();
  456.         }
  457.  
  458.  
  459.         private void pic67_Click(object sender, EventArgs e)
  460.         {
  461.             gameBoard.spots[6][7].selected = true;
  462.             Selected();
  463.         }
  464.  
  465.  
  466.         private void pic70_Click(object sender, EventArgs e)
  467.         {
  468.             gameBoard.spots[7][0].selected = true;
  469.             Selected();
  470.         }
  471.  
  472.  
  473.         private void pic71_Click(object sender, EventArgs e)
  474.         {
  475.             gameBoard.spots[7][1].selected = true;
  476.             Selected();
  477.         }
  478.  
  479.  
  480.         private void pic72_Click(object sender, EventArgs e)
  481.         {
  482.             gameBoard.spots[7][2].selected = true;
  483.             Selected();
  484.         }
  485.  
  486.  
  487.         private void pic73_Click(object sender, EventArgs e)
  488.         {
  489.             gameBoard.spots[7][3].selected = true;
  490.             Selected();
  491.         }
  492.  
  493.  
  494.         private void pic74_Click(object sender, EventArgs e)
  495.         {
  496.             gameBoard.spots[7][4].selected = true;
  497.             Selected();
  498.         }
  499.  
  500.  
  501.         private void pic75_Click(object sender, EventArgs e)
  502.         {
  503.             gameBoard.spots[7][5].selected = true;
  504.             Selected();
  505.         }
  506.  
  507.  
  508.         private void pic76_Click(object sender, EventArgs e)
  509.         {
  510.             gameBoard.spots[7][6].selected = true;
  511.             Selected();
  512.         }
  513.  
  514.  
  515.         private void pic77_Click(object sender, EventArgs e)
  516.         {
  517.             gameBoard.spots[7][7].selected = true;
  518.             Selected();
  519.         }
  520.  
  521.  
  522.  
  523.         /* CanSwap - This function sees if the two selected pictures are parallel */
  524.         bool CanSwap()
  525.         {
  526.             for (int row = 0; row < 7; row++)
  527.             {
  528.                 for (int col = 0; col < 7; col++)
  529.                 {
  530.                     //If Num 2 is below, above, to the left, or to the right of num 1
  531.                     if ((gameBoard.spots[row][col].selected && gameBoard.spots[row + 1][col].selected) ||
  532.                         (gameBoard.spots[row][col].selected && gameBoard.spots[row - 1][col].selected) ||
  533.                         (gameBoard.spots[row][col].selected && gameBoard.spots[row][col + 1].selected) ||
  534.                         (gameBoard.spots[row][col].selected && gameBoard.spots[row][col - 1].selected))
  535.                         return true;
  536.                     else
  537.                         return false;
  538.                 }
  539.             }
  540.             return false;
  541.         }
  542.  
  543.  
  544.  
  545.         /* DoSwap - This function swaps the two variables */
  546.         bool DoSwap()
  547.         {
  548.             bool changeMade = false;    //Sees if a change is made
  549.             int i, ii, j, jj = 0;
  550.             int row;
  551.             int col;
  552.             int swapVar;                //Extra variable for swapping 2 variables
  553.             int noSwap = 0;             //Counts to see if no swaps have been made
  554.  
  555.             //Locate first selected position
  556.             for (i = 0; i < 7; i++)
  557.             {
  558.                 for (j = 0; !gameBoard.spots[i][j].selected; j++)
  559.                 {
  560.                 }
  561.             }
  562.  
  563.             //Locate second selected position
  564.             for (ii = i; ii < 7; ii++)
  565.             {
  566.                 for (jj = j; !gameBoard.spots[ii][jj].selected; j++)
  567.                 {
  568.                 }
  569.             }
  570.  
  571.             //Swap two positions
  572.             swapVar = gameBoard.spots[i][j].image;
  573.             gameBoard.spots[i][j].image = gameBoard.spots[ii][jj].image;
  574.             gameBoard.spots[ii][jj].image = swapVar;
  575.  
  576.             do
  577.             {
  578.                 noSwap = 0;
  579.                 for (row = 0; row < 7; row++)
  580.                 {
  581.                     for (col = 0; col < 7; col++)
  582.                     {
  583.                         // A B C D
  584.                         //[X]X X X
  585.                         // E F G H
  586.                         if (CheckThree(row, col, 0, 1))     //If 3 are lined up, see if more are lined up
  587.                         {
  588.                             changeMade = true;
  589.                             if (CheckFour(row, col, 0, 1))  //Check to see if 4 are lined up
  590.                                 CheckFive(row, col, 0, 1);  //Check to see if 5 are lined up  
  591.                         }
  592.                         else    //If 3 aren't lined up, then no switch is made
  593.                             noSwap++;
  594.                         //A B C D
  595.                         //X X X[X]
  596.                         //E F G H
  597.                         if (CheckThree(row, col, 0, -1))
  598.                         {
  599.                             changeMade = true;
  600.                             if (CheckFour(row, col, 0, -1))
  601.                                 CheckFive(row, col, 0, -1);
  602.                         }
  603.                         else noSwap++;
  604.                         //[X]B C D
  605.                         ///X A I J
  606.                         ///X F G H
  607.                         if (CheckThree(row, col, 1, 0))
  608.                         {
  609.                             changeMade = true;
  610.                             if (CheckFour(row, col, 1, 0))
  611.                                 CheckFive(row, col, 1, 0);
  612.                         }
  613.                         else
  614.                             noSwap++;
  615.                         ///X B C D
  616.                         ///X A I J
  617.                         //[X]F G H
  618.                         if (CheckThree(row, col, -1, 0))
  619.                         {
  620.                             changeMade = true;
  621.                             if (CheckFour(row, col, -1, 0))
  622.                                 CheckFive(row, col, -1, 0);
  623.                         }
  624.                         else
  625.                             noSwap++;
  626.                     }
  627.                 }
  628.             } while (noSwap != 4);    //End loop if 0 changes have been made
  629.  
  630.             //Return false if no changes were made
  631.             if (changeMade)
  632.                 return true;
  633.             else
  634.                 return false;
  635.  
  636.         }
  637.  
  638.  
  639.  
  640.         /* CheckThree - This function checks to see if 3 positions line up correctly */
  641.         bool CheckThree(int row, int col, int modRow, int modCol)
  642.         {
  643.             if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
  644.                 gameBoard.spots[row][col].image == gameBoard.spots[row + (modRow * 2)][col + (modCol * 2)].image)
  645.             {
  646.                 if (row == 7)
  647.                     gameBoard.spots[row][col].image = 0;
  648.                 else
  649.                     gameBoard.spots[row][col].image = gameBoard.spots[row - 1][col].image;
  650.                 if (row + modRow == 7)
  651.                     gameBoard.spots[row + modRow][col + modCol].image = 0;
  652.                 else
  653.                     gameBoard.spots[row + modRow][col + modCol].image = gameBoard.spots[row + modRow - 1][col + modCol].image;
  654.                 if (row + (modRow * 2) == 7)
  655.                     gameBoard.spots[row + (modRow * 2)][col + (modRow * 2)].image = 0;
  656.                 else
  657.                     gameBoard.spots[row + (modRow * 2)][col + (modRow * 2)].image = gameBoard.spots[row + (modRow * 2) - 1][col + (modCol * 2)].image;
  658.                 return true;
  659.             }
  660.             if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
  661.                 gameBoard.spots[row][col].image == gameBoard.spots[row - modRow][col - modCol].image)
  662.             {
  663.                 if (row == 7)
  664.                     gameBoard.spots[row][col].image = 0;
  665.                 else
  666.                     gameBoard.spots[row][col].image = gameBoard.spots[row - 1][col].image;
  667.                 if (row + modRow == 7)
  668.                     gameBoard.spot[row + modRow][col + modCol].image = 0;
  669.                 else
  670.                     gameBoard.spots[row + modRow][col + modCol].image = gameBoard.spots[row + modRow - 1][col + modCol].image;
  671.                 if (row - modRow == 7)
  672.                     gameBoard.spots[row - modRow][col - modCol].image = 0;
  673.                 else
  674.                     gameBoard.spots[row - modRow][col - modCol].image = gameBoard.spots[row - modRow - 1][col - modCol].image;
  675.                 return true;
  676.             }
  677.  
  678.             return false;
  679.         }
  680.  
  681.  
  682.         /* CheckFour - This function checks to see if 4 positions line up correctly */
  683.         bool CheckFour(int row, int col, int modRow, int modCol)
  684.         {
  685.             if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
  686.                 gameBoard.spots[row][col].image == gameBoard.spots[row + modRow * 3][col + modCol * 3].image)
  687.             {
  688.                 if (row + (modRow * 3) == 7)
  689.                     gameBoard.spots[row + modRow * 3][col + modCol * 3].image = 0;
  690.                 else
  691.                     gameBoard.spots[row + modRow * 3][col + modCol * 3].image = gameBoard.spots[row + (modRow * 3) - 1][col + modCol * 3].image;
  692.                 return true;
  693.             }
  694.             else
  695.                 return false;
  696.         }
  697.  
  698.  
  699.  
  700.         /* CheckFive - This function checks to see if 5 positions line up correctly */
  701.         bool CheckFive(int row, int col, int modRow, int modCol)
  702.         {
  703.             if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
  704.                 gameBoard.spots[row][col].image == gameBoard.spots[row + modRow * 4][col + modCol * 4].image)
  705.             {
  706.                 if (row + (modRow * 4) == 7)
  707.                     gameBoard.spots[row + (modRow * 4)][col + modCol * 4].image = 0;
  708.                 else
  709.                     gameBoard.spots[row + (modRow * 4)][col + modCol * 4].image = gameBoard.spots[row + (modRow * 4) - 1][col + modCol * 4].image;
  710.                 return true;
  711.             }
  712.             else
  713.                 return false;
  714.         }
  715.  
  716.  
  717.  
  718.         /* CantSwap - This function resets values if the swapped images create no solution */
  719.         void CantSwap()
  720.         {
  721.             int i, ii, j, jj;
  722.             int swapVar;
  723.  
  724.             for (i = 0; i < 7; i++)
  725.             {
  726.                 for (j = 0; !gameBoard.spots[i][j].selected; j++)
  727.                 {
  728.                 }
  729.             }
  730.  
  731.             for (ii = i; ii < 7; ii++)
  732.             {
  733.                 for (jj = j; !gameBoard.spots[ii][jj].selected; j++)
  734.                 {
  735.                 }
  736.             }
  737.  
  738.             //Swap back
  739.             swapVar = gameBoard.spots[i][j].image;
  740.             gameBoard.spots[i][j].image = gameBoard.spots[ii][jj].image;
  741.             gameBoard.spots[ii][jj].image = swapVar;
  742.  
  743.             //Set positions to false
  744.             gameBoard.spots[i][j].selected = false;
  745.             gameBoard.spots[ii][jj].selected = false;
  746.             numTaken = 0;
  747.  
  748.         }
  749.  
  750.  
  751.  
  752.         /* Selected - This function adds the number of chosen variables, runs other functions */
  753.         void Selected()
  754.         {
  755.             numTaken++;
  756.             if (numTaken == 2 && CanSwap()) //If two variables are selected and they are next to eachother
  757.                 if (!DoSwap())      //If swapping results in no solution, reset variables
  758.                     CantSwap();
  759.         }
  760.  
  761.     }
  762. }
Add Comment
Please, Sign In to add comment