# Manual do &kappname;

## Introdução

### Tipo de jogo:

Tabuleiro, Arcada

### Número de jogadores possíveis:

Quatro

O &kajongg; é um jogo de tabuleiro criado com base no famoso jogo oriental Mahjong (do Chinês 麻將). É jogado por quatro jogadores. Existem diversas regras de jogo disponíveis no mundo inteiro. De momento, o &kajongg; suporta as regras clássicas chinesas, que também são usadas na Alemanha; eventualmente, outros conjuntos de regras irão surgir, sendo possível também a configuração dos mesmos conjuntos. Por favor, faça-o e envie as modificações para o autor do programa, de modo a integrá-las!

O &kajongg; pode ser usado de duas formas diferentes: Pontuar um jogo manual, onde poderá jogar como sempre fez e usar o &kajongg; para o cálculo dos pontos e para registo. Por outro lado, poderá usar o &kajongg; para jogar contra qualquer combinação de jogadores humanos ou computorizados.

## A Disposição do Ecrã

Uma imagem do &kajongg; Imagem

Uma explicação rápida dos componentes do ecrã de jogo.

Barra de Ferramentas

- A barra de ferramentas localiza-se por baixo da barra de menu e contém botões para as acções usadas com maior frequência. O conteúdo da barra de ferramentas poderá ser editado; podê-lo-á tornar invisível também, ganhando mais espaço no tabuleiro.

Tabuleiro

- O Tabuleiro fica no centro do ecrã e é a maior secção da janela. Poderá ver as quatro paredes com uma extensão de 18 peças (poderá ser configurável, eventualmente). Os nomes dos jogadores estão escritos nas paredes, em conjunto com as suas peças de pontos cardeais. A parede prevalente tem um fundo colorido, que na imagem acima corresponde ao Este.

  quando estiver a jogar, o interior das paredes contém as peças descartadas pelos jogadores. Estas são colocadas de forma aleatória. A última peça eliminada tem um contorno a azul.

  Quando estiver a pontuar jogos manuais, o interior das paredes tem uma selecção com todas as peças disponíveis, o selector central. Podê-las-á atribuir aos jogadores com o rato ou com o teclado.

Região do Jogador

- Todos os jogadores têm um espaço no ecrã para as suas peças. A fila superior contém as peças expostas, enquanto a inferior contém as escondidas. No caso dos jogos de pontuação manual, as peças escondidas são apresentadas com uma sombra sobre a peça inteira. No exemplo, o Klaus tem um 'pong' escondido da pedra 9. As peças de bónus vão para o lado direito.

Janela

- A janela apresenta as escolhas que o jogador tem. Na maior parte dos casos, tem um tempo-limite com uma barra de progresso que apresenta o tempo que falta.

Barra de Estado

- A barra de estado localiza-se no fundo do ecrã e contém os totais actuais para os jogadores.

## Pontuar um Jogo Manual

Neste modo, o &kajongg; só é usado para calcular a pontuação. Joga como de costume, com pessoas reais numa mesa real e, no fim do jogo, poderá dizer ao &kajongg; as peças que um jogador tem na sua mão e toda a informação necessária para calcular a pontuação - que é o que o programa irá fazer. Em alternativa, poderá calcular manualmente os pontos da jogada e introduzi-los. O &kajongg; irá então fazer os pagamentos entre os vários jogadores e guardar os resultados numa base de dados. É possível suspender um jogo, iniciar outro com outros jogadores e prosseguir os jogos antigos. Todas as regras serão gravadas em conjunto com os jogos, de modo que possa jogar diferentes jogos com diferentes regras.

- A partir do menu, escolha Jogo / Jogo de Pontuação Manual ou carregue em &Ctrl;C.

- Para um jogo novo, associe os jogadores aos quatro ventos e seleccione o conjunto de regras desejado. O &kajongg; irá propor os mesmos valores que o jogo anterior. Se não existir nenhum jogo anterior, irá propor os primeiros quatro jogadores definidos. Lembre-se que não poderá alterar o conjunto de regras ou algumas destas regras após esta selecção. Se quiser rever ou modificar as regras de um jogo, faça-o de antemão no editor de conjuntos de regras.

- Agora irá obter uma nova janela chamada "Indique os resultados da jogada". Veja em Ter o &kajongg; a calcular a pontuação para obter uma descrição mais detalhada.

- Depois de gravar os resultados da jogada, continue com a jogada seguinte.

### Introduzir os resultados da jogada.

#### Pontuações

Uma imagem do &kajongg; Imagem

Esta é a janela para introduzir os resultados da jogada. Aparece automaticamente quando o &kajongg; pensa que poderá necessitar dela. Podê-la-á mostrar ou esconder sempre com a combinação de teclas &Ctrl;S ou seleccionando o item de menu correspondentes.

Como sempre, o vento prevalente tem o seu fundo colorido.

