Well, this sounds interesting. I've never created a Game but ....

To create the Grid you could use an array of Label controls. Draw a label on a Form which would represent the top left hand element of the Grid and set it's Index property to 0. This establishes the label as a Control Array. In your program, perhaps in the Form_Load event, you can dynamically create the rest of the grid by Loading each element and placing it in the appropriate position.

As for 'drawing' the ships, if you use a Label control the only thing you could do is to set the Caption property to a letter (or other character) (eg B = Battleship, C=Cruiser etc). If you wanted to really 'spice' it up, you could use an array of PictureBox'es and load graphics representing the parts of the ships - it depends upon how complex / how much work you want to put into it.

If I remember the game correctly, you can position the ships vertically, horizontally or diagonally. I think I'd create a random number between 0 and 3 with 0 = Vertical, 1 = Horizontal, 2 = Diagonal (top left to bottom right) 3 = Diagonal (top right to bottom left). Then I'd create a couple of random numbers, based upon the number of squares the ship wll occupy, which defines it's starting location (Row, & Column) and then 'draw' the ship. Repeating for all the ships.

This part might get a bit complicated as you have to consider things like, if you're drawing something which occupies 4 squares, and it's going to be horizontal, the starting Column has to be four less than the maximum column, so in an N X N Grid, the random number for the Column has to be between 1 and N-4, if drawing it vertically, the Row has to be between 1 and N - 4, if drawing diagonally, (top left to bottom right) the row has to be between 1 and N-4 and the Column has to be between 1 and N-4 and finally if drawing the other diagonal the row and column has to be between N and 4. (I might have got that wrong, it's early in the morning here, but, hopefully, you can see what I mean

You can set the limits with a simple Select Case statement once you've decided which direction you're going to draw. You will also have to check that any square the ship will occupy is not already occupied, but again, once you've established which direction you're going to draw it, it's quite a simple matter to check the surrounding squares.

There may be other 'niftier' ways but that is the approach I'd start with.

Good luck.