%% Autor: Daniel Besen, Filipe Ferreira, Ronaldo Campos.
%% Modificacao: Daniel Ricardo dos Santos, João Paulo Pizani Flor - 16/10/2008

:- dynamic praia/1, dir_vento/1, dir_ondulacao/1, temChuveiro/1, possuiMovimento/1, possuiNativos/1.

iniciar(_) :-
	lerArquivo(_),
	write('Para fazer uma busca, digite "busca." e para inserir nova praia digite "inserir."'), nl,
	read(Acao),
	realizarAcao(Acao).

realizarAcao(busca) :- 
	perguntaDirecaoVento(_),
	perguntaDirecaoOndulacao(_),
	perguntaChuveiro(_),
	perguntaPraiaMovimentada(_),
	perguntaLocalismo(_),
	definePraia(_).

realizarAcao(inserir) :- escreverNoArquivo(_).

escreverNoArquivo(_) :-
	write('Escreva as regras que deseja inserir na base de dados.'), nl,
	write('Sintaxe: praia(<nome_da_praia>) :- dir_vento([1-4]), 
	dir_ondulacao([1-4]), temChuveiro([1-2]), possuiMovimento(1-2), 
	possuiNativos([1-2])'), nl,
	open(dados, append, S),
	lerPraiaDoUsuario(S),
	close(S).

continuaEscrevendo(fim, _) :- !.
continuaEscrevendo(Predicado, S) :- 
	write(S, Predicado), write(S,'.'), write(S,'\n'),
	lerPraiaDoUsuario(S).

lerPraiaDoUsuario(S):- 
	read(Predicado),
	continuaEscrevendo(Predicado,S).


lerArquivo(_) :-
	write('Lendo a base de dados do arquivo'), nl,
	['dados'].


perguntaDirecaoVento(_) :-
	write('Bem vindo ao oráculo do surf. Descubra a sua onda perfeita.'), nl,
	write('Qual a direção do vento?'), nl,
	write('[1] norte'), nl,
	write('[2] sul'), nl,
	write('[3] leste'), nl,
	write('[4] oeste'), nl,
	readln(Line), nl,
	assert(dir_vento(Line)).

perguntaDirecaoOndulacao(_) :-
	write('Qual a a direção da ondulação?'), nl,
	write('[1] norte'), nl,
	write('[2] sul'), nl,
	write('[3] leste'), nl,
	write('[4] oeste'), nl,
	readln(Line), nl,
	assert(dir_ondulacao(Line)).

perguntaChuveiro(_) :-
	write('Ter chuveiro é necessário?'), nl,
	write('[1] SIM'), nl,
	write('[2] NAO'), nl,
	readln(Line), nl,
	assert(temChuveiro(Line)).

perguntaPraiaMovimentada(_) :-
	write('Gostaria de uma praia movimentada?'), nl,
	write('[1] SIM'), nl,
	write('[2] NAO'), nl,
	readln(Line), nl,
	assert(possuiMovimento(Line)).

perguntaLocalismo(_) :-
        write('Você é de Floripa? (Surfistas de fora não são bem recebidos em algumas praias.'), nl,
        write('[1] SIM'), nl,
        write('[2] NAO'), nl,
        readln(Line), nl,
        assert(possuiNativos(Line)).


definePraia(_):-
	write('Praias recomendadas: '), nl,
	praia(X),
	write('* ' ),
	write(X), nl,
	fail.


%% N = 1 S = 2 L = 3 O = 4
%% Sim = 1 Não = 2.
%% Praia Movimentada = 1 Praia não movimentada = 2
%% Possui nativos = 1 Não possui = 2


