domingo, 23 de novembro de 2008

Shell Script Euromilhões

Estava eu estudando um pouco de shell script, lendo a"man page" do comando Randon, que gera números aleatórios randonicos. E para consolidar o aprendizado, eu tento sempre, criar algum script que ponha a teoria em pratica.
Para o Random a ideia que me ocorreu na altura foi fazer um script que "sorteava" uma sequência de números. Por isso fiz um script que "sorteava" 5 números e 2 "estrelas" para o Euromilhões. Só que o script tinha um problema. Ele não descartava os números que já tinham saido. E as vezes, saiam números repetidos na mesma "chave". O certo é que o script já estava a ficar um pouco longo, e aí eu me lembrei que o comando sort poderia dar uma ajuda. E o script que já tinha algumas linhas acabou por se transformar em apenas uma :P E o curioso é que não usei o comando Random, mas sim a opção -R (random) do sort :P

A sorte poderá estar no seguinte comando:


seq 50 | sort -R | head -5 | sort -g; echo ""; seq 9 | sort -R | head -2 | sort -g


O seq 50 cria uma sequência de números de 1 até 50.
sort -R "baralha" a ordem dos números
head -5 como é lógico selecciona apenas o 5 primeiros números
sort -g é opcional, serve apenas para os números ficarem por ordem crescente
Depois é so repetir o comando para as estrelas, alterando apenas o seq para 9, e o head para 2.

Aqui fica um script mais indicado para os que não dispensam uma GUI (KDE ou Gnome)


#!/bin/sh
#tuxmind.blogspot.com
#seq 50 | sort -R | head -5 | sort -g; echo ""; seq 9 | sort -R | head -2 | sort -g
clear
echo "##############################################"
echo "######### Euromilhões ###########"
echo "##############################################"
echo "Numeros:"
NUM=`seq 50 | sort -R | head -5 | sort -g | fmt`
echo $NUM
echo ""

echo "Estrelas:"
EST=`seq 9 | sort -R | head -2 | sort -g | fmt`
echo $EST
echo ""

echo "Boa Sorte :)"
echo "##############################################"

gdialog --title Euromilhões --msgbox "Numeros: \n \n $NUM \n \n Estrelas: \n \n $EST \n \n Boa Sorte :)" ||
kdialog --title Euromilhões --msgbox "Numeros: \n \n $NUM \n \n Estrelas: \n \n $EST \n \n Boa Sorte :)"

exit


E não se esqueca de mim, se o script acertar no primeiro prémio :P

Assault Cube versão 1.0

Finalmente saiu a versão 1.0 do assaultcube.

A nova versão está cheia de novas funcionalidades. Quem jogou na versão 0.93 irá constatar que muita coisa mudou.

O jogo continua a ser leve, e corre bem em maquinas mais velhas. A largura de banda para jogar online continua muito eficiente, necessitando apenas de 56k, tal como acontecia na anterior versão. O tamanho do jogo que era de 19mb duplicou para os 40mb, mas ainda assim é muito pequeno, tendo em conta os novos ficheiros de áudio adicionados, e as novas texturas.

O que me chamou a atenção nesta nova versão, foram alguns efeitos como sombra, o novo "ambiente" sonoro, uma nova funcionalidade que permite assistir o jogo no modo "espectador", e um novo look and feel.
Os menus estão mais completos, estando disponível muitas opções que até a versão 0.93 só eram acessíveis através de linha de comando.

O server também teve melhorias. Há uma nova funcionalidade "server wizard", que é um script que ajuda a configurar o server. Ele ajuda a fazer as configurações que expliquei no post "assaultcube-numa-lan"

Após correr o server_wizard.sh, e responder as "perguntas" ele irá criar o script server_autognerated.sh que liga o seu server já com as suas configurações.

O jogo está disponível para Linux Mac e Windows.

Have fun :P