Lost Password?

Go Back   CodeCall Programming Forum > Software Development > C# Programming

C# Programming C# (pronounced C-sharp) is a new object oriented language from Microsoft and is derived from C and C++. It also borrows a lot of concepts from Java too including garbage collection.

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 05-08-2008, 11:26 AM
gaylo565's Avatar   
gaylo565 gaylo565 is offline
Learning Programmer
 
Join Date: May 2007
Location: flagstaff, az
Posts: 65
Last Blog:
String Manipulation wi...
Rep Power: 6
gaylo565 will become famous soon enoughgaylo565 will become famous soon enough
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.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Sponsored Links
  #2 (permalink)  
Old 05-08-2008, 02:53 PM
Xav's Avatar   
Xav Xav is offline
Guru
 
Join Date: Mar 2008
Location: London, England
Posts: 2,969
Last Blog:
Piano Exam
Rep Power: 25
Xav is a name known to allXav is a name known to allXav is a name known to allXav is a name known to allXav is a name known to allXav is a name known to all
Send a message via MSN to Xav
Default Re: help finishing memory game

What's the error message?
__________________
Xav, the power of youth
Worship the Creator... not his creations
Web Site | Beta Site
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 05-08-2008, 10:16 PM
gaylo565's Avatar   
gaylo565 gaylo565 is offline
Learning Programmer
 
Join Date: May 2007
Location: flagstaff, az
Posts: 65
Last Blog:
String Manipulation wi...
Rep Power: 6
gaylo565 will become famous soon enoughgaylo565 will become famous soon enough
Default Re: help finishing memory game

no error messages...it compiles fine. The problem is when I run the new game method and start the new game the check match method doesn't work right. Instead of taking a guess away for a wrong selection it adds twice the points of a right selection and leaves the pictures visible.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Hacking Applications With Memory Editors TcM Security Tutorials 8 06-07-2008 12:52 PM
Paying for Links Chan Marketing 26 05-02-2007 08:37 PM
XBox 360 XNA Game Programming Jordan C# Programming 14 09-29-2006 05:10 PM


All times are GMT -5. The time now is 10:27 PM.

Contest Stats

John ........ 87.50000
dargueta ........ 75.00000
Xav ........ 50.00000
MeTh0Dz ........ 20.00000
gaylo565 ........ 18.00000
Johnnyboy ........ 3.00000

Contest Rules

Ads