Click here to Skip to main content
15,893,161 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
C#
using System;
using System.Drawing;
using System.WinForms;
using System.Collections;
namespace ShuffleGame
{
	public class Shuffle:Form
	{
		private Label lbl1= new Label();
		private Label lbl2= new Label();
		private Label lbl3= new Label();
		private Label lbl4= new Label();
		private Label lbl5= new Label();
		private Label lbl6= new Label();
		private Label lbl7= new Label();
		private Label lbl8= new Label();
		private Label lblBlank= new Label();
		private int[,] pos= {{0,0,0},{0,0,0},{0,0,0}};
		private int ar,ac;
		private int Hits;
		private Label lblHits = new Label();
		
		private Hashtable value = new Hashtable();
		
		
		public static int Main(string [] args)
		{
			Application.Run(new Shuffle());
			return 0;
		}
		
		public Shuffle()
		{
			ar=2;
			ac=2;
			Hits=0;
			
			this.Text="Shuffle Game";
			this.BackColor=Color.RoyalBlue;
			this.Size=new Size(310,370);
			
			lbl1.Text="1";
			//lbl1.Location=new Point(0,0);
			lbl1.BackColor=Color.LightGray;
			lbl1.Size= new Size(90,90);
			lbl1.Font=new Font("Times New Roman",14);
			
			
			lbl2.Text="2";
			//lbl2.Location=new Point(100,0);
			lbl2.BackColor=Color.LightGray;
			lbl2.Size= new Size(90,90);
			lbl2.Font=new Font("Times New Roman",14);
			
			
			lbl3.Text="3";
			//lbl3.Location=new Point(200,0);
			lbl3.BackColor=Color.LightGray;
			lbl3.Size= new Size(90,90);
			lbl3.Font=new Font("Times New Roman",14);
			
			lbl4.Text="4";
			//lbl4.Location=new Point(0,100);
			lbl4.BackColor=Color.LightGray;
			lbl4.Size= new Size(90,90);
			lbl4.Font=new Font("Times New Roman",14);
			
			lbl5.Text="5";
			//lbl5.Location=new Point(100,100);
			lbl5.BackColor=Color.LightGray;
			lbl5.Size= new Size(90,90);
			lbl5.Font=new Font("Times New Roman",14);
			
			lbl6.Text="6";
			//lbl6.Location=new Point(200,100);
			lbl6.BackColor=Color.LightGray;
			lbl6.Size= new Size(90,90);
			lbl6.Font=new Font("Times New Roman",14);
			
			lbl7.Text="7";
			//lbl7.Location=new Point(0,200);
			lbl7.BackColor=Color.LightGray;
			lbl7.Size= new Size(90,90);
			lbl7.Font=new Font("Times New Roman",14);
			
			lbl8.Text="8";
			//lbl8.Location=new Point(100,200);
			lbl8.BackColor=Color.LightGray;
			lbl8.Size= new Size(90,90);
			lbl8.Font=new Font("Times New Roman",14);
			
			lblBlank.Location=new Point(200,200);
			lblBlank.Size=new Size(90,90);
			PlaceRandom();
			
			lblHits.Location=new Point(0,310);
			lblHits.Text="Hits so far ---> " +Hits.ToString();
			lblHits.BackColor=Color.LightGray;
			lblHits.Size=new Size(350,40);
			
			this.Controls.Add(lbl1);
			this.Controls.Add(lbl2);
			this.Controls.Add(lbl3);
			this.Controls.Add(lbl4);
			this.Controls.Add(lbl5);
			this.Controls.Add(lbl6);
			this.Controls.Add(lbl7);
			this.Controls.Add(lbl8);
			this.Controls.Add(lblHits);
			this.Controls.Add(lblBlank);
			this.MouseDown += new MouseEventHandler(Win_Click);
			this.KeyDown+=new KeyEventHandler(Win_KeyDown);
		}
		
		private void Win_Click(Object sender, MouseEventArgs e)
		{
			Random rnd=new Random();
			
			MessageBox.Show(rnd.Next(8).ToString());
			MessageBox.Show("Hello");
		}
	