Aqui poderá introduzir manualmente as pontuações para todos os jogadores. Em alternativa, poderá definir exactamente as peças que um jogador tinha na sua mão. Se optar por fazê-lo, o campo correspondente para o valor da pontuação manual ficará desactivado, dado que o &kajongg; irá calcular automaticamente a pontuação.

Depois de ter introduzido todos os dados relevantes para uma ronda, carregue no botão Gravar a ronda. Os valores serão introduzidos na base de dados, sendo também inseridos na tabela de pontuações. Poderá ser questionado para mudar as posições dos jogadores, mas também pode optar por não mudar os lugares. As alterações propostas não podem ser personalizadas de momento - se um conjunto de regras necessitar de algo diferente, isso poderá ser alterado.

Se o jogador tiver ganho, a opção na coluna "Vencedor" ficará activa - carregue nesta para o vencedor.

A barra de estado irá mostrar agora os balanços para os jogadores, pelo que poderá depois prosseguir com a ronda seguinte.

##### Introduzir a pontuação manualmente

Um bom jogador irá provavelmente preferir calcular a sua própria pontuação. Nesse caso, podê-la-á introduzir directamente. Isto só é possível, desde que não tenha seleccionado nenhumas peças para este jogador.

Se introduzir uma pontuação manual, já deverá conter tudo excepto as penalidades, não tendo regras opcionais por onde escolher. Existe uma excepção, o "Jogo Perigoso". Isto não influencia nenhumas pontuações, assim como também é nenhuma ofensa. Significa apenas que o pagamento entre os jogadores é diferente: a pessoa ofensiva paga tudo por todos ao vencedor. Os outros dois jogadores não efectuam pagamentos entre si. Isto não é possível personalizar neste momento.

##### Deixar o &kajongg; calcular a pontuação

Se disser explicitamente ao &kajongg; as peças que um jogador apresenta, a introdução das pontuações ficará desactivada para esse jogador nesta janela. Enquanto associa as peças a um jogador, irá ver como a pontuação dele irá aumentar - contudo, assim que adicionar a 14ª peça, a pontuação vai a zero. Isso podê-lo-á surpreender mas, a menos que declare esta como sendo a jogada do vencedor, será reconhecida como uma jogada extensa, que terá sempre zero pontos. Este comportamento é definido pelo conjunto de regras chinesas clássicas, podendo ser diferente se usar um conjunto de regras diferente.

Poderá associar as peças e as combinações com um jogador, usando o rato, o teclado ou ambos. Atribua opcionalmente as peças aos jogadores, arrastando e largando-as no espaço do jogador. Ao largar a peça, ser-lhe-á questionado o que deseja mover: Simples, Par, Pung, Kong, Kong Pedido ou Chow. A fila superior serve para as peças expostas, enquanto a inferior serve para as escondidas. As peças de bónus irão aparecer no lado direito. Poderá também mover as peças entre filas, entre jogadores e para o selector central.

Se preferir usar o teclado, poderá usar o para mudar entre o selector central e as rondas dos jogadores. As teclas ESWN movem uma peça dos jogadores a Este, Sul, Oeste e Norte. A tecla xX repõe a peça de volta no selector central. O ESWN vai para o grupo escondido, enquanto o eswn vai para o grupo visível. Poderá mover o cursor entre as peças ou as combinações, usando as teclas de cursores, em que a peça ou combinação actual terão uma moldura azul. Dado que as teclas dos cursores estão distantes das letras no teclado, poderá também usar as teclas hjkl ou HJKL para mover o cursor. O hH move para a esquerda, o jJ para baixo, o kK para cima e o lL para a direita. Assim é como funciona o editor de Unix "vi". Estas teclas poderão ser diferentes de usar uma língua diferente do Inglês, mas não é possível de momento configurá-las.

As opções "Última Peça" e "Última Combinação" são necessárias por algumas regras, como a "última peça completa o par". Só podem ser usadas na jogada do vencedor.

Do lado direito, poderá aplicar manualmente algumas regras. As regras que aparecem nesta lista dependem do conjunto de regras actual e das peças. No exemplo da imagem acima, os jogadores perdedores poderão ter uma opção de "jogo perigoso" - que depende mais uma vez do conjunto de regras e das suas peças. O objectivo dos programadores é manter esta lista de regras a mais curta possível. Optimamente, o &kajongg; deverá ser sempre capaz de determinar automaticamente se uma regra se aplica, mas em alguns casos o &kajongg; não tem informação suficiente ou não é inteligente o suficiente para o decidir.

#### Penalidades

Uma imagem do &kajongg; Imagem

Na janela para introduzir os resultados da jogada, o botão de Penalidades irá invocar esta janela, na qual poderá introduzir as mesmas penalidades. Isto poderá ser feito em qualquer altura do tempo, independentemente do mecanismo de pontuação normal.

A lista ofensa mostra todas as ofensas que poderão ser aplicadas às jogadas que os jogadores efectuaram. Escolha uma entre elas.

Agora, poderá adaptar a Penalidade Total. Esta é a soma total que é movida entre devedores e credores. Poderá ser dividida por igual entre eles.

