Este texto é uma compilação minha do material disponível em http://megajogos.blog.br/2011/02/09/jogos-de-boteco-capitulo2-se-voce-nao-estiver-jogando-online-pode-jogar-onbar/
Para muitos, um dos ambientes mais saudáveis e produtivos para a mente humana é o bar. Num bar, quando se está sozinho, se pensa. Quando se está em grupo, se conversa. O contrário, por exemplo, da Televisão.
Incentivados pelo ambiente criativo, bem como pela abundância da matéria-prima, muitos jogos de boteco usam palitos de fósforo como equipamentos. Neste projeto vamos conhecer um deles: o NIM.
O NIM é um jogo bastante simples de jogar, embora exija raciocínios matemático e geométrico bastante razoáveis. Por isso, alguns teóricos recomendam que seja o primeiro jogo a ser jogado nos Happy Hours já que, depois de algumas cervejas, normalmente os jogadores não se mostram muito aptos a fazer cálculos e estratégias geométricas. Mas há estudos demonstrando exatamente o contrário.
A origem exata desse jogo não é muito conhecida, e é bastante discutida. Todavia, Martin Gardner, um autor Americano, descreveu o NIM em seu livro “Divertimentos Matemáticos”.
Segundo Gardner, o NIM surgiu há mais de 2 mil anos na China antiga, embora seus únicos registros históricos sejam de 1940, nos Estados Unidos, quando foi patenteada uma máquina chamada NIMATRON, que era instalada em bares e cassinos, desafiando as pessoas a jogar NIM contra a máquina.
Outro registro histórico famoso foi em 1951, no Festival Britânico, onde foi exibido um robô chamado Nimrod, que servia exclusivamente para jogar NIM com os visitantes da feira.
O NIM é jogado com palitos (de dente ou de fósforos) ou mesmo moedas, e começa com fileiras com os palitos, uma embaixo da outra. A quantidade de fileiras é variável, assim como a quantidade de jogadores.
Cada jogador tem direito a tirar quantos palitos quiser, mas somente de uma fileira de cada vez. Assim, pode-se tirar um único palito da fileira de 4, ou todos da fileira de 3, ou dois da fileira de 5, passando então a vez ao adversário.
Quem ficar com o último palito perde o jogo. Não há uma única disposição possível para os palitos, existindo variações a respeito. Contudo, em todas elas a regra básica é mesma.
Pode parecer fácil mas, segundo Martin Gardner, existem mais de 2 milhões de possibilidades de sequencias de jogo. Gardner, em seu livro, também mostra algumas fórmulas matemáticas e cálculos binários que garantem a vitória a quem tira o primeiro palito. Todavia, num bar, depois de algumas cervejas, são raríssimas as pessoas que conseguem fazer esses cálculos, ou usá-los, ou lembrar que tais artifícios existem. É exatamente aí que reside a diversão deste jogo. Todos jogadores acham que vão ganhar mas, a qualquer momento, podem ser surpreendidos por seus oponentes (talvez mais sóbrios) e perder de surpresa.
O projeto.
A ideia é desenvolver um programa que permita que dois jogadores possam jogar NIM, o jogo dos palitos.
O programa deve iniciar pedindo a quantidade de fileiras de palitos, e em seguida mostrar na tela um pequeno diagrama com pequenos traços verticais representando as fileiras de palitos. Inicialmente a primeira fileira deve possuir um palito e cada uma das demais fileiras deve possuir um palito a mais que a anterior.
Em seguida o programa solicita aos jogadores, alternadamente, que digam uma fileira e o número de palitos que devem ser removidos dela.
Naturalmente, o programa não deve aceitar uma fileira inexistente, ou uma quantidade de palitos maior do que a que está disponível naquele momento. Por exemplo, supondo que o diagrama represente o jogo da figura acima, não é admissível um jogador retirar palitos da fileira 6, ou 7, ou 0. Tampouco é possível retirar 0 palitos da fileira 4, ou 6 da fileira 5. Nestes casos, o programa re-exibe o diagrama com as fileiras e repete a solicitação ao jogador.
Quando uma jogada válida é apresentada pelo jogador, o programa deve mostrar o diagrama de palitos modificado, removidos os que foram retirados.
Vence o jogo aquele jogador que for obrigado a retirar o último palito, e o programa deve declarar o vencedor assim houver apenas um palito no diagrama. Caso algum jogador retire todos os palitos da última fileira existente (neste caso a estratégia para vencer seria óbvia), ele deve ser advertido de sua estupidez, e seu oponente é declarado o vencedor da partida.
O programa, com todas as funcionalidades desejadas, pode ser baixado aqui, em código binário (para Windows). Ele pode ser usado para entender melhor o jogo (embora para algumas pessoas este estudo seja de melhor aproveitamento quando feito numa mesa de bar), bem como para se observar todas as funcionalidades que devem ser implementadas.
IMPORTANTE: O objetivo é que seu programa seja implementado e funcione EXATAMENTE como o que está disponível aqui.
O trabalho deve ser desenvolvido em equipes, com no mínimo 1 e no máximo 4 componentes.
As equipes devem ser formadas até o dia 15/12/2017, e os nomes dos componentes, bem como os respectivos cursos, devem ser enviados para meu e-mail até a meia-noite desta data (15/12/2017 - quinze de dezembro de dois mil e dezessete). As pessoas cujo nome não aparecer em nenhuma das equipes até o final do prazo passarão a compor equipes compulsoriamente definidas por mim.
EQUIPES
Espontâneas
Amanda Oliveira Roseira da Silva
Denilson Encarnação
Isabelle Cruz
Erich Barreto
Bruno Webi
Daniel Lemos
João Vitor
Laio Rodrigues
Ian Robert
Lévison Côrtes Quadros Jr
Sávio Oliveira
Marcos Vinícios
Manoel Bispo de Santana Neto
Cauan Santos Guimarães
Elison Milchell de Araújo Portugal
Jéssica Santana Ferreira
Hellen Thalita
Nicole Rocha
Matheus Reis
Filipe Queiroz
Adriel soares
Vinicius Araújo
Lucas Franzman
João Marcos Nascimento
Camila Costa
Rudson Soares
Vitor Hugo Boaventura
Pedro Emmanuel Cavalcante Lucas Coelho
Lucas Passos.
Arielle Brazil
Bruno Barbosa Santana
Ícaro Vitório
Compulsórias
VICTOR DE AGUSTINHO SOARES FERREIRA
JOSAILTON GUIMARÃES DOS SANTOS
LEONARDO DOS SANTOS VAZ
JOAO PEDRO BORGES HOMEM DEL REY
IZRAÍAS DE JESUS SANTOS
WELLINGTON CEZAR REIS DOS SANTOS
LUIZ ALBERTO HERINGER SALES
SABRINA PEREIRA FARIAS FERNANDES