在C中在数组网格上移动对象

时间:2018-09-02 14:42:04

标签: c arrays

我创建了这个程序,该程序将对象放置在网格上。最终程序应从键盘输入并在网格上移动对象,现在我仅作一些测试以查看是否可以移动它。

使用srand将对象随机放置,我正在测试功能moveUp,以查看对象R是否已移动,但尚未移动。

示例:

  - - -                                             - - R
  - R -  After moveUp is executed, it should be ->  - - -                                                
  - - -                                             - - -

因为[1] [1]将导致[2] [2]。

尽管对象R并没有移动,但我认为麻烦在于编辑坐标ab,因为它们都应通过moveUp升级。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define X 3
#define Y 3

// Print the array
char printArray(char row[][Y], size_t one, size_t two)
{
   // output column heads
   printf("%s", "       [0]  [1]  [2]");
   // output the row in tabular format
   for (size_t i = 0; i < one; ++i) {
      // output label for row
      printf("\nrow[%lu] ", i);
      // output grades for one student
      for (size_t j = 0; j < two; ++j) {
         printf("%-5c", row[i][j]);
      } 
   } 
} 

int moveUp(int o, int t);


int main(void)
{  

   // initialize student grades for three students (rows)
   char row[X][Y] =  
      { { '-', '-', '-'},
        { '-', '-', '-'},
        { '-', '-', '-'} };

   int a, b;
   srand(time(NULL));


   a = (rand() % 3);
   b = (rand() % 3);


   // output the row
   char robot = row[a][b] = 'X';

   puts("The array is:");
   printArray(row, X, Y);
   printf("\n");



   a, b = moveUp(a, b);
   printArray(row, X, Y);
   /*
   while(h != '3'){


    switch (h) {


      case '1': 
        printArray(row, X, Y);
        break;

      case 'N':
        moveUp(a, b);
        printArray(row, X, Y);
        break;
    }
    scanf("%s", &h);

  }
  */

}

int moveUp(int o, int t)
{
  ++o;
  ++t;

  return o;
  return t;

}

1 个答案:

答案 0 :(得分:0)

我很确定您要做什么,但这可能有用:

void moveUp(char row[][Y],int * o, int * t)
{
    row[*o][*t] = '-';
    if(*o < X - 1)
        *o++;
    if(*t < Y - 1)
        *t++;
    row[*o][*t] = 'X';
}

然后使用它:

moveUp(row,&a,&b)