Dependendo do tipo de ofensa, o número de credores e devedores varia. O número correcto de listas é apresentado. Se escolher um jogador, o &kajongg; garante que este jogador só ocorre uma vez, alterando os outros jogadores.

## A reproduzir

### Jogar contra o computador

Em primeiro lugar, irá obter uma janela de autenticação. Indique o servidor do jogo a que se deseja ligar, bem como o seu nome de utilizador. Se escolher o item especial "Jogo Local", só terá de indicar o seu nome (ou aceitar o proposto) e o conjunto de regras desejado. Isto irá iniciar automaticamente um jogo local onde poderá jogar contra 3 jogadores por computador.

### Jogar com amigos

Se quiser jogar contra outras pessoas reais, irá necessitar de um servidor do jogo onde todos os jogadores, incluindo você mesmo, se terão de ligar. Faça-o, seleccionando outra máquina qualquer ou introduzindo manualmente o nome de uma nova máquina e indicando a sua senha para essa máquina. Será proposta a última senha usada.

Se não tiver uma conta nesse servidor com o nome que introduziu, ser-lhe-á questionado se deseja abrir uma conta. Caso responda afirmativamente, irá obter uma nova janela onde poderá introduzir duas vezes a senha desejada. A sua conta será criada automaticamente.

Depois de se autenticar com sucesso no servidor de jogos, irá obter uma lista das mesas com lugares disponíveis nesse servidor de jogos. Junte-se a uma mesa ou crie uma nova. Se criar uma nova, espere até que os outros lugares sejam ocupados por jogadores. Poderá iniciar o jogo numa mesa que tenha reservado em qualquer altura, sendo que os lugares não ocupados serão ocupados por jogadores computorizados.

A lista de mesas também mostra o nome do conjunto de regras jogado por essa tabela. O conjunto de regras e o seu nome são enviados para o servidor de jogos que inicia a mesa. Se tiver um conjunto de regras idêntico, a mesa mostra o seu nome para o conjunto de regras - isto poderá ser útil se a pessoa que iniciou a mesa fala outra língua, tendo dado outro nome ao conjunto de regras. Do mesmo modo, caso o nome do seu conjunto de regras local apareça, será apresentado a preto. Se porventura não tiver nenhum conjunto de regras idêntico, o nome aparece a vermelho, onde nesse caso poderá usar o botão Comparar para o comparar com os seus próprios conjuntos de regras.

Poderá iniciar o servidor de jogos do Kajongg de duas diferentes formas:

- ligue-se ao servidor "localhost". Este é o seu próprio computador. Se o fizer, e caso não tenha nenhum servidor a correr, este será iniciado automaticamente. Quando parar de jogar, o servidor será também interrompido.

- inicie manualmente um servidor em qualquer computador que desejar. Tudo o que precisa é ir a uma linha de comandos e iniciar o programa "kajonggserver". Se indicar "kajonggserver --help", apresentar-lhe-á todas as opções disponíveis, como a alteração do porto predefinido, que é o 8149. Este servidor irá executar até que o termine.

Em ambos os casos, terá de dizer aos outros jogadores como aceder ao seu servidor de jogos. Eles irão necessitar do URL, ou apenas do endereço IP e porto onde tem o seu servidor à espera de ligações. Poderá ser algo do tipo "meu-pc.dyndns.org:8149" onde o 8149 é o porto. Obviamente, terá de configurar a sua 'firewall', para que o jogador remoto se consiga ligar a esse porto. A comunicação será encriptada.

Se encontrar possíveis erros, poderá querer usar a opção "--showtraffic". Esta mostrar-lhe-á, na consola em que o servidor foi iniciado, as mensagens que seguem entre o servidor do jogo e os clientes.

#### Notas Importantes

- Se quiser ter a certeza de que ninguém fará batota, nenhum dos jogadores humanos deverá ter acesso ao computador onde está o servidor em execução. Obviamente, não poderá nunca evitar que dois jogadores se ajudem um ao outro, porque não pode saber o que realmente estão a fazer. Esses dois jogadores até poderão ser uma e a mesma pessoa.

### Como jogar

Ser-lhe-á questionado o que deseja fazer. Esta é uma pequena janela que poderá mover para onde quiser - a seguinte irá aparecer no mesmo sítio. Algumas janelas terão um tempo-limite - quando este expirar, a primeira resposta possível fica seleccionada automaticamente para si. Este tempo-limite é configurado no Editor de Conjuntos de Regras, em Opções, Tempo-Limite do Pedido. Todos os jogadores deverão ter o mesmo tempo-limite, o que explica porque isto faz parte do conjunto de regras.

Se precisar de seleccionar uma peça da sua jogada, poderá circular pelas peças com as teclas de cursor para a esquerda ou direita, ou então com as teclas 'h' e 'l', respectivamente. Obviamente, poderá usar também o menu.

Muitas das vezes, as janelas irão oferecer opções que não se aplicam de facto, como invocar um Pung quando não tem as peças necessárias. Isso é o desejado - como acontece num jogo real.

