Jump to content

Quebra de linha


Luch8
 Share

Recommended Posts

Boa tarde.. preciso de uma pequena grande ajudinha...  ?

preciso de fazer algo deste género:

[[' '],[' '],[' '],[' ']

[' '],[' '],[' '],[' ']

[' '],[' '],[' '],[' ']]

e para tal preciso de uma funçao que me dê uma quebra de linha.. um "\n"

é para criar um 4 em linha.. isso seria para desenhar o tabuleiro...

tenho alguma urgencia  :dontgetit:

muito obrigado...

Link to comment
Share on other sites

Se tens o teu tabuleiro definido através de um "data", para definires uma instância de Show (que serve para mostrar o tabuleiro de uma forma personalizada por ti, como é o caso) fazes:

data Tab a = Tab [[a]]

instance Show a => Show (Tab a) where
show (Tab t) = ... -- aqui defines como o teu tabuleiro vai ser mostrado
Link to comment
Share on other sites

entao o codigo para representar o tabuleiro seria:

module Segmentos where

data Tab a = Tab [[Char]]

instance Show a => Show (Tab a)

                  where show (Tab t) = [[' '],[' '],[' '], [' ']

                                                      [' '],[' '],[' '], [' ']

                                                      [' '],[' '],[' '], [' ']

                                                      [' '],[' '],[' '], [' ']

                                                      [' '],[' '],[' '], [' ']

                                                      [' '],[' '],[' '], [' ']

                                                      [' '],[' '],[' '], [' ']]

Link to comment
Share on other sites

Não, isso iria definir um tabuleiro de 7x4, em que não estás a mostrar nenhuma informação do tabuleiro, e além disso se alterasses o nº de colunas/linhas do tabuleiro, essa alteração não iria ser mostrada.

Mas para quem só tem 2 semanas de Haskell, isto já são assuntos mais avançados, acho que estás a cometer um erro de iniciante que é querer transpor para o modelo de dados a representação visual do teu produto final.

Link to comment
Share on other sites

Mas para quem só tem 2 semanas de Haskell, isto já são assuntos mais avançados, acho que estás a cometer um erro de iniciante que é querer transpor para o modelo de dados a representação visual do teu produto final.

sim.. deves ter razao...

mas preciso de ter o trabalho feito..

desculpa estar a incomodar mas qual seria a forma correcta de "descrever" o tabuleiro?

Link to comment
Share on other sites

Isso agora depende. Uma das formas é descreveres o tabuleiro como uma lista de listas, por exemplo. Isso agora já vai depender da forma como estás a implementar o problema. Se já tens os tipos de dados criados e se o que queres mesmo é ver o tabuleiro daquela forma no interpretador/compilador quando executas uma determinada função sobre ele, então a forma que eu indiquei através do show é a correcta.

Link to comment
Share on other sites

eu tinha feito isto:

jogada :: a -> Int -> [[Char]]

jogada quadro x | x==1 = [['x'],[' '],[' '], [' ']]

                          | x==2 = [[' '],['x'],[' '], [' ']]

                          | x==3 = [[' '],[' '],['x'], [' ']]

                  | x==4 = [[' '],[' '],[' '], ['x']]

                          | x==7 = [['o'],[' '],[' '], [' ']]

                          | x==8 = [[' '],['o'],[' '], [' ']]

                          | x==9 = [[' '],[' '],['o'], [' ']]

                          | x==0 = [[' '],[' '],[' '], ['o']]

para que cada tecla [1..4] e [7..0] funcionassem como forma de colocar uma peça.. com que entao isto tá errado?

:S nao percebo nada disto..  :wallbash:

Link to comment
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
 Share

×
×
  • Create New...

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.