Hi ,
I'm having ASP .NET course and in beginner level , it's too interesting and so powerful .
while my seeking for more information I found your website and it's so useful and helped me to understand unclear subjects .
I'm having a challenge to solve a Home Work , to build Fifteens game in ASP .Net using C# and Web Service , while the Web Service must handle the random fill of table , choose which buttons to be replaced and to visible or invisible and to check end of game .
I have build the Fifteens game in Default.aspx.cs which was my first home work and it's working great here it's :
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
private const int sizeBoard = 15;
private const int sizeRow = 4;
private int[] arrayIndex = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
protected void Page_LoadComplete(object sender, EventArgs e)
{
if (checkFinalGame())
showMessage();
return;
}
protected void Page_Load(object sender, EventArgs e)
{
createButton();
createTable();
if (!Page.IsPostBack)
{
TableBtn.BorderStyle = BorderStyle.Inset;
TableBtn.BorderWidth = Unit.Pixel(3);
initTable();
}
}
private void createButton()
{
for (int i = 0; i < sizeRow; i++)
{
for (int j = 0; j < sizeRow; j++)
{
Button dynamicButton = new Button();
dynamicButton.ID = i.ToString() + "," + j.ToString();
dynamicButton.Click += new System.EventHandler(dynamicButton_Click);
if ((i == sizeRow - 1) && (j == sizeRow - 1))
{
dynamicButton.Visible = false;
}
Controls.Add(dynamicButton);
}
}
}
private void createTable()
{
int rows = sizeRow;
int columns = sizeRow;
for (int i = 0; i < rows; i++)
{
TableRow newRow = new TableRow();
TableBtn.Controls.Add(newRow);
for (int j = 0; j < columns; j++)
{
TableCell newCell = new TableCell();
newRow.Controls.Add(newCell);
if (FindControl(i.ToString() + "," + j.ToString()) != null)
{
newCell.Controls.Add(FindControl(i.ToString() + "," + j.ToString()));
}
}
}
}
private void initTable()
{
int rows = sizeRow;
int columns = sizeRow;
Random random = new Random();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
Button btn = ((Button)(TableBtn.Rows[i].Cells[j].FindControl(i.ToString() + "," + j.ToString())));
if (!((i == sizeRow - 1) && (j == sizeRow - 1)))
{
Boolean flagExist = false;
int num = 0;
while (!flagExist)
{
num = random.Next(15) + 1;
if (arrayIndex[num - 1] == 0)
{
arrayIndex[num - 1] = i * sizeRow + j + 1;
btn.BackColor = System.Drawing.Color.FromArgb(random.Next(255), random.Next(255), random.Next(255));
btn.Text = num.ToString();
flagExist = true;
}
}
}
btn.Width = 50;
btn.Height = 50;
}
}
}
private TableCell getCell(String prmID)
{
int i = int.Parse(prmID.Substring(0, 1));
int j = int.Parse(prmID.Substring(2, 1));
try
{
return (TableCell)this.TableBtn.Rows[i].Cells[j];
}
catch
{
return null;
}
}
private Button getButton(String prmID)
{
int i = int.Parse(prmID.Substring(0, 1));
int j = int.Parse(prmID.Substring(2, 1));
try
{
return (Button)this.TableBtn.Rows[i].Cells[j].FindControl(prmID);
}
catch
{
return null;
}
}
private void dynamicButton_Click(object sender, System.EventArgs e)
{
int i = int.Parse(((Button)sender).ID.Substring(0, 1));
int j = int.Parse(((Button)sender).ID.Substring(2, 1));
String ID;
ID = (i).ToString() + "," + (j + 1).ToString();
if ((getCell(ID) != null) && (getCell(ID).Controls[0].Visible == false))
{
changeButton(((Button)sender).ID, ID);
}
ID = (i).ToString() + "," + (j - 1).ToString();
if ((j > 0) && (getCell(ID) != null) && (getCell(ID).Controls[0].Visible == false))
{
changeButton(((Button)sender).ID, ID);
}
ID = (i + 1).ToString() + "," + (j).ToString();
if ((getCell(ID) != null) && (getCell(ID).Controls[0].Visible == false))
{
changeButton(((Button)sender).ID, ID);
}
ID = (i - 1).ToString() + "," + (j).ToString();
if ((i>0) && (getCell(ID) != null) && (getCell(ID).Controls[0].Visible == false))
{
changeButton(((Button)sender).ID, ID);
}
}
private void showMessage()
{
ClientScript.RegisterStartupScript(typeof(Page), "confirm", "<script>var conf=confirm('End Game! Play Again');if (conf==true){ window.location = 'Default.aspx'}else{window.close();}</script>");
}
private Boolean checkFinalGame()
{
int index = 1;
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < 2; j++)
{
Button btn = ((Button)(TableBtn.Rows[i].Cells[j].FindControl(i.ToString() + "," + j.ToString())));
if (btn.Text != index.ToString())
return false;
index++;
}
}
return true;
}
private void changeButton(String PrevID, String NextID)
{
getButton(NextID).Text = getButton(PrevID).Text;
getButton(NextID).Visible = true;
getButton(NextID).BackColor = getButton(PrevID).BackColor;
getButton(PrevID).Visible = false;
}
}
I did learned about Web Service , and I did practice on it but I couldn't implement the required as above ,
Can you please help me ?
Thanks
Kasem