# Portable Game Notation

Portable Game Notation (PGN) (tradução livre do inglês: notação portável de jogos) é um formato de arquivo para computadores criado para o registro de partidas de xadrez. A grande maioria dos programas de computador para xadrez reconhece este formato popular devido à sua facilidade de leitura até mesmo por editores de texto simples, tais como o Bloco de Notas do Windows ou o KEdit do Linux.
O formato PGN foi desenvolvido tendo-se em mente uma fácil leitura e escrita por parte do usuário e acessibilidade e gravação pelos computadores. Os movimentos das peças do xadrez são descritos por meio do sistema algébrico abreviado, adotado como o sistema de notação oficial pela Federação Internacional de Xadrez (FIDE).
Existem dois formatos na especificação PGN, o formato de importação e o de exportação. O formato de importação descreve dados que podem ter sido preparados manualmente e é intencionalmente flexível; um programa que possa ler dados PGN deve ser capaz de lidar com o formato de importação flexível. O formato de exportação é bastante rigoroso e descreve os dados preparados por programas. As representações do formato de exportação geradas por programas diferentes no mesmo computador devem ser exatamente equivalentes, byte por byte.
O código PGN começa com um conjunto de pares de etiquetas (um nome e seu valor), seguidos de textos de jogadas (jogadas de xadrez com comentários opcionais).

## Pares de etiquetas

As etiquetas são definidas em pares, estes começam com um colchete esquerdo[, seguido pelo nome da etiqueta em texto simples (ASCII). O valor da etiqueta é colocado entre aspas duplas, e a etiqueta é fechada com um colchete direito ]. As aspas dentro de um valor de etiqueta são representadas pela barra invertida seguida imediatamente por aspas. Uma barra invertida dentro de um valor de etiqueta é representada por duas barras invertidas adjacentes. Não há códigos de controle especiais envolvendo caracteres de escape, carriage return ou quebras de linha para separar os campos.
Para armazenar a informação em formato PGN é necessário definir sete etiquetas, conhecidas juntas como STR (do inglês, Seven Tag Roster) que significa "lista de sete etiquetas". No formato de exportação, as etiquetas STR devem aparecer antes de qualquer outra etiqueta, nesta ordem:
* Event (Evento): O nome do torneio ou evento da partida.
* Site (Local): O local do evento. Está no formato Cidade, Região PAÍS onde PAÍS é o código do Comitê Olímpico Internacional de três letras para o país. Um exemplo é Rio de Janeiro, RJ BRA
* Date (Data): A data de início da partida, no formato AAAA.MM.DD. ?? é utilizado para valores desconhecidos.
* Round (Rodada): O ordinal da partida no contexto do evento.
* White (Brancas): O jogador das peças brancas, no formato Sobrenome, Nome.
* Black (Pretas): O jogador das peças pretas, mesmo formato que as brancas.
* Result (Resultado): O resultado do jogo. Só existem quatro possíveis valores: 1-0 (Brancas venceram), 0-1(Pretas venceram), 1/2-1/2 (Empate) ou * (outro, por exemplo, jogo ainda em andamento).
O padrão permite suplementação na forma de outras etiquetas opcionais. Os pares de etiquetas mais comuns incluem:
* Annotator (Anotador): A pessoa anotando a partida.
* TimeControl (Controle de tempo): por exemplo, 40/7200:3600 (movimentos por segundos: segundos para a morte súbita)
* Time (Horário): O horário em que a partida começou, no formato HH:MM:SS, no horário local.
* FEN: A posição inicial do tabuleiro de xadrez, na notação Forsyth-Edwards (NFE). É usado para gravar jogos parciais (começando em alguma posição inicial). Também é necessário para variantes de xadrez, como o Chess960, onde a posição inicial nem sempre é a mesma do xadrez tradicional. Se a etiqueta NFE for utilizada, a etiqueta SetUp também deverá aparecer e ter seu valor definido como 1.

## Texto de jogadas

