I'm now trying to put coordinates in variables as someone suggested.
That was me.
I was working on a really nice verbose reply, then my blackberry browser crashed and I lost it all... so no more of that. lol!
There are a couple more suggestions I have too...
1) I'd recommend using row numbers 0-9 rather than 1-10. Just personally I think it would be easier to work with and wouldn't run the risk of a 3rd character ever being an issue.
2) In the normal game Battleship, you can align your ships either vertically (along columns only) or horizontally (along rows only). But you can have some ships one way, and some the other. For simplicity's sake I'd recommend writing your script to only use one of the alignments. This way you don't have to worry so much about ships overlaying each others' coordinates. Although, you will still have that as a problem, it is not as much of an issue only using this method. Plus it makes it easier to write the computer "player's" logic if you're doing that.
3) I don't remember if you can put wildcards into a FOR loop in this way or not (TBH I have kind of avoided FOR for a while cause I didn't really understand it until recently), but I was thinking something like this to check your coordinates (once they are bound to a variable):
FOR %%a IN (A*, B*, C*, D*, E*, F*, G*, H*, I*, J*) DO (IF '%%a'=='%shot%' goto %hit%
I think that get's the concept across. However, that only works nicely if A) you can use a wildcard there, and B) if your variables are kept to 3 characters (as a third could cause problems later if not here).
If that didn't work, you could make several small sections like this:
:A_checker
REM check column A
set /a row=0
:checker_sub
set coord=A%row%
if '%coord%'=='%shot%' goto HIT
set /a row=%row%+1
if '%row%'=='10' goto B_checker
goto checker_sub
anyway, just some ideas.
Again though, I haven't taken the time to try any of this - so I'll assume if you do try it that you adopt proper syntax.