ARTICLE

Shuffle Game for Beginners

Posted by Hrishikesh Dhruv Articles | GDI+ & Graphics January 05, 2000
This code sample is a GDI+ shuffle game aimed for beginners. Attached zip file includes the exe and the Shuffle.cs file.
Reader Level:
Download Files:
 



This code sample is a GDI+ shuffle game aimed for beginners. Attached zip file includes the exe and the Shuffle.cs file.


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;
}
}
}

Login to add your contents and source code to this article
post comment
     
Posted by yasir arfat Mar 13, 2010

hi would you please send me the programe it doesn't work i need the forms and all stuff plz

Posted by aichane mourad Jan 09, 2010
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Join a Chapter