		private void Win_KeyDown(Object sender, KeyEventArgs k)
		{
			int temp;
			switch(k.KeyCode.ToInt32())
			{
				case 38:
					//"Up"
					if(ar<2)
					{
						temp=pos[ar,ac];
						pos[ar,ac]=pos[ar+1,ac];
						pos[ar+1,ac]=temp;
						Swap(pos[ar,ac],temp);
						ar++;
						Hits++;
					}
					
					break;
				case 37:
					//"Left"
					if(ac<2)
					{
						temp=pos[ar,ac];
						pos[ar,ac]=pos[ar,ac+1];
						pos[ar,ac+1]=temp;
						Swap(pos[ar,ac],temp);
						ac++;
						Hits++;
					}
					break;
				case 39:
					//"Right"
					if(ac>0)
					{
						temp=pos[ar,ac];
						pos[ar,ac]=pos[ar,ac-1];
						pos[ar,ac-1]=temp;
						Swap(pos[ar,ac],temp);
						ac--;
						Hits++;
					}
					break;
				case 40:
					//"Down"
					if(ar>0)
					{
						temp=pos[ar,ac];
						pos[ar,ac]=pos[ar-1,ac];
						pos[ar-1,ac]=temp;
						Swap(pos[ar,ac],temp);
						ar--;
						Hits++;
					}
					break;
			}	
			lblHits.Text="Hits so far ---> " +Hits.ToString();
			Boolean same=true;
			String arrEle="";
			for(int ctr=1,i=0;i<3;i++)
			{
				for(int j=0;j<3;j++,ctr++)
				{
					/*if(j==2 && i==2)
					{
						if(pos[i,j]==0)
							same=true;
							break;
							
					}
					else if(pos[i,j]!=ctr)
					{
						same=false;
						break;
						
					}*/
					if(pos[i,j]!=ctr)
					{
						same=false;
						break;
					}
					arrEle=arrEle+"\t"+pos[i,j];
					
				}
				arrEle=arrEle+"\n";
			}
				
				if(same)
				{
					MessageBox.Show("You have finished the game in " + Hits.ToString() + " hits","End of Game",2);
				}
		}
		
		private void Swap(int vNum, int blank)
		{
			Point temp;
	
			switch(vNum)
			{
				case 1:
					temp=lbl1.Location;	
					lbl1.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 2:
					temp=lbl2.Location;	
					lbl2.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 3:
					temp=lbl3.Location;	
					lbl3.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 4:
					temp=lbl4.Location;	
					lbl4.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 5:
					temp=lbl5.Location;	
					lbl5.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 6:
					temp=lbl6.Location;	
					lbl6.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 7:
					temp=lbl7.Location;	
					lbl7.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
				case 8:
					temp=lbl8.Location;	
					lbl8.Location=lblBlank.Location;
					lblBlank.Location=temp;
					break;
			}
		}
		
		private void PlaceRandom()
		{
			int r,c;
			r=10;c=10;
			int i=0;
			ar=0;
			ac=0;
			Random rnd= new Random();
			int val;
			while(i<8)
			{	
				val=rnd.Next(9).ToInt32();
				if(numNotExists(val)==true && val>0)
				{
					pos[ar,ac]=val;
					
					switch(val)
					{
						case 1:
							lbl1.Location=new Point(c,r);
							
							break;
						case 2:
							lbl2.Location=new Point(c,r);
							
							break;
						case 3:
							lbl3.Location=new Point(c,r);
							
							break;
						case 4:
							lbl4.Location=new Point(c,r);
							
							break;
						case 5:
							lbl5.Location=new Point(c,r);
							
							break;
						case 6:
							lbl6.Location=new Point(c,r);
							
							break;
						case 7:
							lbl7.Location=new Point(c,r);
							
							break;
						case 8:
							lbl8.Location=new Point(c,r);
							
							break;
						default:
							
					}
					c+=100;
					ac++;
					if(ac>2)
					{
						ac=0;
						ar++;
					}	
					if(c>300)
					{
						c=10;
						r+=100;
					}
					i++;
				}
				else
					continue;
			}
			lblBlank.Location=new Point(c,r);
			pos[2,2]=9;
		}
		
