gpt4 book ai didi

c - 如何继续搜索我的数组?

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:06 24 4
gpt4 key购买 nike

我正在制作“尖峰时刻”的一个版本,在该游戏中,您需要移动汽车,让特定的汽车通过。对于我的程序,如果用户输入...比方说 GR1(G 代表要移动的汽车,R 代表方向(右),1 代表在那个方向移动多少空间)那么汽车应该是 1右边的空间。我注意到对于我的程序,它只会移动汽车的一部分。我认为正在发生的事情是我的循环没有遍历我的整个数组。一旦它找到汽车的第一部分,它就会移动它,然后通过循环直接返回。如何移动整车?

这是它的外观示例:

--------
|GG...Y|
|P..B.Y|
|PRRB.Y>
|P..B..|
|O...TT|
|O.FFF.|
--------

//输入 GR1 应该给我

--------
|.GG..Y|
|P..B.Y|
|PRRB.Y>
|P..B..|
|O...TT|
|O.FFF.|
--------

//但给我这个

--------
|G.G..Y|
|P..B.Y|
|PRRB.Y>
|P..B..|
|O...TT|
|O.FFF.|
--------

//代码a和c是用户输入

 for(i=64; i>0; i--)
{
if(board[i] == a)// if user input is found checks board
{
a = i;
tmp = board[a];
board[a] = board[a+c];
//printf("The value of the swapping position is %c\n", board[a+c]);
if(board[a+c]!= '.' || board[a+c]=='|')
{
printf("Invalid move. exiting..\n");
return 0;
}
board[a+c] = tmp;
printf("the value of a is %c\n", a);
}
}

最佳答案

正如您在输入中给出的那样,G 位于 board[0] 和 board[1] 位置,对吗?但是当你循环遍历板时,你不会去板 [0] 因为被检查的条件是 i>0。因此板 [0] 位置的 G 没有移动。所以做出这个改变。

for(i=64; i>0; i--)

将 for 更改为

for(i=64; i>=0; i--)

请记住,数组索引是从 0 到 size-1 完成的。所以检查甚至大约 64。它是否为 array_size-1。
错误是语句 a=i

的原因
if(board[i] == a)// if user input is found checks board
{
a = i;

当第一次匹配到G时执行。由于 a=i 更改了 a 的值,因此 G 的其余部分未被检测到,因为 a != 'G' 不再是在获得第一个匹配 G 之后的 a=i。

使用一些其他变量并避免通过 a=i 改变 a 的值。或在得到匹配的'G'后,在下一次迭代开始前恢复a='G'的值。

关于c - 如何继续搜索我的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22125288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com