jeffmasterbee
(usa Ubuntu)
Enviado em 22/07/2011 - 08:45h
Galera, preciso fazer um script que tenha faça o seguinte:
Jogo de bingo, sendo que:
O script sorteia 6 números para o jogador (no caso para cada jogador), estes números não podem se repetir, tanto para a combinação de numeros de cada jogador, quanto para jogadores, sendo que, isto não pode ocorrer:
jogador1 = 6 36 21 28 36 12 (numeros repetidos no mesmo jogo de um jogador (número 36);
jogador2 = 8 45 13 29 6 15 (numeros repetidos entre jogadores (número 6);
Isto deve acontecer. para não haver a possibilidade de dependência de um número para mais de um jogador, pois teria chance de DRAW (empate).
Com os números definidos, o script deve sortear 1 número de cada vez, este número deve ser comparado ao jogo de cada jogador, e caso o jogador tenha o número sorteado em seu jogo, ele soma +1 ao valor de uma variável, se esta var chegar a 6, fim de jogo.
Eu tenho o seguinte feito, mas o estranho é que em apenas dois computadores ele funcionou, nos demais parte do código falha.
===============================================
#!bin/bash
echo "insira o numero de jogadores entre 2 e 4 "
read jogadores
while [ $jogadores -lt 2 ] || [ $jogadores -gt 4 ]
do
echo "Esta quantidade é inválida, digite um número entre 2 e 4 "
read jogadores
done
echo " Bem vindo ao BINGO"
#As seguintes linhas, são condições para quantidade de jogadores com entrada para o usuário definir os nomes dos jogadores.
#Para 2 jogadores.
if [ $jogadores -eq 2 ]; then
echo "Insira o nome do primeiro jogador: "
read primeiro
echo "Insira o nome do segundo jogador: "
read segundo
echo "$primeiro e $segundo, estão preparados (digite ""1"" - SIM ou ""2"" - NÃO)? "
fi
#Para 3 jogadores.
if [ $jogadores -eq 3 ]; then
echo "Insira o nome do primeiro jogador: "
read primeiro
echo "Insira o nome do segundo jogador: "
read segundo
echo "Insira o nome do terceiro jogador: "
read terceiro
echo "$primeiro, $segundo e $terceiro, estão preparados (digite ""1"" - SIM ou ""2"" - NÃO)? "
fi
#Para 4 jogadores.
if [ $jogadores -eq 4 ]; then
echo "Insira o nome do primeiro jogador: "
read primeiro
echo "Insira o nome do segundo jogador: "
read segundo
echo "Insira o nome do terceiro jogador: "
read terceiro
echo "Insira o nome do quarto jogador: "
read quarto
echo "$primeiro, $segundo, $terceiro e $quarto, estão preparados (digite ""1"" - SIM ou ""2"" - NÃO)? "
fi
#Preparados? 1=começar 2=loop
read digite
while [ $digite -lt 1 ] || [ $digite -gt 2 ]
do
echo "Esta quantidade é inválida, digite ""1"" - SIM ou ""2"" - NÃO "
read digite
done
if [ $digite -eq 1 ]; then
#INÍCIO TESTE.
#O treixo abaixo esta em teste e roda apenas separadamente, copie e cole o código até a linha #FINAL TESTE.
#começa sorteio das cartelas com variável especial $RANDOM.
#variáveis dos jogadores:
#$jogador_numero = nome do jogador
#$jogojog1 = cartela de numeros para cada jogador
#$ptsjog1 = quantida de pontos para cada jogador, com 6 pontos o jogador vence a partida
#$ptsjog1=0
#$jogojog1=0
#$sorteio=0
#============================================
#while [ $sorteio -ne 6 ]
#do
#echo $(((RANDOM % 60 + 1))) $(((RANDOM % 60 + 1))) $(((RANDOM % 60 + 1))) $(((RANDOM % 60 + 1))) $(((RANDOM % 60 + 1))) $(((RANDOM % 60 + 1))) | tr " " "\n" | sort -g | tr "\n" " " > numdo1
#sorteio=$(cat numdo1 | tr " " "\n" | sort -g | uniq | wc -l)
#done
#echo "Os números sorteados para $primeiro são: "
#$jogojo1 = cat numdo1
#echo ""
#fi
#rm numdo1
#echo "tchau"
#exit
=======================================
As linhas de comando com "#" são as linhas problematicas, por favor se alguém souber um modo de fazer esta idéia funcionar ficarei muito grato e darei os devidos créditos.
Agradeço desde já.