Os texto de jogadas descrevem as jogadas reais do jogo. Isso inclui indicadores do número da jogada (um número seguido de um ou mais pontos) e o texto de jogadas no Sistema de Notação Algébrica (SNA).
Para a maioria das jogadas, o SNA consiste na abreviação de letra da peça, um x se houver uma captura, e o nome algébrico de dois caracteres da casa para a qual a peça foi movida. As abreviações de letras são K (king, ou rei), Q (queen, ou dama), R (rook, ou torre), B (bishop, ou bispo), and N (knight, ou cavalo). O peão recebe uma abreviação vazia no SNA, mas em outros contextos a abreviação P é usada. O nome algébrico das casas também seguem o sistema de notação algébrica; da perspectiva das peças brancas, a casa mais à esquerda mais próximo às peças brancas é a a1, a casa mais à direita mais próxima às peças brancas é a h1e a casa mais à direita (da perspectiva das brancas) mais próximo ao lado preto é a h8.
Em alguns casos, é necessária uma representação mais detalhada para evitar ambiguidade; nesse caso, a letra da coluna onde a peça se encontra, o número da fileira, ou a casa exata onde a peça foi inserida após o nome da peça movimentada (nessa ordem de preferência). Assim, Nge2 descreve que o cavalo, originalmente na coluna g, se move para a casa e2.
No SNA, o roque menor é indicado pela sequência O-O; o roque maior é indicado pela sequência O-O-O (observe que estes são O's maiúsculos e não zeros, ao contrário do padrão de notação FIDE). As promoções do peão são anotadas anexando = à casa de destino, seguido pela peça para a qual o peão é promovido. Por exemplo: e8=Q. Se a jogada for um xeque, + também será anexado; se a jogada for um xeque-mate, # será anexado. Por exemplo: e8=Q#.
Um anotador que deseja sugerir movimentos alternativos àqueles realmente jogados no jogo pode inserir variações entre parênteses.
Se o resultado do jogo for diferente de *, o resultado será repetido no final do texto de jogadas.

## Comentários

Comentários são inseridos com ; (um comentário que vai somente até o final da linha) ou um { (um comentário que continua até um }).

## Exemplo

No quadro abaixo podemos ver a rodada 29 da partida entre Bobby Fischer e Boris Spassky jogada em 1992 na Iugoslávia:
* [Event "F/S Return Match"]
* [Site "Belgrade, Serbia JUG"]
* [Date "1992.11.04"]
* [Round "29"]
* [White "Fischer, Robert J."]
* [Black "Spassky, Boris V."]
* [Result "1/2-1/2"]
* 1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15.Nb1 h6 16. Bh4 c5 17. dxe5 Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21.Nc4 Nxc4 22. Bxc4 Nb6 23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf7 27. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33.f3 Bc8 34. Kf2 Bf5 35. Ra7 g6 36. Ra6+ Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb5 40. Rd6 Kc5 41. Ra6 Nf2 42. g4 Bd3 43. Re6 1/2-1/2

## Programas que abrem, editam e salvam arquivos PGN

Programas para Microsoft Windows
* Chessbase
* ChessX
* Convekta Aquarium
* Convekta Chess Assistant
* Fritz GUI
* Hiarcs Chess Explorer
* Lokasoft Chesspartner
* Lucas Monge's Lucas Chess
* Martin Blume's Arena
* Shane's Chess Information Database
* Shredder UCI GUI
* Tarrasch Chess GUI
* Winboard
Programas para Linux
* ChessX
* Martin Blume's Arena
* Shane's Chess Information Database
* xBoard
Programas para Android
* Droidfish
* Gerhard Kalab's Chess PGN Master
* Aart Bik's Chess for Android
Programas para Mac OS
* ChessX
* Hiarcs Chess Explorer
* SCID vs Mac
Programas para iOS
* Giordano Vicoli's Chess-Studio

## Ver também​

* Notação algébrica de xadrez
* Código GBR
* FEN e X-FEN