• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

luchhozito

IO

14 mensagens neste tópico

boas eu estou a fazer um IO , entao eu tenho um menu principal

1- Jogar

2- Criadores

3- Regras

a 1 e a 2 quando as chamo aparece o menu correspondente, mas agora nas regras (menuRjogo) , fiz copy past do Criadores e so me da erros de "Parse error in pattern" .

menu :: IO ()
menu = do menuPrincipal
  putStr("\n>Opcao :")
  opcao <- getLine
  case opcao of
			"1" -> jogar tab1 1
			"2" -> menuCriador
			"3" -> menuRjogo
			"0" -> return () -- SAIR DO JOGO
			otherwise -> do putStr "\nOpccao Invalida ! \n"
					menu 


menuRjogo :: IO ()
menuRjogo = do putStrLn (" \n-------------------------------------------")
		putStrLn ("|              Regras do Jogo:                         |")
		putStrLn ("|-------------------------------------------|")
		putStrLn ("|                                                            |")
		putStrLn ("|                                                            |")  
		putStrLn ("|                                                            |")
		putStrLn ("|                                                            |")
		putStrLn ("|                                                            |")
		putStrLn ("|          texto                                           |")
		putStrLn ("|                 texto                                    |")
		putStrLn ("|                                                            |")
		putStrLn ("|                                                            |")
		putStrLn ("|   <Premir qualquer tecla para sair >            |")
		putStrLn ("|_________________________________________|")
		enter <- getLine
		menu

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código que tens aí em cima está mal indentado. Para além disso, penso que não tem mais problemas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

menu :: IO ()
menu = do 
  menuPrincipal
  putStr("\n>Opcao :")
  opcao <- getLine
  case opcao of
    "1" -> jogar tab1 1
    "2" -> menuCriador
    "3" -> menuRjogo
    "0" -> return () -- SAIR DO JOGO
    otherwise -> do putStr "\nOpccao Invalida ! \n"
  menu


menuRjogo :: IO ()
menuRjogo = do 
  putStrLn (" \n-------------------------------------------")
  putStrLn ("|              Regras do Jogo:                         |")
  putStrLn ("|-------------------------------------------|")
  putStrLn ("|                                                            |")
  putStrLn ("|                                                            |") 
  putStrLn ("|                                                            |")
  putStrLn ("|                                                            |")
  putStrLn ("|                                                            |")
  putStrLn ("|          texto                                           |")
  putStrLn ("|                 texto                                    |")
  putStrLn ("|                                                            |")
  putStrLn ("|                                                            |")
  putStrLn ("|   <Premir qualquer tecla para sair >            |")
  putStrLn ("|_________________________________________|")
  enter <- getLine
  menu

Penso que seja isto que queiras

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal eu tenho um tabuleiro no qual defini como uma lista de listas -> [Linhas]

eu tenho uma função que me diz quando o tabuleiro está cheio.

agora queria implementar essa funcao no IO , para quando alguem fizer a ultima jogada, depois de o tabuleiro ficar cheio aparece se "Jogo Terminado".

podem me ajudar ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a funcao para ver se o tabuleiro está cheio retorna um BOOL .. certo??

se isso acontecer dentro da funcao do jogo tens que meter o seguinte

jogar :: IO ()
jogar = do 
   if (tabuleiroCheio) 
     then putStr ("Jogo Terminado")
     else do 
         fazerJogada ..... etc ... etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jogar :: Tabuleiro -> Jogador -> IO()
jogar t j = do a <- jogarIO t j
       jogar a (player j)



jogarIO :: Tabuleiro -> Jogador -> IO(Tabuleiro)
jogarIO t j = do putStr (show t)
         putStr ("\nInsira a Coluna onde pretende jogar -> ")
         coluna <- getLine
         return (jogada t (read coluna) j) 

eu tenho esta duas funções. Agora tenho uma função que dado um tabuleiro diz se ele ta cheio ou nao (bool)

tenho outra que dado um tabuleiro , ele retorna um par (pontos player1, pontos player 2)

e tenho outro que recebendo esses duplo com os pontos dá uma string "ganhou x" ou "empate"

agora queria que se o tabuleiro ficar cheio , ele de um aviso , mostre as pontuações, e diga o vencedor.

estou a tentar mas n consigo por isso tudo.  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jogar :: Tabuleiro -> Jogador -> IO()
jogar t j = do 
  a <- jogarIO t j
  if (tabuleiroCheio)
     then do
       putStr ("Sai do jogo")
       -- podes meter a sair mais alguma coisa, ou chamar outras funçoes
       -- se nao quiseres tira o "do" depois do then
     else jogar a (player j)



jogarIO :: Tabuleiro -> Jogador -> IO(Tabuleiro) 
jogarIO t j = do putStr (show t)
            putStr ("\nInsira a Coluna onde pretende jogar -> ")
            coluna <- getLine
            return (jogada t (read coluna) j) 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora