我正在制作一个“战列舰”游戏,在放置所有战列舰、开始游戏等之后,用户将输入“攻击坐标”,如果他击中一艘战列舰,那么棋盘将在坐标中显示“V”,如果没有任何战列舰,则显示“X”。
好吧,我做了那部分,这不是问题,我有4艘不同大小的船,要淹死这艘船,你必须击中它的所有部分(它的大小)。
例子:

4|*
3|  *
2|    *
1|
0|* * * *
  - - - - -
  0 1 2 3 4
Enter coordinates for attack
(0,4)

4|V
3|  *
2|    *
1|
0|* * * *
  - - - - -
  0 1 2 3 4
Enter coordinates for attack
(1,3)

4|V
3|  V
2|    *
1|
0|* * * *
  - - - - -
  0 1 2 3 4
Enter coordinates for attack
(2,2)

4|V
3|  V
2|    V
1|
0|* * * *
  - - - - -
  0 1 2 3 4

the battleship of size 3 has drowned!

如果4艘战舰淹死了,游戏就结束了!我只是检查一下
所有的战舰坐标都是“V”,如果是这样,战舰已经淹死了,但我想我的问题是,有不止一艘战舰,如果我每次检查都会说第一艘战舰淹死了。
我做了两个阵列,包含了船只的位置:
posX[] = {1,2,3,4}
posY[] = {1,2,3,4}

(指船舶位于(1,1)(2,2)(3,3)(4,4)位置,尺寸为4。)
我做的是这样的:
for (int i = 0 l i < 4 ; i++)
{
if (board[posX[i]][posY[i] == 'V')
{
count++;
}
}
if ( count == 4 ) printf("the battleship of size 4 has drowned\n");

我试了一些熟悉的方法来检查所有的坐标是否都是打印出来的,但都是一样的。

最佳答案

你需要保持每艘战舰的状态,比如isded[4]之类的。初始化为0。一旦一艘战列舰被宣布死亡,你就通知它已经死亡,将状态更改为1,稍后停止检查

关于c - 战舰游戏,C船沉没,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34439982/

10-09 04:19