gpt4 book ai didi

C编程-战舰程序-如何防止舰船重叠?

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

我创建了一个程序,我可以在其中以随机方向(水平或垂直)在 2D 阵列的边界内随机放置两艘船。

我面临的唯一问题是试图防止船只重叠。

这是我的代码片段:

for ( row = 0; row < SIZE; row++ )
{
printf( "%c | ", a++ );

for ( column = 0; column < SIZE; column++ )
{
board[row][column] = ' ';

for ( i = 0; i < 4; i++ )
{
if ( battleship[i].column == column )
{
if ( battleship[i].row == row )
{
board[row][column] = 'B';
}
}
}

for ( i = 0; i < 5; i++ )
{
if ( carrier[i].column == column )
{
if ( carrier[i].row == row )
{
board[row][column] = 'A';
}
}
}

printf( "%c ", board[row][column] );
}

printf( "|\n" );
}

我如何检查船是否已经存在,如果存在,从头开始重新开始循环,清除现有值?

最佳答案

遍历棋盘上的每个点,然后检查棋盘上的那个点是否对应于战舰或航母的 4 或 5 个点,这会降低代码的效率。

为什么不用空白字符 ' ' 填充面板。然后循环遍历你的战舰和航母对象,检查战舰或航母要占据的棋盘上的点是否都是空的空间' '。如果它们要占据的都是空白区域 ' ',那么它什么也没有碰撞,您可以将棋盘点更改为 'A''B ' 相应地。如果确实发生碰撞,您可以随机生成该船的位置并再次检查。

关于C编程-战舰程序-如何防止舰船重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27086049/

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