作者在 2008-06-14 19:14:00 发布以下内容
using System;
namespace puzzle
{
class MoveGridPuzzle
{
int[,] Grid = new int[3, 3];
string _ValidMove;
int CurRow, CurCol;
public MoveGridPuzzle()
{
Reset();
}
public void Reset()//如何把这个数组里面的数字变为一些随机的数,请高手帮我修改一下!
{
Grid[0, 0] = 0; Grid[0, 1] = 5; Grid[0, 2] = 8;
Grid[1, 0] = 7; Grid[1, 1] = 4; Grid[1, 2] = 3;
Grid[2, 0] = 2; Grid[2, 1] = 6; Grid[2, 2] = 1;
CurRow = 0; CurCol = 0;
SetValidMove();
}
public bool IsWon()
{
for (int i = Grid.GetLowerBound(0); i < Grid.GetUpperBound(0); i++)
{
for (int j = Grid.GetLowerBound(1); j <= Grid.GetUpperBound(1); j++)
{
if (i == Grid.GetUpperBound(0) && j == Grid.GetUpperBound(1))
{
return true;
}
else
{
if (Grid[i, j] != (i * 3) + j + 1)
return false;
}
}
}
return true;
}
bool IsMoveValid(string Move)
{
return (ValidMove.IndexOf(Move)) >= 0 ? true : false;
}
private string ValidMove
{
get { return _ValidMove; }
set { _ValidMove = value; }
{
class MoveGridPuzzle
{
int[,] Grid = new int[3, 3];
string _ValidMove;
int CurRow, CurCol;
public MoveGridPuzzle()
{
Reset();
}
public void Reset()//如何把这个数组里面的数字变为一些随机的数,请高手帮我修改一下!
{
Grid[0, 0] = 0; Grid[0, 1] = 5; Grid[0, 2] = 8;
Grid[1, 0] = 7; Grid[1, 1] = 4; Grid[1, 2] = 3;
Grid[2, 0] = 2; Grid[2, 1] = 6; Grid[2, 2] = 1;
CurRow = 0; CurCol = 0;
SetValidMove();
}
public bool IsWon()
{
for (int i = Grid.GetLowerBound(0); i < Grid.GetUpperBound(0); i++)
{
for (int j = Grid.GetLowerBound(1); j <= Grid.GetUpperBound(1); j++)
{
if (i == Grid.GetUpperBound(0) && j == Grid.GetUpperBound(1))
{
return true;
}
else
{
if (Grid[i, j] != (i * 3) + j + 1)
return false;
}
}
}
return true;
}
bool IsMoveValid(string Move)
{
return (ValidMove.IndexOf(Move)) >= 0 ? true : false;
}
private string ValidMove
{
get { return _ValidMove; }
set { _ValidMove = value; }
}
void SetValidMove()
{
string Move;
switch (CurRow)
{
case 0:
Move = "D";
break;
case 1:
case 2:
Move = "UD";
break;
default:
Move = "";
break;
}
switch (CurCol)
{
case 0:
Move += "R";
break;
case 1:
Move += "LR";
break;
case 2:
Move += "L";
break;
default:
Move = "";
break;
}
ValidMove = Move;
}
private int this[int row, int col]
{
get { return Grid[row, col]; }
set { Grid[row, col] = value; }
}
private void Play()
{
bool IsNotGameDone = true;
string MoveTo;
do
{
ShowGrid();
Console.Write("Enter your Move [L,R,U,D,E]: ");
MoveTo = Console.ReadLine().ToUpper();
if (IsWon())
{
Console.WriteLine("You Won the Game!!");
MoveTo = "E";
}
if (IsMoveValid(MoveTo))
{
switch (MoveTo)
{
case "L":
case "l":
SwapPosition(CurRow, CurCol, CurRow, CurCol - 1);
break;
case "R":
case "r":
SwapPosition(CurRow, CurCol, CurRow, CurCol + 1);
break;
case "U":
case "u":
SwapPosition(CurRow, CurCol, CurRow - 1, CurCol);
break;
case "D":
case "d":
SwapPosition(CurRow, CurCol, CurRow + 1, CurCol);
break;
}
SetValidMove();
}
else
{
switch (MoveTo)
{
case "E":
case "e":
IsNotGameDone = false;
if (!IsWon())
Console.WriteLine("You Lose the Game");
break;
default:
Console.WriteLine("Invalid Move or Choice");
break;
void SetValidMove()
{
string Move;
switch (CurRow)
{
case 0:
Move = "D";
break;
case 1:
case 2:
Move = "UD";
break;
default:
Move = "";
break;
}
switch (CurCol)
{
case 0:
Move += "R";
break;
case 1:
Move += "LR";
break;
case 2:
Move += "L";
break;
default:
Move = "";
break;
}
ValidMove = Move;
}
private int this[int row, int col]
{
get { return Grid[row, col]; }
set { Grid[row, col] = value; }
}
private void Play()
{
bool IsNotGameDone = true;
string MoveTo;
do
{
ShowGrid();
Console.Write("Enter your Move [L,R,U,D,E]: ");
MoveTo = Console.ReadLine().ToUpper();
if (IsWon())
{
Console.WriteLine("You Won the Game!!");
MoveTo = "E";
}
if (IsMoveValid(MoveTo))
{
switch (MoveTo)
{
case "L":
case "l":
SwapPosition(CurRow, CurCol, CurRow, CurCol - 1);
break;
case "R":
case "r":
SwapPosition(CurRow, CurCol, CurRow, CurCol + 1);
break;
case "U":
case "u":
SwapPosition(CurRow, CurCol, CurRow - 1, CurCol);
break;
case "D":
case "d":
SwapPosition(CurRow, CurCol, CurRow + 1, CurCol);
break;
}
SetValidMove();
}
else
{
switch (MoveTo)
{
case "E":
case "e":
IsNotGameDone = false;
if (!IsWon())
Console.WriteLine("You Lose the Game");
break;
default:
Console.WriteLine("Invalid Move or Choice");
break;
}
}
} while (IsNotGameDone);
}
void ShowGrid()
{
Console.WriteLine("+===+===+===+");
for (int i = Grid.GetLowerBound(0); i <= Grid.GetUpperBound(0); i++)
{
Console.Write("+");
for (int j = Grid.GetLowerBound(1); j <= Grid.GetUpperBound(1); j++)
Console.Write(" {0} +", this[i, j]);
Console.WriteLine();
}
Console.WriteLine("+===+===+===+");
}
} while (IsNotGameDone);
}
void ShowGrid()
{
Console.WriteLine("+===+===+===+");
for (int i = Grid.GetLowerBound(0); i <= Grid.GetUpperBound(0); i++)
{
Console.Write("+");
for (int j = Grid.GetLowerBound(1); j <= Grid.GetUpperBound(1); j++)
Console.Write(" {0} +", this[i, j]);
Console.WriteLine();
}
Console.WriteLine("+===+===+===+");
}
void SwapPosition(int FromRow, int FromCol, int ToRow, int ToCol)
{
int Temp;
Temp = this[FromRow, FromCol];
this[FromRow, FromCol] = this[ToRow, ToCol];
this[ToRow, ToCol] = Temp;
CurRow = ToRow;
CurCol = ToCol;
}
public static void Main()
{
MoveGridPuzzle GameObject = new MoveGridPuzzle();
GameObject.Play();
Console.ReadLine();
}
}
}
void SwapPosition(int FromRow, int FromCol, int ToRow, int ToCol)
{
int Temp;
Temp = this[FromRow, FromCol];
this[FromRow, FromCol] = this[ToRow, ToCol];
this[ToRow, ToCol] = Temp;
CurRow = ToRow;
CurCol = ToCol;
}
public static void Main()
{
MoveGridPuzzle GameObject = new MoveGridPuzzle();
GameObject.Play();
Console.ReadLine();
}
}
}