As peças descartadas são colocadas aleatoriamente entre as paredes. Algumas variantes do jogo definem onde deverão ser colocadas as peças, mas isso ainda não é configurável. Quando for, fará parte do conjunto de regras.

## Apresentação à Interface

### O Menu Jogo

Jogo Jogo de Pontuações Manuais

- Só pontuar um jogo executado manualmente.

  Poderá carregar um jogo antigo ou iniciar um novo. Por omissão, só os jogos pendentes (i.e., não terminados) aparecem na lista de selecção. Poderá mostrar opcionalmente todos os jogos, incluindo os terminados. Aqui poderá também apagar os jogos.

Jogo Jogar

- Jogar com outros jogadores (humanos ou computorizados)

Jogo Interromper

- Interrompe o jogo actual. Se foi um jogo manual apenas com pontuações, podê-lo-á prosseguir mais tarde. Se jogou com recurso ao &kajongg;, o jogo ainda não pode ser continuado.

Jogo Sair

- Sai do &kappname;.

### O Menu Ver

Ver Pontuação

- Janela de Pontuações: Mostra ou esconde a janela de pontuações. Esta janela está explicada aqui.

Ver Tabela de Pontuações

- Tabela de Pontuações Tabela de Pontuações Imagem Mostra a tabela de pontuações. A coluna mais esquerda, com os valores E,S,O,N mostra o ponto cardeal do jogador. A coluna ∆ mostra quanto o jogador ganhou ou perdeu nesta ronda. A coluna ∑ mostra o balanço total. As dicas dão-lhe mais detalhes: Mostram todas as regras que foram aplicadas a esta jogada.

  A parte inferior mostra o conjunto de regras usado. Entre a tabela de pontuações e a última regra usada, poderá encontrar uma divisória que lhe permite mudar os tamanhos relativos de ambas as partes.

Ver Explicar as Pontuações

- Explicar as Pontuações Tabela de Pontuações Tabela de Pontuações Explica como foi calculada a pontuação para a ronda actual.

### O Menu Configuração

Configuração Jogadores

- Adicione, modifique e apague jogadores.

Configuração Mudar o Ângulo Visual

- Altera o ângulo de visualização das peças no sentido anti-horário.

Configuração Modo de Ecrã Completo

- Muda entre o modo de ecrã completo e o modo normal.

Configuração Mostrar a Barra de Ferramentas

- Mostra ou esconde a barra de ferramentas.

Configuração Mostrar a Barra de Estado

- Mostra ou esconde a barra de estado.

Configuração Configurar os Atalhos...

- Mostra uma janela normal de configuração de atalhos do &kde; para mudar os atalhos do teclado do &kappname;.

Configuração Configurar as Barras de Ferramentas...

- Mostra uma janela normal do &kde; onde poderá configurar os ícones da barra de ferramentas.

Configuração Configurar o &kappname;...

- Abre uma janela de configuração para o &kappname;.

### O Menu Ajuda

&help.menu.documentation;

## Configuração do Jogo

Janela de Configuração Janela de Configuração

A opção de menu Configuração Configurar o &kappname;... abre a janela para Configurar o &kappname;.

Se carregar no botão Cancelar aqui, todas as suas alterações de configuração serão repostas, incluindo tudo o que fez com o editor de conjuntos de regras.

Poderá também seleccionar as diferentes páginas com o teclado: o &Ctrl;1 selecciona a primeira página com as opções para Jogar, o &Ctrl;2 selecciona a segunda página, e assim por diante.

### Opções de reprodução

Mostrar as sombras das peças

- Isto mostra as peças com contornos e sombras. Também existe algum espaço entre as filas de peças, sendo as peças das paredes apresentadas de forma que perceba que a parede tem duas ou três peças de altura. Por isso, se desactivar esta opção, terá uma apresentação mais simples, com peças ligeiramente maiores. Isto pode ser útil para ecrãs pequenos.

Reorganizar as peças escondidas em combinações

- Esta opção agrupa as combinações que um dado jogador possui. Em alguns casos, o agrupamento não será o que deseja, pelo que poderá preferir não ter qualquer agrupamento, tal como aconteceria num jogo real.

Usar os sons se possível

- Permite-lhe ouvir as eliminações e pedidos. Se os outros jogadores gravaram ficheiros de sons com a sua própria voz, podê-los-á ouvir assim.

Deixar os outros ouvirem a minha voz

- Se gravou ficheiros de som com a sua voz, esta opção permitirá aos outros jogadores ouvirem as suas eliminações e pedidos com a sua voz.

#### Som

É possível gravar ficheiros de som para os seus pedidos, os quais serão escutados pelos outros jogadores. É necessário todavia algum trabalho manual:

- Primeiro, terá de descobrir onde guardar os ficheiros com a sua voz. Normalmente, esta pasta é a '~/.kde/share/apps/kajongg'. Por isso, se o seu nome de utilizador for 'ze', poderá ser algo do tipo /home/ze/.kde/share/apps/kajongg. Aí dentro, irá encontrar a base de dados 'kajongg.db'.

