Tenho de fazer em linguagem C um interpretador para ler uma série de comandos os quais deverão executar uma acção, alguém conhece algum tutorial ou alguma informações pode onde me possa guiar?
Este interpretador tem a ver com o battleship puzzle, alguém sabe onde pode arranjar informações ou dicas de como programa-lo em C?
Peço desculpa por não me ter explicado corretamente.
O jogo battleship puzzle é um bocado semelhante ao sudoku na estratégia de resolução. Os barcos deverão ser dispostos numa grelha 10x10 e mediante certas informações como o nº de peças de em cada linha e coluna, o utilizador deverá conseguir determinar a posição de cada barco.
Não é criar o jogo propriamente dito, pois este "puzzle" é para um único jogador que terá de descobrir onde estão os barcos mediante algumas informações.
Mas para tal tenho de programar alguns comandos que ao serem digitados no executável deverão realizar certas acções como por exemplo: "c - Ler o tabuleiro a partir do standard input" ; "m - m Mostrar o tabuleiro no standard output", a minha dúvida é como é que podia fazer um interpretador para esses comandos
Não deu o padrão de interpretador de comandos nas aulas? Este é conseguido usando um ciclo while com uma condição de saída adequada.
Consideremos que a letra que se tem de escrever para sair é S. Presumo que o objectivo é o jogo começar de imediato...
O padrão de interpretador de comandos corresponde ao seguinte raciocício:
Enquanto o utilizador não pedir para sair {
//Faz qualquer coisa
}
A secção do enquanto é fácil de compreender que será um ciclo, e o mais apropriado a usar é o while. A condição de permanência do ciclo é o utilizador não premir S. Presumo que sabe como usar a função scanf, que é uma das formas de obter o input do utilizador.
Sem usar verificações de segurança, o código ficará algo do género:
Então, posso usar o código sugerido para fazer algo como "se o utilizador carregar c o programa apresenta o tabuleiro, se carregar b mostra a solução", isto claro remetendo para outras funções?
Desde já obrigado pelo ajuda, já foi uma boa indicação
Exactamente! No sítio onde coloquei "//faz qualquer coisa" irá verificar que tecla o utilizador premiu e agir de acordo com essa mesma tecla.
Uma nota final e importante: cometi um pequeno erro ao ler input do utilizador. Não estou a ler o "enter" (caracter '\n') que o utilizador poderá carregar para propagar a informação até ao programa. Dessa forma, usar scanf("%c",&c) pode causar problemas, e a forma correcta é scanf("%c\n",&c) se houver uma notação do género "o utilizador usará uma letra seguida de uma quebra de linha, sempre", ou
scanf(" %c\n",&c) para outros casos. Assim, de cada vez que uso a função scanf estou efectivamente a ler o caracter de fim de linha, representado por '\n'.