View Single Post
  #1 (permalink)  
Old 05-08-2008, 11:26 AM
gaylo565's Avatar   
gaylo565 gaylo565 is offline
Programmer
 
Join Date: May 2007
Location: flagstaff, az
Posts: 147
Last Blog:
String Manipulation wi...
Rep Power: 6
gaylo565 has a spectacular aura aboutgaylo565 has a spectacular aura about
Default help finishing memory game

I have been working on this memory game for a while now in my spare time and it is working until I have to run the new game method. I think my problem might be that I am declaring the button array within the new game method and that is throwing of my index numbers after the first game. Its kind of a lot of code to go through but if anyone has some spare time id appreciate the help. Also Is there a way to keep the pic on the button in color while it is not enabled?Heres the code...sorry its still a bit sloppy but it compiles.(I did it in VS 2003).
Code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Threading;

		[STAThread]
		static void Main() 
		{
			Application.Run(new frmMain());
		}
		
		//declare class level variables
		bool bln_isFirst = true, bln_isMatch = false, bln_isSame = false;
		//create array to hold random numbers to randomize pics
		int[] intBoard = new int[43]; 
		//create array to hold random numbers to fill board array
		int[] intStorage = new int[250];
		//create arrays from files to hold high scores.
		int[] intHighScores = new int[3];
		string[] strUser = new string[3];
		//create int and file name variables to keep track of buttons, pictures, guesses, and score
		private int intCount1, intCount2, intCount3, intGuess, intScore;
		private string strFileName;
		private string ImgLocation;
		//declare random number object
		int intCount4, intCount5;
		Random generateRandom;
		
		private void ClickHandler(object sender, System.EventArgs e)
		{
			//button handler...temporarily set button to false visibility and not enabled
			Button tempButton = (Button)sender;
			intCount4 = tempButton.TabIndex-42;
			
			//store last int Count2 for checking match and button use.
			intCount3 = intCount2;
			//set random number for passing to find file name and 
			//add one to the index se we know how many buttons have been used
			intCount2 = intBoard[intCount4];
			ImgLocation = checkNumbers(intCount2);
			tempButton.Image = Image.FromFile(ImgLocation);
			tempButton.Enabled = false;
			buttonEvents(tempButton, intCount2, intCount3, intCount4);
			for(int i = 0; i < 10; i++)
			{
				System.Threading.Thread.Sleep(100);
			}
		}
		private void buttonEvents(Button tempButton, int intCount2, int intCount3, int intCount4)
		{
			if(bln_isFirst == true)
			{
				bln_isFirst = false;
				intCount5 = intCount4;
			}
			else
			{
				bln_isFirst = true;				
				bln_isMatch = checkMatch(intCount2, intCount3);
				// if not a match refresh buttons
				if(bln_isMatch == false)
				{
					tempButton.Enabled = true;
					tempButton.Image = null;
					_buttonArray[intCount5].Enabled = true;
					_buttonArray[intCount5].Image = null;
					intGuess -= 1;
				}
				else
				{
					intScore += 10;
				}
			}
			if(intGuess <= 0)
			{
				MessageBox.Show("game over");
				for(int r = 0; r < 42; r++)
				{
					_buttonArray[r].Enabled = false;
				}
			}
			else
			{
				//display the score and guesses left
				lblGuess.Text = "Trys Left: "+intGuess.ToString();
				lblScore.Text = "Score: "+intScore.ToString();
			}
		}

		private void frmMain_Load(object sender, System.EventArgs e)
		{
			newGame();
		}
		private void newGame()
		{
			intScore = 0;
			bln_isFirst = true; 
			bln_isMatch = false; 
			bln_isSame = false;
			

			//set high scores arrays from files and display on label
			try
			{
				StreamReader highScoresStreamReader = new StreamReader("C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\HighScores.txt");
				while(highScoresStreamReader.Peek() !=-1)
				{
					for(int a=0; a < 3; a++)
					intHighScores[a] = int.Parse(highScoresStreamReader.ReadLine());
				}
				highScoresStreamReader.Close();
			}
			catch
			{
				MessageBox.Show("File Reading Error1");
			}

			//set user array from files and display on label
			try
			{
				StreamReader userStreamReader = new StreamReader("C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\User.txt");
				while(userStreamReader.Peek() !=-1)
				{
					for(int a=0; a < 3; a++)
						strUser[a] = userStreamReader.ReadLine();
				}
				userStreamReader.Close();
			}
			catch
			{
				MessageBox.Show("File Reading Error1");
			}	
			lblHighScore.Text = "HighScores:    "+ strUser[0]+"..."+intHighScores[0];
			lblHighScore2.Text = strUser[1]+"..."+intHighScores[1];
			lblHighScore3.Text = strUser[2]+"..."+intHighScores[2];

			//set number of guesses
			intGuess = 13;
			//seed the random number function
			DateTime dtmCurrent = DateTime.Now;
			generateRandom = new Random(dtmCurrent.Millisecond);
			_buttonArray = new Button[42] {
											  btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9,btn10, 
											  btn11, btn12, btn13, btn14, btn15, btn16, btn17, btn18, btn19,
											  btn20, btn21, btn22, btn23, btn24, btn25, btn26, btn27, btn28,
											  btn29,btn30, btn31, btn32, btn33, btn34, btn35, btn36, btn37,
											  btn38, btn39, btn40, btn41};
			for(int i = 0; i < 42; i++)
			{
				this._buttonArray[i].Click += new System.EventHandler(this.ClickHandler);
				_buttonArray[i].Enabled = true;
				_buttonArray[i].Image = null;
			}
			//fill array with random #'s from 1 to 42
			int intAdd = 0;
			for(int r=0; r < 200; r++)
			{
				intStorage[r] = generateRandom.Next(1,43);
			}
			for(intCount1=0; intCount1 < 250; intCount1++)
			{
				bln_isSame = false;
				if(intAdd < 43)
				{
					//check to see if array contains generated #
					foreach(int intBoard1 in intBoard)
					{
						if(intStorage[intCount1] == intBoard1)
						{
							bln_isSame = true;
						}
					}
					//fill board array with random non matching #'s
					if(bln_isSame == false && intStorage[intCount1] != 0)
					{
						intBoard[intAdd] = intStorage[intCount1];
						intAdd++;
					}
				}
			}
		}
		private string checkNumbers(int intCount2)
		{
			//get file name for button image
			if(intCount2 == 1 || intCount2 == 2 || intCount2 == 3 || intCount2 == 4 || intCount2 == 5 || intCount2 == 6)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic1.bmp";
			}
			else if(intCount2 == 7 || intCount2 == 8 || intCount2 == 9 || intCount2 == 10 || intCount2 == 11 || intCount2 == 12)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic2.bmp";
			}
			else if(intCount2 == 13 || intCount2 == 14 || intCount2 == 15 || intCount2 == 16 || intCount2 == 17 || intCount2 == 18)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic3.bmp";
			}
			else if(intCount2 == 19 || intCount2 == 20 || intCount2 == 21 || intCount2 == 22 || intCount2 == 23 || intCount2 == 24)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic4.bmp";
			}
			else if(intCount2 == 25 || intCount2 == 26 || intCount2 == 27 || intCount2 == 28 || intCount2 == 29 || intCount2 == 30)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic5.bmp";
			}
			else if(intCount2 == 31 || intCount2 == 32 || intCount2 == 33 || intCount2 == 34 || intCount2 == 35 || intCount2 == 36)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic6.bmp";
			}
			else if(intCount2 == 37 || intCount2 == 38 || intCount2 == 39 || intCount2 == 40 || intCount2 == 41 || intCount2 == 42 || intCount2 == 43)
			{
				strFileName = "C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\pic7.bmp";
			}
			return strFileName;
		}
				
		private bool checkMatch(int intCount3, int intCount2)
		{
			//check to see if the images match and return true/false value
			bool blnMatch = false; 
			if(intCount2 >= 1 && intCount2 <= 6)
			{
				
				if(intCount3 >= 1 && intCount3 <= 6)
				{
					blnMatch = true;
				}
				
				else
				{
					blnMatch = false;
				}
			}
			
			else if(intCount2 >= 7 && intCount2 <= 12)
			{
				if(intCount3 >= 7 && intCount3 <= 12)
				{
					blnMatch = true;
				}
				else
				{
					blnMatch = false;
				}
			}
			
			else if(intCount2 >= 13 && intCount2 <= 18)
			{
				if(intCount3 >= 13 && intCount3 <= 18)
				{
					blnMatch = true;
				}
				else
				{
					blnMatch = false;
				}
			}
			
			else if(intCount2 >= 19 && intCount2 <= 24)
			{
				if(intCount3 >= 19 && intCount3 <= 24)
				{
					blnMatch = true;
				}
				else
				{
					blnMatch = false;
				}
			}
			
			else if(intCount2 >= 25 && intCount2 <= 30)
			{
				if(intCount3 >= 25 && intCount3 <= 30)
				{
					blnMatch = true;
				}
				else
				{
					blnMatch = false;
				}
			}
			
			else if(intCount2 >= 31 && intCount2 <= 36)
			{
				if(intCount3 >= 31 && intCount3 <= 36)
				{
					blnMatch = true;
				}
				else
				{
					blnMatch = false;
				}
			}
			
			else if(intCount2 >= 37 && intCount2 <= 42)
			{
				if(intCount3 >= 37 && intCount3 <= 42)
				{
					blnMatch = true;
				}
				else
				{
					blnMatch = false;
				}
			}
			return blnMatch;
		}

		private void mnuNewGame_Click_1(object sender, System.EventArgs e)
		{
			
			newGame();
		}

		private void mnuResetScore_Click(object sender, System.EventArgs e)
		{
			//write empty string to the user file
			StreamWriter NameStreamWriter = new StreamWriter("C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\User.txt",false);
			for(int p=0; p<3; p++)
			{
				NameStreamWriter.WriteLine("NAME");
			}
			NameStreamWriter.Close();
			
			//write 0 strings to the highscores file
			StreamWriter hScoreStreamWriter = new StreamWriter("C:\\Documents and Settings\\Owner.Gir\\My Documents\\Visual Studio Projects\\Memory\\HighScores.txt",false);
			for(int p=0; p<3; p++)
			{
				hScoreStreamWriter.WriteLine("0");
			}
			hScoreStreamWriter.Close();
		}

		private void mnuExit_Click_1(object sender, System.EventArgs e)
		{
			//close this application
			this.Close();
		}

		private void mnuAbout_Click(object sender, System.EventArgs e)
		{
			//display 'programmed by' message
			MessageBox.Show("Programmed by: Galen Goforth");
		}
	}
}
I took out the region of declaration of the objects cause it pretty self explanatory and kind of long...I probably should declare the buttons with the button array but I already had added them to the form. Looking back it would be nice to make it into a variable # of buttons grid in order to make the game harder or easier. I also didn't add any code to add high scores to the high score and user txt files cause i was still testing it and didn't really need it to work.
Attached Files To view attachments your post count must be 1 or greater. Your post count is 0 momentarily.

Last edited by gaylo565; 05-08-2008 at 02:41 PM.
Reply With Quote

Sponsored Links