- Na pasta que encontrou, crie uma nova sub-pasta chamada `voices`.

- Na pasta `voices`, crie outra sub-pasta com o nome do seu jogador. Este é o nome que usa ao ligar-se a um servidor de jogos. Poderá também querer definir vozes para os jogadores `ROBOT 1`, `ROBOT 2`, `ROBOT 3`.

- Nessa sub-pasta, poderá colocar os ficheiros de som. Terão de ser codificados com a compressão de áudio Ogg Vorbis, devendo os nomes dos ficheiros ter a extensão `.ogg`.

- Um ficheiro único tem um nome do tipo `s3.ogg` - esta é a Pedra 3. Poderá definir esses ficheiros para todas as peças, bem como para todos os pedidos e anúncios.

Certifique-se que a duração do som é curta mas emitida de forma clara - este jogo poderá ser jogado de forma muito rápida quando se habituar a ele. É mais fácil se escrever primeiro uma lista com tudo o que deseja falar. Não o leia como uma sequência de itens; tente pronunciar cada um deles como se fosse o único, ao jogar. A leitura disto necessita de alguma prática.

Esta é apenas uma possibilidade para criar os ficheiros de som:

- Grave um ficheiro de som com o programa `qarecord` e grave-o no formato `WAV`. Neste ficheiro de som único, emita logo todos os sons desejados.

- Edite esse ficheiro com o editor de sons `audacity`. Nesse editor, use o rato para marcar um intervalo nas ondas sonoras. O editor irá reproduzir apenas essa parte. Repita o procedimento até ter seleccionado a parte correcta. Isto será mais fácil se usar a opção Ver Ampliar. Use a opção Ficheiro Exportar a Selecção e grave no formato OGG. Nas Opções, escolha a qualidade baixa - esta é suficiente e, de certa forma, até desejável, porque reduz o tempo de transferência para os outros jogadores.

Estes são os nomes que deverá definir. Adicione sempre o `.ogg` a eles:

#### Nomes dos ficheiros de som

&s1; .. &s9; | Pedra 1 a Pedra 9
&b1; .. &b9; | Bambu 1 a Bambu 9
&c1; .. &c9; | Carácter 1 a Carácter 9
&we; &ws; &ww; &wn; | Os ventos de Este, Sul, Oeste e Norte
&db; &dr; &dg; | Os dragões azul/branco, vermelho, verde
&chow; &pung; &kong; &mahjongg; | Os pedidos principais
&originalcall; &violatesoriginalcall; | Pedido do original e a sua violação
&dangerousgame; | Um jogador deixou um canhão (jogo perigoso)
&nochoice; | Um jogador declara que não tem outra opção, a não ser fazer um jogo perigoso

### Opções das Peças

Editor de conjuntos de peças Editor de conjuntos de peças

Usar o selector de Peças para escolher os gráficos para as peças.

### Opções do Fundo

Selector do fundo Selector do fundo

Usar o selector do Fundo para escolher uma imagem de fundo para o jogo.

Alguns fundos, como a Paisagem Chinesa, levam algum tempo a carregar. Se achar que o programa deva iniciar mais depressa ou se o dimensionamento da janela leva muito tempo, poderá tentar outro fundo qualquer.

### Editor de Conjuntos de Regras

Editor de Conjuntos de Regras Editor de Conjuntos de Regras

Use o Editor de Conjuntos de Regras para personalizar as mesmas. Os conjuntos de regras predefinidos aparecem a itálico, enquanto os personalizados aparecem com um tipo de letra normal. Os conjuntos predefinidos não poderão ser alterados de forma alguma. Uma actualização do &kajongg; podê-las-á alterar. Os conjuntos de regras personalizados não serão alterados por nenhuma actualização.

Ao iniciar um jogo novo, poderá escolher um conjunto de regras para esse jogo. Todos os conjuntos de regras definidos no editor de conjuntos de regas poderão ser usados. O conjunto de regras é gravado em conjunto com o jogo, pelo que poderá alterar sempre os conjuntos de regras aqui - as suas alterações só irão afectar os jogos futuros.

#### Regra, Pontuação e Unidade

Basta fazer duplo-click sobre o item a alterar.

#### Definição

A definição de uma regra poderá ser relativamente complexa, pelo que existe um capítulo separado para este efeito, o Definir uma Regra. Não terá normalmente de alterar uma definição. Isto define essencialmente as jogadas em que a regra se aplica.

#### Copiar e Remover

Poderá copiar regras individuais dentro de um conjunto ou conjuntos de regras inteiros. Dado que os conjuntos predefinidos são imutáveis, as regras individuais só poderão ser copiadas para dentro de conjuntos de regras personalizados.

Poderá remover conjuntos inteiros ou regras individuais dentro dos conjuntos. Mais uma vez, isto até poderá ser feito se os jogos existentes usarem este conjunto, dado que cada jogo tem a sua própria cópia do conjunto de regras. Poderá ver os conjuntos de regras dos jogos antigos: Carregue o jogo antigo e mostre a sua tabela de pontuações.

