基本的C编程生命游戏

时间:2013-01-25 14:48:15

标签: c windows

我的代码有问题。我有一个由用户调整大小的动态帧,他需要在此帧中输入一个单元格的位置。我的问题是,如何确保此职位有效或尚未输入?

以下是代码:

for (i = 0; i < a; i++)
{
    while (x < 1 || y < 1)
    {
        printf("Entrez les coordonnees de la cellule %d: ", i+1); //The user gives the position of the cell
        scanf("%d %d", &x, &y);
    }

    tab[x - 1][y - 1] = 1; //We affect 1 to the cell given by the user
}

2 个答案:

答案 0 :(得分:1)

您可以使用memset将整个tab矩阵设置为零,

这样当您想要查看用户是否已输入此坐标时,

你做if(tab[x-1][y-1] != 0),至于确保坐标有效,你可以做

while(true){
   ....
   scanf("%d %d", &x, &y);
   if(x > 1 && x < X_MAX && y > 1 && y < Y_MAX){
     if(tab[x-1][y-1] != 0)
        printf("This coordinate was already typed.\n");
     else
        break;
    }
 }
 tab[x-1][y-1] = 1;

X_MAX和Y_MAX指定tab矩阵的最大边界(大小)

答案 1 :(得分:0)

假设tab的大小分别为N和M,您可以这样做:

if (x < 0 || x>= N || y < 0 || y >= M) {
  printf("O-oh fell out of the field\n!");
  .. do stuff ...
}

至于是否已输入字段,您必须设置算法以记住已输入的字段。使用布尔值创建另一个矩阵,指示是否已输入字段,或使用某个哈希表存储输入的坐标对。