Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace Bejewellers
- {
- public partial class Form1 : Form
- {
- //Options for each picturebox
- enum picture { empty, red, orange, yellow, green, blue, purple, white };
- //Set numTaken to 0
- int numTaken = 0;
- //Structure for each space
- public struct space
- {
- public bool selected; //If chosen
- public picture image; //Image file
- };
- //Structure for entire board
- public struct board
- {
- public spots[][] spots; //Array of positions in board
- public int nummoves; //I don't know what this does
- };
- //Pointer to board structure
- board gameBoard;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- private void pic00_Click(object sender, EventArgs e)
- {
- //Set this position in the array to selected
- gameBoard.spots[0][0].selected = true;
- //Run selected function
- Selected();
- }
- private void pic01_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][1].selected = true;
- Selected();
- }
- private void pic02_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][2].selected = true;
- Selected();
- }
- private void pic03_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][3].selected = true;
- Selected();
- }
- private void pic04_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][4].selected = true;
- Selected();
- }
- private void pic05_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][5].selected = true;
- Selected();
- }
- private void pic06_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][6].selected = true;
- Selected();
- }
- private void pic07_Click(object sender, EventArgs e)
- {
- gameBoard.spots[0][7].selected = true;
- Selected();
- }
- private void pic10_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][0].selected = true;
- Selected();
- }
- private void pic11_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][1].selected = true;
- Selected();
- }
- private void pic12_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][2].selected = true;
- Selected();
- }
- private void pic13_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][3].selected = true;
- Selected();
- }
- private void pic14_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][4].selected = true;
- Selected();
- }
- private void pic15_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][5].selected = true;
- Selected();
- }
- private void pic16_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][6].selected = true;
- Selected();
- }
- private void pic17_Click(object sender, EventArgs e)
- {
- gameBoard.spots[1][7].selected = true;
- Selected();
- }
- private void pic20_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][0].selected = true;
- Selected();
- }
- private void pic21_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][1].selected = true;
- Selected();
- }
- private void pic22_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][2].selected = true;
- Selected();
- }
- private void pic23_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][3].selected = true;
- Selected();
- }
- private void pic24_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][4].selected = true;
- Selected();
- }
- private void pic25_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][5].selected = true;
- Selected();
- }
- private void pic26_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][6].selected = true;
- Selected();
- }
- private void pic27_Click(object sender, EventArgs e)
- {
- gameBoard.spots[2][7].selected = true;
- Selected();
- }
- private void pic30_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][0].selected = true;
- Selected();
- }
- private void pic31_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][1].selected = true;
- Selected();
- }
- private void pic32_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][2].selected = true;
- Selected();
- }
- private void pic33_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][3].selected = true;
- Selected();
- }
- private void pic34_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][4].selected = true;
- Selected();
- }
- private void pic35_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][5].selected = true;
- Selected();
- }
- private void pic36_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][6].selected = true;
- Selected();
- }
- private void pic37_Click(object sender, EventArgs e)
- {
- gameBoard.spots[3][7].selected = true;
- Selected();
- }
- private void pic40_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][0].selected = true;
- Selected();
- }
- private void pic41_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][1].selected = true;
- Selected();
- }
- private void pic42_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][2].selected = true;
- Selected();
- }
- private void pic43_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][3].selected = true;
- Selected();
- }
- private void pic44_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][4].selected = true;
- Selected();
- }
- private void pic45_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][5].selected = true;
- Selected();
- }
- private void pic46_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][6].selected = true;
- Selected();
- }
- private void pic47_Click(object sender, EventArgs e)
- {
- gameBoard.spots[4][7].selected = true;
- Selected();
- }
- private void pic50_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][0].selected = true;
- Selected();
- }
- private void pic51_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][1].selected = true;
- Selected();
- }
- private void pic52_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][2].selected = true;
- Selected();
- }
- private void pic53_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][3].selected = true;
- Selected();
- }
- private void pic54_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][4].selected = true;
- Selected();
- }
- private void pic55_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][5].selected = true;
- Selected();
- }
- private void pic56_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][6].selected = true;
- Selected();
- }
- private void pic57_Click(object sender, EventArgs e)
- {
- gameBoard.spots[5][7].selected = true;
- Selected();
- }
- private void pic60_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][0].selected = true;
- Selected();
- }
- private void pic61_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][1].selected = true;
- Selected();
- }
- private void pic62_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][2].selected = true;
- Selected();
- }
- private void pic63_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][3].selected = true;
- Selected();
- }
- private void pic64_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][4].selected = true;
- Selected();
- }
- private void pic65_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][5].selected = true;
- Selected();
- }
- private void pic66_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][6].selected = true;
- Selected();
- }
- private void pic67_Click(object sender, EventArgs e)
- {
- gameBoard.spots[6][7].selected = true;
- Selected();
- }
- private void pic70_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][0].selected = true;
- Selected();
- }
- private void pic71_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][1].selected = true;
- Selected();
- }
- private void pic72_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][2].selected = true;
- Selected();
- }
- private void pic73_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][3].selected = true;
- Selected();
- }
- private void pic74_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][4].selected = true;
- Selected();
- }
- private void pic75_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][5].selected = true;
- Selected();
- }
- private void pic76_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][6].selected = true;
- Selected();
- }
- private void pic77_Click(object sender, EventArgs e)
- {
- gameBoard.spots[7][7].selected = true;
- Selected();
- }
- /* CanSwap - This function sees if the two selected pictures are parallel */
- bool CanSwap()
- {
- for (int row = 0; row < 7; row++)
- {
- for (int col = 0; col < 7; col++)
- {
- //If Num 2 is below, above, to the left, or to the right of num 1
- if ((gameBoard.spots[row][col].selected && gameBoard.spots[row + 1][col].selected) ||
- (gameBoard.spots[row][col].selected && gameBoard.spots[row - 1][col].selected) ||
- (gameBoard.spots[row][col].selected && gameBoard.spots[row][col + 1].selected) ||
- (gameBoard.spots[row][col].selected && gameBoard.spots[row][col - 1].selected))
- return true;
- else
- return false;
- }
- }
- return false;
- }
- /* DoSwap - This function swaps the two variables */
- bool DoSwap()
- {
- bool changeMade = false; //Sees if a change is made
- int i, ii, j, jj = 0;
- int row;
- int col;
- int swapVar; //Extra variable for swapping 2 variables
- int noSwap = 0; //Counts to see if no swaps have been made
- //Locate first selected position
- for (i = 0; i < 7; i++)
- {
- for (j = 0; !gameBoard.spots[i][j].selected; j++)
- {
- }
- }
- //Locate second selected position
- for (ii = i; ii < 7; ii++)
- {
- for (jj = j; !gameBoard.spots[ii][jj].selected; j++)
- {
- }
- }
- //Swap two positions
- swapVar = gameBoard.spots[i][j].image;
- gameBoard.spots[i][j].image = gameBoard.spots[ii][jj].image;
- gameBoard.spots[ii][jj].image = swapVar;
- do
- {
- noSwap = 0;
- for (row = 0; row < 7; row++)
- {
- for (col = 0; col < 7; col++)
- {
- // A B C D
- //[X]X X X
- // E F G H
- if (CheckThree(row, col, 0, 1)) //If 3 are lined up, see if more are lined up
- {
- changeMade = true;
- if (CheckFour(row, col, 0, 1)) //Check to see if 4 are lined up
- CheckFive(row, col, 0, 1); //Check to see if 5 are lined up
- }
- else //If 3 aren't lined up, then no switch is made
- noSwap++;
- //A B C D
- //X X X[X]
- //E F G H
- if (CheckThree(row, col, 0, -1))
- {
- changeMade = true;
- if (CheckFour(row, col, 0, -1))
- CheckFive(row, col, 0, -1);
- }
- else noSwap++;
- //[X]B C D
- ///X A I J
- ///X F G H
- if (CheckThree(row, col, 1, 0))
- {
- changeMade = true;
- if (CheckFour(row, col, 1, 0))
- CheckFive(row, col, 1, 0);
- }
- else
- noSwap++;
- ///X B C D
- ///X A I J
- //[X]F G H
- if (CheckThree(row, col, -1, 0))
- {
- changeMade = true;
- if (CheckFour(row, col, -1, 0))
- CheckFive(row, col, -1, 0);
- }
- else
- noSwap++;
- }
- }
- } while (noSwap != 4); //End loop if 0 changes have been made
- //Return false if no changes were made
- if (changeMade)
- return true;
- else
- return false;
- }
- /* CheckThree - This function checks to see if 3 positions line up correctly */
- bool CheckThree(int row, int col, int modRow, int modCol)
- {
- if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
- gameBoard.spots[row][col].image == gameBoard.spots[row + (modRow * 2)][col + (modCol * 2)].image)
- {
- if (row == 7)
- gameBoard.spots[row][col].image = 0;
- else
- gameBoard.spots[row][col].image = gameBoard.spots[row - 1][col].image;
- if (row + modRow == 7)
- gameBoard.spots[row + modRow][col + modCol].image = 0;
- else
- gameBoard.spots[row + modRow][col + modCol].image = gameBoard.spots[row + modRow - 1][col + modCol].image;
- if (row + (modRow * 2) == 7)
- gameBoard.spots[row + (modRow * 2)][col + (modRow * 2)].image = 0;
- else
- gameBoard.spots[row + (modRow * 2)][col + (modRow * 2)].image = gameBoard.spots[row + (modRow * 2) - 1][col + (modCol * 2)].image;
- return true;
- }
- if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
- gameBoard.spots[row][col].image == gameBoard.spots[row - modRow][col - modCol].image)
- {
- if (row == 7)
- gameBoard.spots[row][col].image = 0;
- else
- gameBoard.spots[row][col].image = gameBoard.spots[row - 1][col].image;
- if (row + modRow == 7)
- gameBoard.spot[row + modRow][col + modCol].image = 0;
- else
- gameBoard.spots[row + modRow][col + modCol].image = gameBoard.spots[row + modRow - 1][col + modCol].image;
- if (row - modRow == 7)
- gameBoard.spots[row - modRow][col - modCol].image = 0;
- else
- gameBoard.spots[row - modRow][col - modCol].image = gameBoard.spots[row - modRow - 1][col - modCol].image;
- return true;
- }
- return false;
- }
- /* CheckFour - This function checks to see if 4 positions line up correctly */
- bool CheckFour(int row, int col, int modRow, int modCol)
- {
- if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
- gameBoard.spots[row][col].image == gameBoard.spots[row + modRow * 3][col + modCol * 3].image)
- {
- if (row + (modRow * 3) == 7)
- gameBoard.spots[row + modRow * 3][col + modCol * 3].image = 0;
- else
- gameBoard.spots[row + modRow * 3][col + modCol * 3].image = gameBoard.spots[row + (modRow * 3) - 1][col + modCol * 3].image;
- return true;
- }
- else
- return false;
- }
- /* CheckFive - This function checks to see if 5 positions line up correctly */
- bool CheckFive(int row, int col, int modRow, int modCol)
- {
- if (gameBoard.spots[row][col].image == gameBoard.spots[row + modRow][col + modCol].image &&
- gameBoard.spots[row][col].image == gameBoard.spots[row + modRow * 4][col + modCol * 4].image)
- {
- if (row + (modRow * 4) == 7)
- gameBoard.spots[row + (modRow * 4)][col + modCol * 4].image = 0;
- else
- gameBoard.spots[row + (modRow * 4)][col + modCol * 4].image = gameBoard.spots[row + (modRow * 4) - 1][col + modCol * 4].image;
- return true;
- }
- else
- return false;
- }
- /* CantSwap - This function resets values if the swapped images create no solution */
- void CantSwap()
- {
- int i, ii, j, jj;
- int swapVar;
- for (i = 0; i < 7; i++)
- {
- for (j = 0; !gameBoard.spots[i][j].selected; j++)
- {
- }
- }
- for (ii = i; ii < 7; ii++)
- {
- for (jj = j; !gameBoard.spots[ii][jj].selected; j++)
- {
- }
- }
- //Swap back
- swapVar = gameBoard.spots[i][j].image;
- gameBoard.spots[i][j].image = gameBoard.spots[ii][jj].image;
- gameBoard.spots[ii][jj].image = swapVar;
- //Set positions to false
- gameBoard.spots[i][j].selected = false;
- gameBoard.spots[ii][jj].selected = false;
- numTaken = 0;
- }
- /* Selected - This function adds the number of chosen variables, runs other functions */
- void Selected()
- {
- numTaken++;
- if (numTaken == 2 && CanSwap()) //If two variables are selected and they are next to eachother
- if (!DoSwap()) //If swapping results in no solution, reset variables
- CantSwap();
- }
- }
- }
Add Comment
Please, Sign In to add comment