#### Comparar

Comparador de Conjuntos de Regras Comparador de Conjuntos de Regras Poderá seleccionar este comando quando seleccionar um conjunto de regras inteiro. Permite-lhe comparar o conjunto de regras seleccionado contra qualquer outro conjunto de regras.

### Atalhos de Teclado por Omissão

A opção de menu Configuração Configurar os Atalhos... permite-lhe modificar os atalhos de teclado por omissão.

As combinações de teclas por omissão são as seguintes:

F1

- Mostra este manual.

&Ctrl;C

- Pontua um jogo manual.

&Ctrl;N

- Joga um jogo com outros amigos ou jogadores computorizados.

&Ctrl;W

- Interrompe o jogo actual.

&Ctrl;Q

- Sai do programa.

&Ctrl;T

- Mostra a tabela de pontuações.

&Ctrl;G

- Muda o ângulo de visualização.

&Shift;F1

- Ajuda O Que É Isto?

&Ctrl;&Shift;F

- Modo de Ecrã Completo

## Definir uma Regra

O motor de pontuações e muitos outros aspectos do &kajongg; poderão ser personalizados com o editor de conjuntos de regras. Uma regra consiste num nome, numa pontuação (incluindo a sua unidade) e uma definição.

### Grupos de Regras

Existem diversos grupos de regras:

Regras das Combinações

- As regras de combinações são aplicadas às combinações individuais, independentemente do resto da jogada.

Regras da Jogada

- As regras da jogada aplicam-se à jogada toda, incluindo todos os jogadores.

Regras do Mah Jongg

- As regras do Mah Jongg definem como deverá ser composta uma ronda vencedora. Normalmente são quatro combinações, com 3 ou 4 peças cada uma, e um par. Mas poderão existir outras rondas especiais e diferentes, como os 13 Órfãos no Chinês Clássico.

Regras do Vencedor

- As regras do vencedor aplicam-se à jogada inteira, mas apenas ao vencedor. Isto inclui a maioria das rondas especiais. Essas regras não têm de aplicar o número correcto de peças.

Opções

- Aqui poderá encontrar alguns parâmetros especiais, como os pontos para uma jogada limitada.

Penalidades

- As penalidades são aplicadas manualmente pelo utilizador.

#### Ordem de Execução

- crie uma lista de regras aplicáveis, a partir das regras de combinações e de jogadas

- descubra, usando as regras do Mah Jongg, se a jogada do vencedor declarado é realmente uma jogada vencedora.

- para o vencedor, aplique as regras do vencedor aplicáveis

- se alguma das regras tiver a acção '&absolute;', mantenha apenas essas. Ainda está por definir o que acontece, caso seja encontrada mais que uma.

- se alguma das regras definir limites, retire todas as outras

- aplique as regras encontradas por essa ordem

### A Definição

A definição é uma cadeia única de caracteres, dado que o objectivo é torná-la simples de ser gravada numa base de dados. Consiste em diversas partes separadas pelos dois caracteres "||". Uma parte expressa tanto uma condição sob a qual se aplica a regra ou expressa algumas acções. Só poderá ser definida uma parte para as acções, mas poderá definir várias para as condições. A regra aplica-se assim que pelo menos uma das expressões de condições corresponder à jogada.

O &kajongg; vem com dois conjuntos de regras predefinidos, que implementam exactamente as mesmas regras chinesas clássicas que se jogam também pela DMJL na Alemanha. Isto dever-lhe-á dar bastantes exemplos.

Estas são todas as partes reconhecidas:

Expressão Regular com Capitalização Variável

- Uma parte que comece por um I é uma Expressão Regular que não faz qualquer diferença entre maiúsculas e minúsculas.

Acção

- Uma parte que comece por A é uma lista de Acções.

Expressão Manual

- Esta é uma Expressão Regular opcional. Para os jogos de pontuação manual, define se esta regra deverá ser seleccionada pelo jogador assinalado. O M inicial não pertence à expressão regular. Um exemplo disto seria a regra "Última Peça Retirada da Parede Morta".

Expressão Regular

- Qualquer outra parte é uma Expressão Regular.

### Expressões Regulares

Uma expressão regular é uma ferramenta de programação muito poderosa para fazer a correspondência de cadeias de caracteres. É poderosa, mas também é bastante difícil. Não é para os jogadores normais. Existem livros disponíveis que não fazem mais nada a não ser explicar as expressões regulares.

Existem diversos dialectos para as expressões regulares. O &kajongg; está escrito na linguagem de programação Python. Dado que a biblioteca-padrão do Python contém um módulo para expressões regulares, é este que é usado.

Para mais detalhes, veja em

Tudo o que possa ter uma influência na pontuação de uma jogada é codificada como uma única cadeia de caracteres. Depois, o &kajongg; verifica se a expressão regular corresponde a esse texto. Se o fizer, a regra é aplicada.

