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

luchhozito

IO

Recommended Posts

luchhozito

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

Share this post


Link to post
Share on other sites
nram

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

Share this post


Link to post
Share on other sites
luchhozito

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 ?

Share this post


Link to post
Share on other sites
nram

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...

Share this post


Link to post
Share on other sites
luchhozito

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:

Share this post


Link to post
Share on other sites
nram
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) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.