Trabalho: batalha naval

Descrição

Implemente um jogo de batalha naval. O jogo deve aceitar conexões via rede, e deve funcionar com vários jogadores. Algum jogador deve iniciar o jogo, enviando via rede o comando

CRIA x y
onde x e y são o tamanho do tabuleiro. Os outros jogadores vão se juntando ao jogo, e quando um deles dá o comando "INICIE", o jogo começa.

Há tres tipos de jogo:

Faça também um robô que joga aleatoriamente, para testes.

O servidor deve aceitar estes comandos:

CRIA x y
INICIE
JOGA x y
MOSTRA
O comando "JOGA x y ataca a posição (x,y). O comando MOSTRA, obviamente, mostra a visão daquele jogador (ele vê seus navios e os que acertou).

Quando um jogador chega, o sistema responde:

NENHUM JOGO
se ninguém tiver dado o comando CRIE, ou
JOGO PREPARADO M N
Se o comando CRIE já tiver sido dado. M e N são as dimensões do tabuleiro.

O tabuleiro é gerado automaticamente pelo sistema.

O tabuleiro é mostrado em ASCII. Os seus próprios navios são "*". Os de cada adversário são mostrados com caracteres diferentes. Os lugares que o jogador já atacou, mas que só tinham água, são mostrados como "+"

. . . . . . . . . .
. . . . + . * * * .
* . . + A . . . . .
. + B + A + . + . .
. . . . . . . . . .
B . . + . . + . . .

Neste exemplo, o jogador já atacou dois navios de B e um navio grande de A.