推箱子修改
以下代码仅为部分代码举例,具体请见项目。
1. 在静态类constant中定义所有数字常量,数字常量名全部为大写字母。
static class constant
{
//空地/墙/箱子
public const int BLANK = 0,WALL = 1,BOX = 3, DESTINATION = 0, PEOPLE = 6;
//箱子与目的地重合/人与目的地重合
public const int BOX_DES = 7,PEO_DES=9;
public const int EDGE = 30;
}
不要“从天上掉下来一个数”,修改前后的部分代码对比:
修改前
pictureBox1.Width = myArray.GetLength(1) * 30;
if (myArray[i, j] == 1)
{
image = new Bitmap("wall.png");
g.DrawImage(image, j * 30, i * 30, 30, 30);
}
修改后
pictureBox1.Width = myArray.GetLength(1) * constant.EDGE;
if (myArray[i, j] == constant.WALL)
{
image = new Bitmap("wall.png");
g.DrawImage(image, j * constant.EDGE, i * constant.EDGE, constant.EDGE, constant.EDGE);
}
if (myArray[next_row, next_col] == constant.BLANK)
{
myArray[next_row, next_col] = constant.WORKER;
if (myArray[now_row, now_col] == constant.WORKER)
{
myArray[now_row, now_col] = constant.BLANK;
}
else
{
myArray[now_row, now_col] = constant.DESTINATION;
}
}
else if (myArray[next_row, next_col] == constant.BOX && myArray[to_row, to_col] == constant.BLANK)
{
myArray[next_row, next_col] = constant.WORKER;
myArray[to_row, to_col] = constant.BOX;
if (myArray[now_row, now_col] == constant.WORKER)
{
myArray[now_row, now_col] = constant.BLANK;
}
else
{
myArray[now_row, now_col] = constant.DESTINATION;
}
2.重复代码的修改
利用逻辑上的规律,给新的变量赋不同的,使用相同的语句。
修改前
if (myArray[i