我创建了这个程序,该程序将对象放置在网格上。最终程序应从键盘输入并在网格上移动对象,现在我仅作一些测试以查看是否可以移动它。
使用srand
将对象随机放置,我正在测试功能moveUp
,以查看对象R
是否已移动,但尚未移动。
示例:
- - - - - R
- R - After moveUp is executed, it should be -> - - -
- - - - - -
因为[1] [1]将导致[2] [2]。
尽管对象R并没有移动,但我认为麻烦在于编辑坐标a
和b
,因为它们都应通过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;
}
答案 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)