		private Boolean numNotExists(int num)
		{
			for(int i=0;i<3;i++)
				for(int j=0;j<3;j++)
				{
					
					if(pos[i,j]==num)
						return false;
				}	
			
			return true;
		}
		
		
		
	}
}


its showing 12-15 errors its showing are u missing a using directive or an assembly reference
im using visual studio cmd because i cannot debug this code in visual studio can any one tell why???
Posted
Updated 22-Jun-14 2:14am
v2
Comments
[no name] 22-Jun-14 8:14am    
It is giving you that error because you are missing an assembly reference or a using statement. Why you think you cannot debug in Visual Studio is anyone's guess.
phil.o 22-Jun-14 8:15am    
What prevents you from debugging?

1 solution

Instead of the line
C#
using System.WinForms;
which produces the error
Quote:
The type or namespace name 'WinForms' does not exist in the namespace 'System' (are you missing an assembly reference?)

Use the correct version
using System.Windows.Forms;


That will get you down to only 4 compile errors.

The reason you can't debug is because the code won't compile (and therefore won't run and therefore cannot be debugged)

[Edit] - to carry on with solving the problems with your code...

The first of the now 4 errors reported is
Quote:
'System.Windows.Forms.Keys' does not contain a definition for 'ToInt32' and no extension method 'ToInt32' accepting a first argument of type 'System.Windows.Forms.Keys' could be found (are you missing a using directive or an assembly reference?)
ALWAYS address the first error in the list first - you often find that the subsequent errors change or go away entirely.

Double-click on the error and it will take you to the line
switch (k.KeyCode.ToInt32())
At first you might think that you need to put in a using directive, but fixing this is really a no-brainer - the error message has told you exactly what is wrong with this line of code... there is no such property or method .ToInt32 in System.Windows.Forms.Keys - so remove that bit of the lnie.

But when you remove the .ToInt32() you now get 7 errors instead of the expected 3!! This does not mean that you have broken anything by fixing that first error! Go to the line showing the first error
Quote:
Cannot implicitly convert type 'int' to 'System.Windows.Forms.Keys'. An explicit conversion exists (are you missing a cast?)
case 38:
     //"Up"
You could put an explicit cast in here e.g.
VB
case (Keys)38:
    //"Up"
but don't you think this looks much better?
case Keys.Up:
Replace all the errors in that switch statement with the correct Keys values and you will get down to 3 errors.

Follow the same approach as above to find the line causing the problem and read the error message carefully. With this error you have done something similar to our Keys problem - avoid using "magic" numbers, use the proper values ... in this case try to type the line in - don't copy and paste. As you type you will notice that the IDE gives you hints and help. Here's a hint for fixing the problem
Quote:
2 = AbortRetryIgnore if you use the correct type


That will leave you with one error left ... and you now know how to deal with that one.
 
Share this answer
 
v2
Comments
[no name] 22-Jun-14 12:33pm    
thanx man ur absolutely right but i am still not getting build option when i open the .cs file in visual studio also i cannot debug this in vs
i am still doing all this via cmd and its very hard and time consuming to count each line and find the probelm

still thanx for ur effort
[no name] 22-Jun-14 12:39pm    
if(same)
{
MessageBox.Show("You have finished the game in " + Hits.ToString() + " hits","End of Game",2);

}

this seems to be correct whats wrong then?
CHill60 22-Jun-14 12:53pm    
The third parameter of the MessageBox.Show method is not an integer - this line generates an error "Argument 3: cannot convert from 'int' to 'System.Windows.Forms.MessageBoxButtons'" Change it to MessageBoxButtons.AbortRetryIgnore
You should be doing your editing in Visual Studio - the intellisense would have helped you.
If you are not getting the "build option" then get that fixed. I presume you mean that "Build" does not appear on the Menu?
[no name] 23-Jun-14 13:01pm    
after changing System.Windows.Forms.MessageBoxButtons to MessageBoxButtons.AbortRetryIgnore
it shows non invocable member and MessageBoxButtons.AbortRetryIgnor cannot be used like a method

i cant replace it with anything else
CHill60 22-Jun-14 12:55pm    
To get Build back onto your menu bar, Select Tools, Settings and select "Expert Settings"

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900