我用C语言编写了该程序,其中将对象$(command)
放置在网格上,并且应该从他们的键盘输入来进行移动。例如,如果您按N,就会发生这种情况。
R
所以R使它上升。对象必须在处移动,因此,例如,当它位于[A0] [B0]时,它需要一直向下移动[A2] [B0]。往上看。 它会上下左右移动。
现在我正在创建使它上移的功能,但是我遇到了很多麻烦:有时它会随机冻结为2:0和0:0而没有上升,并且当它在A = 2时,而不是在1时,它变为0,尽管我将其设置为2-1(要在其上必须减去1)。
我不明白是什么原因导致了这些麻烦,有什么建议吗?
0 1 2
0 - - - R - - - - -
1 R - - PRESS N -> GO UP -> - - - PRESS N AGAIN -> - - -
2 - - - - - - R - -
答案 0 :(得分:1)
在下面的代码中,您正在读取h
的值,然后再读取任何内容。如果h
的未初始化值恰好是3
,则执行将不会进入while循环。
char h;
while(h != '3')
因此,将值读入h
,然后在while
循环中进行检查。
在moveUp
函数中,可以使用ternary conditional运算符分配下一个位置或对象R
。
cord->a = (cord->a)? (cord->a - 1): 2;