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

link

apagar ecra e executavel

10 mensagens neste tópico

Cá estou eu outra vez, desta vez as dúvidas são as seguintes,

eu queria que por exemplo quando seleccionasse a opção desejada apagasse o menu e mostra-se a opção, e que a cada jogada que fizesse aquilo apagava o tabuleiro anterior e actualiza-se com o novo, ja estive a pesquisar na net mas infelizmente nao encontrei nada.

A outra é a seguinte, quando executo o .hs directamente e digito "main" o jogo decorre como eu quero, mas quando eu faço o executavel (ghc -o Nome --make nome.hs) isto mostra me o menu mas quando escolho a opção jogar nao me aparece a suposta linha "Indica a coluna onde quer jogar" em vez disso não me aparece nada e escrevo o numero da coluna e so depois é que aparece o texto e o tabuleiro desenhado, vou por aqui dois prints:

A executar o .hs

print1yf0.th.jpg

No executável gerado

print2vk4.th.jpg

Agradecia mais uma vez a vossa ajuda.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deves precisar de forçar a escrita do texto que enviaste para o stdout. Um hFlush deve resolver isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

muito obrigado pela ajuda Rui Carlos já está resolvido, em relação há outra dúvida há alguma maneira de fazer isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hmm eu tinha pensado nisso mas achei que podia haver uma opção do tipo clrscr() no haskell, obrigado mais uma vez pela ajuda

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes evocar o comando do SO para limpar a consola.

No Windows é o cls no linux o clear, acho eu...

Para evocares o comando só precisas de fazer import ao System.Cmd

E depois no código podes definir a tua função de limpar, visto que estás em windows por exemplo

clrscr = system "cls"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deves precisar de forçar a escrita do texto que enviaste para o stdout. Um hFlush deve resolver isso.

a sugestão da nossa prof para resolver isso foi usar no inicio do código a instrução

hSetBuffering stdout NoBuffering

eu também tinha esse problema e comigo resultou

quanto à função de limpar, eu achei preferivel escrever uns quantos '\n' (o suficiente para ocupar todas as linhas da consola maximizada). o problema desse system "cls" é que em linux e windows os comandos são diferentes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hSetBuffering stdout NoBuffering

eu também tinha esse problema e comigo resultou

Porque por default, está para a linha.
quanto à função de limpar, eu achei preferivel escrever uns quantos '\n' (o suficiente para ocupar todas as linhas da consola maximizada). o problema desse system "cls" é que em linux e windows os comandos são diferentes

Podes saber em que sistema a tua aplicação está a correr através da função 'os' do módulo System.Info, por exemplo

clrscr = if os == "mingw32"
         then system "cls" 
         else system "clear"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu para forçar a escrita fiz um import ao System.IO ( stdout, hFlush ) e depois por baixo da linha que queria escrever punha hFlush stdout, resultou assim também.

Quanto ao apagar o ecra, ja testei isso e resultou perfeitamente, muito obrigado Betovsky.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque por default, está para a linha.

Podes saber em que sistema a tua aplicação está a correr através da função 'os' do módulo System.Info, por exemplo

clrscr = if os == "mingw32"
         then system "cls" 
         else system "clear"

Boa!!! Ja tentei e está óptimo! Como diria o JBB "Bem jogado!" lolol

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