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 16/11/2012, e os nomes dos componentes, bem como os respectivos cursos, devem ser enviados para meu e-mail até a meia-noite desta data (16/11/2012 - dezesseis de novembro de dois mil e doze). 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
Eng. Civil
Equipe 13
(compulsória)
Augusto C. Sobrinho
Irlana L. Salvador
Eng. Mecânica