需要从X - D改变其网格的战舰游戏

时间:2011-11-22 07:18:49

标签: bash if-statement

我有一个使用bash脚本的程序

目的是将测试文件的输出显示为网格样式。

在我的output.txt中存储,直到$ l为a1,a2,a3,a4,c1,c2

我的下面有一个函数,它将显示以下内容

mark_seat() {

# Called by display_seats
if [ $(echo "$1" | grep -c "$2$3") -gt 0 ]
then    

    echo -en '\E[1;35mX\E[0m'
      set_colwidth "" 5

else

        set_colwidth "" 6 
fi

}

如果无法检测到我的$ l中的类似数据,它将给出如下所示的空格。

我的问题是可以将c1,c2设置为驱逐舰,因此当它显示输出时,它将显示“D”而不是“X”。

http://www.flickr.com/photos/70250115@N02/6381735021/

1 个答案:

答案 0 :(得分:0)

你可以用子串操作

来做到这一点

假设存储位置使得字符串表示行

A_ROW="____X_____"
echo ${A_ROW:0:4}D${A_ROW:5:4}
____D_____

然而,还有一个技巧可以让角色的位置连续

ASTRING="abcdefg"
POS_d=${ASTRING%d*}
echo position of d is ${#POS_d}
#note that POS_d is actually the string abc and ${#POS_d} is the length of abc
#since values start at 0, this is the position of d
#if you have multiple occurrences you can do this multiple times