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 14/11/2023, e os nomes dos componentes, bem como os respectivos cursos, devem ser enviados para meu e-mail até a meia-noite desta data (14/11/2023 - quatorze de novembro de dois mil e vinte e três). 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
ERICK DO CARMO FERREIRA SEARA
NICKSON FERNANDES SANTOS RODRIGUES
EROS MAURICIO FREITAS CARDEAL
ERICK SANTOS DE JESUS
MATHEUS DOS SANTOS NÔ
DANIEL DA SILVA REIS
FELIPE SOUZA BRITO
RUAN SANTOS BARBOSA
SAMUEL DIAS SIMÕES
LUIS VALDIR MOURA BIMBATO
FERNANDA CRISTINA SILVA COSTA
MARCELLE SILVA DE OLIVEIRA
EQUIPE COMPULSÓRIA
JOÃO MARCELO BLOEM PORTELA SILVA
MIKAEL RODRIGUES QUEIROZ ADAMI
RAFAELLY LOPES GUSMAO
AMANDA CARDOSO LOPES
IGOR DANIEL ROCHA DE JESUS
THIAGO BRAZ DOS SANTOS HALA