Por exemplo, esta expressão regular corresponde à jogada por limite "Todos os Verdes":

    ( |[bB][23468]|[dD]g)*[fy/]

#### Estrutura do Texto de uma Jogada

O conteúdo do texto de uma jogada é sempre o mesmo, independentemente da língua que usar no seu ambiente de trabalho.

O texto que representa uma jogada consiste em diversos textos parciais, separados por um espaço. A ordem destas partes é sempre a mesma, exceptuando as combinações no início.

O &kajongg; é capaz de reagrupar as peças escondidas em combinações, com o objectivo de obter uma pontuação máxima. Não interessa como são agrupadas as peças para isto funcionar. Contudo, quando se relaciona com as as jogadas por limite, isto poderá falhar. É por isso que o &kajongg; irá tentar o agrupamento original das peças, tal como é introduzido pelo utilizador, bem como a variante reagrupada. Se algum deles corresponder à expressão regular da regra, esta aplicar-se-á. A variante que resultar na melhor pontuação é a escolhida.

Aqui vem um exemplo. Este está apenas numa linha, mas está aqui dividido por razões de legibilidade. Para além disso, esta frase está repetida uma vez, porque algumas expressões regulares são muito mais fáceis de escrever se as partes poderem ser referenciadas por outra ordem. Veja a regra Roubar o Kong: A sua expressão regular vê primeiro o grupo L (Última Peça) antes de olhar para as combinações.

    c1c1c1C1 s1s2s3 b6b6b7b7b8b8 b5b5 fn yn
    /c416s000b000b000b200 -C416s000b000b000b200 %n Mneka LB5B5B5

Uma peça é representada por 2 caracteres. O primeiro é o 's' para pedra, 'b' para bambu, 'c' para carácter, 'w' para vento, 'd' para dragão, 'y' para um bónus de estação e 'f' para um bónus de flor. O segundo é 1..9 para os naipes, e,s,w,n para os ventos e w,r,g para os dragões (branco, vermelho, verde). As peças visíveis têm o primeiro carácter em minúsculas, enquanto as escondidas o têm em maiúsculas.

Todas as partes seguintes estão sempre presentes por esta ordem, excepto a parte "Última Peça": Esta existe apenas para a jogada vencedora.

Combinação

- Uma parte que comece por um dos caracteres `s,b,c,d,w,S,B,C,D,W` é uma combinação. Uma combinação contém um número arbitrário de peças. O &kajongg; irá dividir as combinações com demasiadas peças, de modo a tentar maximizar a pontuação.

  É usada uma sintaxe especial para os 'kongs': o 'c1c1c1c1' é um 'kong' aberto. O 'c1c1c1C1' é um 'kong' aberto, onde foi pedida a 4ª peça, completando um 'pung' escondido. Isto é necessário para o jogo limitado 'jogo de cores verdadeiras escondidas'. O 'c1C1C1c1' é um 'kong' declarado escondido. O 'C1C1C1C1' seria um 'kong' não declarado e escondido. Contudo, dado que não está declarado, conta como um 'pung'. Como tal, esta combinação será dividida num 'pung' C1C1C1 e num C1 individual.

  As peças de bónus aparecem a seguir a todas as combinações.

Resumo

- Uma parte que começa por / contém a informação de resumo das combinações. Isto torna mais simples criar expressões regulares. Cada combinação é representada por quatro caracteres. O primeiro carácter é um de `sbcdwSBCDW`, correspondendo as minúsculas aos expostos e as maiúsculas aos escondidos. O segundo carácter é um número que diz quantas peças a combinação contém. Vai de 0, para um 'chow', e de 1 até 4 para um 'kong'. Os dois últimos caracteres contêm o valor desta combinação.

Resumo alternativo

- A parte que começa por '-' é idêntica ao resumo acima, mas contém os 'kongs' pedidos como 'kongs' escondidos. Algumas regras, como os "Três Pongs Escondidos", tratam um 'kong' pedido como escondido.

Comprimento da jogada

- A parte que começa por % contém informações acerca do comprimento da jogada: 's' é uma jogada curta com peças a menos, 'n' é uma jogada com o número correcto de peças e 'l' é uma jogada longa com peças a mais.

Mah Jongg

- Uma parte que começa por 'm', 'M' ou 'x' contém informações adicionais. O 'M' corresponde a uma jogada vencedora, enquanto o 'm' corresponde a uma jogada perdedora, e o 'x' corresponde a uma jogada proibida no Mah Jongg, por exemplo. O 'M'/'m'/'x' é seguido de um carácter para o próprio vento, um carácter para o vento prevalente, um carácter para a origem da última peça que conduziu ao Mah Jongg e um carácter para as declarações que um jogador fez.

  Estas são as origens possíveis da última peça: w=parede, d=descartado, e=beco sem saída, z=última peça do fim, Z=última peça descartada do fim k=roubar o kong, 1=benção da terra/céu. Os valores 'w' e 'd' são especiais - são de certa forma valores intermédios. Ao escolher uma peça escondida como última peça, a origem é mudada para 'w'. De seguida, diversas regras dizem que só são aplicadas se a última peça vier da parede. Como tal, isto permite uma melhor selecção prévia das regras manuais que se aplicam de facto. Para uma melhor compreensão, veja por favor as regras do manual e consulte a acção &lastsource;.

  Estas são as declarações possíveis: a=pedir ao início, t=sorte a dobrar.

Última Peça

- Uma parte que começa por L contém informações acerca da última peça. Primeiro vem a última peça propriamente dita, seguida da combinação que foi terminada com a última peça. É necessária esta última combinação para a regra "A Última Peça é a Única Possível", porque nem sempre é suficiente saber que é apenas a última peça. Lembre-se que a última combinação não poderá ser um Kong, porque se completar um Kong, terá de colocar uma peça de substituição.

Jogada Limitada por Pedido

- Isto ainda não está implementado mas poderá ser necessário para as regras que são definidas pela BMJA (na Inglaterra). Uma parte que começa por K contém todas as peças possíveis a verificar, caso sejam atribuídos pontos para um jogada limitada pedida. Poder-se-á usar a força bruta e verificar todas as peças, mas isso poderá levar bastante tempo.

### Acções

Todas as acções de uma regra estão definidas numa única sequência de texto. Estas são separadas por espaços. Algumas delas definem um valor.

&payforall;

- O jogador fez algo realmente errado, pelo que deverá pagar por todos. Mesmo assim, não é uma penalidade, dado que a soma dos pagamentos é a mesma - só o pagador é que muda. Do mesmo modo, os dois jogadores não envolvidos não efectuam pagamentos.

&payers;=X

- Define quantos pagadores esta regra de penalidade implica. O X é um número.

&payees;=X

- Define quantos receptores de pagamento esta penalidade implica. O X é um número.

&absolute;

- Esta regra define um pagamento absoluto. A pontuação da jogada é ignorada. Usado para as regras de penalidades.

&lastsource;

- Esta acção define a origem da última peça. É usada nas regras manuais como a "última peça de um beco sem saída". A definição da última origem com esta acção serve como filtro para outras regras - se só forem despoletadas para determinadas origens. Essas outras regras também poderão ser regras manuais, como é óbvio. Como tal, esta filtragem irá reduzir a quantidade de regras manuais que são apresentadas ao utilizador na janela de pontuação. Se isto parecer complicado, basta brincar um pouco com a janela de pontuações e ver as opções de marcação a aparecer ou a desaparecer, dependendo da origem da última peça.

## Problemas conhecidos

- Ainda não é possível ao próprio jogador abrir uma conta no servidor de jogos.

- No modo de jogo, as penalidades ainda não são possíveis.

- Os jogadores computorizados ainda são relativamente estúpidos.

- Os nomes dos jogadores computorizados ainda não podem ser configurados.

- Não é possível ainda prosseguir os jogos com o computador.

## Possíveis funcionalidades futuras

- Adicionar mais conjuntos de regras. Isto deverá ser feito opcionalmente pelas pessoas que usam esses conjuntos de regras com regularidade.

- Adicionar sons. Os pedidos de "Chow", &etc;, deverão ser sintetizados, bem como as peças que são eliminadas. Definir sons-padrão, mas possibilitar ao jogador gravar a sua própria voz.

## Perguntas mais frequentes

Quero alterar a forma como este jogo aparece. Posso fazê-lo?

Sim. Para mudar a aparência do &kappname;. use a opção do menu para abrir o utilitário de configuração.

Posso usar o teclado para atribuir peças aos jogadores?

Sim. Veja como Ter o &kajongg; a calcular a pontuação

## Créditos e Licença

O &kappname; para o &kde;

Programa com 'copyright' © 2009, 2010 de Wolfgang Rohdewald wolfgang@rohdewald.de

Documentação com 'copyright' © 2009, 2010 de Wolfgang Rohdewald wolfgang@rohdewald.de

Tradução de José Nuno Pires zepires@gmail.com

&underFDL; &underGPL;

## Instalação

use o pacote .deb de . Se não funcionar para si, poderá obter o kajongg-x-y.tar.gz no mesmo endereço e depois fazer o seguinte:

    tar xfz kajongg-x-y.tar.gz
    cd kajongg-x-y
    ./setup.py install

Em ambos os casos, terá de se certificar manualmente que os outros pacotes necessários estão instalados. O pacote da Debian ainda não contém esses requisitos. O &kajongg; necessita de: (pacotes correspondentes na Debian entre parêntesis)

- a biblioteca de jogos do KDE4 (libkdegames5)

- Python 2.5 ou superior (python)

- QT4.4 ou superior (libqt4-core, libqt4-gui, libqt4-svg, libqt4-sql, libqt4-sql-sqlite)

- as interfaces em Python para o QT4 (python-qt4, python-qt4-sql)

- as interfaces em Python para o KDE4 (python-kde4)

- a interface 'twisted' em Python (python-twisted-core)

- sqlite3 (libsqlite3-0)

&documentation.index;