segunda-feira, 7 de maio de 2012

Comando TAR


Tar é uma ferramenta utilizada em sistemas operacionais baseados no Unix, como o GNU/Linux, para o empacotamento, e para a compressão de arquivos, respectivamente. 
Parâmetros:
  • -c - cria um novo arquivo tar;
  • -M - cria, lista ou extrai um arquivo multivolume;
  • -p - mantém as permissões originais do(s) arquivo(s);
  • -r - acrescenta arquivos a um arquivo tar;
  • -t - exibe o conteúdo de um arquivo tar;
  • -v - exibe detalhes da operação;
  • -w - pede confirmação antes de cada ação;
  • -x - extrai arquivos de um arquivo tar;
  • -z - comprime ou extrai arquivos tar resultante com o gzip;
  • -j - comprime ou extrai arquivos tar resultante com o bz2;
  • -f - especifica o arquivo tar a ser usado;
  • -C - especifica o diretório dos arquivos a serem armazenados.

Exemplos

  • Para compactar arquivos no formato TAR.GZ usando use:
tar -zcvf arquivos.tar.gz arquivos/

  • Para compactar arquivos no formato TAR.BZ2 usando use:
tar -jcvf arquivos.tar.bz2 arquivos/

  • Para descompactar arquivos no formato TAR.GZ, no diretório corrente:
tar -zxvf arquivos.tar.gz

  • Para descompactar arquivos no formato TAR.BZ2, no diretório corrente:
tar -jxvf arquivos.tar.bz2

domingo, 6 de maio de 2012

Python Scripting para a Blender Game Engine

No tutorial de iniciação Python da BGE você vai aprender como usar Python scripting no Blender 2.6, para fazer um movimento do carro, e parar aumente a velocidade. Este tutorial vai te ensinar o básico da linguagem Python para a game engine do Blender, incluindo acesso e alteração de informações dos tijolos lógicos, por meio de scripts. Antes de começar, se você é novo em Python, e para mais informações gerais sobre Python, incluindo formatação, declarações, funções, blá, blá, confira Guia do Iniciante em Python

Clique aqui para baixar o arquivo mistura . Este arquivo é o produto acabado e não é necessário fazer o download, a fim de fazer o tutorial. Todos os modelos e texturas embalados no arquivo de lote são seu para fazer o que quiser.


Você já deve ter uma compreensão básica de como tijolos lógicos trabalhão, antes de ler este tutorial sobre o uso de python, mas é simples o suficiente para acompanhar, de uma ou outra maneira. Os tijolos são lógicas estão na janela lógica do jogo, com sensors na esquerda, controllers no meio, e actuators do lado direito.



Criando um novo script Python 



No editor de texto, crie um novo arquivo de texto, pressionando o botão com um sinas de "+", e renomeá-lo para "cubeMove". 

Antes de escrever qualquer coisa que quiser conferir algumas de nossas opções visuais. Há 3 ícones ao lado do campo do nome do script onde você apenas mudou o nome do script. O primeiro é o número da linha. Clique nele para ativá-lo. Isso simplesmente mostra números ao lado de cada linha para que você saiba que linha do script que você está escrevendo. Isto é essencial para a depuração, quando há um erro no seu script, o console do sistema irá dizer-lhe qual o número da linha o erro está errada. Os outros dois ícones são para quebra de linha, e destaque de sintaxe. 


Uma última coisa que precisamos é ativar o console do sistema. Em versões mais antigas do Blender era visível por padrão, mas não é mais. Este é o lugar onde todos os dados de script e erros de script irá se imprimir. Para permitir isso, vá no menu Ajuda do topo e selecione "Console Sistema Toggle" se você não tiver essa janela visível.


Agora, para alguns scripts reais. Copie e cole o código abaixo em seu novo arquivo de script:


print ("Olá")


print () é um simples comando que imprime o que está no parêntese para o console, neste caso, ele imprime a palavra Olá. Para o script rodar e fazer isso, nós vamos usar tijolos lógicos. Então, escolha um objeto em sua cena, e na janela lógica do jogo adicionar um sensor de clique direito do mouse, e um controlador de python. Ligue estes dois, e no campo do script python, digite ou selecione o seu cubeMove.


Agora posicione o cursor do mouse sobre a visualização 3D e aperte "P". Isso inicia o jogo.  Clique com o botão direito do mouse e depois pressione Esc para encerrar o jogo.Verifique o console e você verá a palavra Olá. Seu primeiro script com sucesso! 


** Anote que se você estiver com o mouse pairando sobre a janela do script e pressionou P, você teria escrito P em algum lugar no script e isso teria causado um erro. 
Qualquer que seja a janela em que o mouse esteja passado sobre, ela é a janela ativa.**

Ficando sério 


Agora apague essa linha de impressão, e Cole a seguinte linha no topo do seu script:

import GameLogic


Esta linha vai estar no topo de praticamente todos os seus scripts de jogos. GameLogic contém todas as funções Python em tempo real para Blender, por isso é necessário importar este módulo para que possamos acessar todas as suas funções, para usar em nossos scripts. Adicionar em outra linha abaixo, o que faz melhor uso do comando de impressão, de modo que seu script parecido com este:


import GameLogicprint (dir(GameLogic))print (dir(GameLogic.getCurrentController()))cont = GameLogic.getCurrentController()own = cont.ownercont = GameLogic.getCurrentController()own = cont.ownermove = cont.actuators["move"]pressup = cont.sensors["up"]pressdown = cont.sensors["down"]speed = move.dLoc[1]


Iniciar o jogo (pressione p enquanto mouse é passado sobre Visualização em 3D), em seguida, olhar para o seu console, ele
 irá imprimir todas as funções no módulo GameLogic.Então, você deve saber que não só você pode imprimir o dir de GameLogic, mas o dir de todas as suas funções também.

Encontre o getCurrentController , uma função listada no console. Este acessa o controlador de tijolo lógicos que executa o script. Uma vez que acessar o controlador podemos acessar todos os sensores e atuadores conectados a ele, e até mesmo acessar informações sobre o objeto que possui o controlador. Esta é uma função muito importante. Agora vamos mudar a linha de impressão do seu script, para imprimir o dir de GameLogic.getCurrentController () , e ter certeza que ele tem seu próprio conjunto de parênteses, para que o script:

import GameLogic


Comece o jogo e dar uma olhada no console. Você verá um novo conjunto de funções, incluindo atuadores e sensores, todos os quais têm seus próprios diretórios que podem ser impressas também. Todas as informações que você precisa pode ser encontrado usando dir ()Se você ficou sem saber o que são as suas opções ao trabalhar com objetos ou tijolos lógicos em Python, você pode simplesmente imprimir seu diretório.


Para 
Scripts reais

Então você sabe sobre o comando de impressão, a impressão de diretórios, e você sabe sobre import GameLogic . Vamos avançar para alguns scripts de jogo. Apague a linha de impressão e adicionar duas linhas para que o script fique parecido com este:


import GameLogic


Dê uma olhada nestes três linhas. Eles vão estar no topo de cada um de seus scripts de jogo e são provavelmente as três linhas mais essenciais do código para qualquer script do jogo.


Vou começar por explicar a segunda linha, cont = GameLogic.getCurrentController () . Eu disse antes que o getCurrentController () era uma função de tudo. Bem, aqui nós adicionamos apenas uma linha, que acessa o controlador, e atribui essa informação para a variável cont . O nome da variável pode ser qualquer coisa que você goste. Isso é usado simplesmente para não ter que escrever GameLogic.getCurrentController () toda vez que precisar dele.


Agora na terceira linha, own = cont.owner .


Aqui nós acessamos o proprietário do controlador e atribuir essa informação a uma variável. Agora temos acesso ao objeto que possui o controlador de python que executa o script, neste caso. Isso nos dá acesso a informações sobre o objeto, mais as propriedades de seu jogo.


Adicionando mais tijolos lógicos

Eliminar o sensor sempre e adicionar dois sensores de teclado, um para a tecla para cima, e um para a tecla para baixo. Renomeie esses sensores para "up" e "down". O nome é importante porque nós vamos estar chamando esses sensores pelo nome no script python. Para o sensor "up", marque o "Tap", essa opção fara com q o sensor só registre uma vez, quando você pressiona a tecla, senão ele também registra uma segunda vez quando a tecla é liberada. Tap assegura que um único sensor dispare. Ligue ambos os sensores para o controlador de python, para que o script python seja executado quando um desses botões forem pressionados. 

Agora adicione um atuador de movimento e conecte o ao controlador. Renomeie o atuador para "move". Nós vamos usar esse atuador para mover nosso carro quando o botão é pressionado para cima.


Agora vamos adicionar mais quatro linhas abaixo do own = cont.owner para que possamos ter acesso aos nossos novos sensores e atuadores no script, e estamos criando uma outra variável para a velocidade. Então faça seu script parecido com este, adicionando as quatro linhas de fundo:


import GameLogic


Dê uma olhada no 
move = cont.actuators["move"] Este acessa o atuador chamado "move" da lista de atuadores. Se nada foi definido dentro dos colchetes (ex: cont.actuators[] ), então todos os atuadores conectados ao controlador python serão colocado nesta lista. Mas neste caso, estamos apenas chamando o nome "move".

Agora olhe para as linhas de pressup e pressdown . Estas acesso dos sensores "up" e "down" para que possamos detectar qual as teclas são pressionadas, e fazer o script fazer algo diferente para cada evento.


Agora veja a última linha, speed = move.dLoc[1] . Aqui nós mexendo no atuador move. move é um atuador de movimento e tem campos diferentes que podemos acessar e mudar com python. Neste exemplo estamos acessando o valor do dLoc  porque é assim que estamos movendo nosso veículo. Queremos movimentar o veículo sobre o eixo Y é por isso que eu estou chamando o segundo valor para o campo dLoc

Se você está se perguntando por que eu digitei [1] para chamar o segundo valor na lista, faça uma nota que os itens da lista começar a partir de 0, portanto, chamando move.dLoc[1] é chamar o segundo item na lista. Se eu quisesse pegar o primeiro valor, o valor de X, escrevê-lo como  move.dLoc[0] . Assim, em breve, com esta linha de código a variável speed será igual qualquer que seja o valor de Y no momento em que o script é executado.



Fazendo as coisas acontecerem
Agora que declarou todas as nossas variáveis ​​iremos adicionar algumas declarações para determinar se up ou down foi pressionado, e depois ter as duas chaves de gatilho diferentes. Em resumo, é o que queremos que aconteça, sempre que o jogador pressiona para cima, adicionado 0,05 ao valor de Y no actuador de movimento, aumentando a velocidade cada vez mais com cada pressionar de tecla. E sempre que o jogador pressiona para baixo, o valor de Y é reposto a 0, fazendo o carro parar.
Vamos começar por definir o que acontece quando nós pressionamos para cima. Então adicione as linhas abaixo da variável speed , de forma que seu script parecido com este:
import GameLogic
cont = GameLogic.getCurrentController()
own = cont.owner
move = cont.actuators["move"]
pressup = cont.sensors["up"]
pressdown = cont.sensors["down"]
speed = move.dLoc[1]
if pressup.positive:
    speed = speed + 0.05
    move.dLoc = [0.0, speed, 0.0]
    cont.activate(move)
Esse if é usado para detectar a ação ou não o botão para cima (up). Certifique-se de manter as coisas formatado como eu formatei. O seu if precisa de uma declaração de cólon no final do mesmo, e qualquer parte de ação desta declaração deve ser tabulada em abaixo dela. Agora, se o jogador pressiona para cima, "0,05" é adicionado a qualquer que seja o valor atual de speed , e esse valor de speed está ligado ao move do atuador. dLoc é o campo no atuador de movimento qui queremos mudar. Se você quiser alterar outros campos no atuador, para descobrir quais são as opções disponíveis, você pode usar print dir(move) Então, agora nós simplesmente ligamos o speed como o valor de Y na lista e ele vai mudar o valor no atuador. Para fazer este atuador ativo agora, usamos a linha cont.activate(move) . Agora o nosso carro se move mais rápido.
Agora vamos definir o que acontece quando nós pressionamos para baixo (down). Então adicione as linhas na parte inferior para seu script parecido com este:
import GameLogic
cont = GameLogic.getCurrentController()
own = cont.owner
move = cont.actuators["move"]
pressup = cont.sensors["up"]
pressdown = cont.sensors["down"]
speed = move.dLoc[1]
if pressup.positive:
    speed = speed + 0.05
    move.dLoc = [0.0, speed, 0.0]
    cont.activate(move)
elif pressdown.positive:
    speed = 0
    cont.deactivate(move)
    move.dLoc = [0.0, 0.0, 0.0]





A declaração elif é como dizer "else if". Então, se o jogador está pressionando para baixo em vez de para cima, vamos definir  speed como 0, desativando o movimento do atuador e, finalmente, redefinir o valor de Y na dLoc para o volta 0.

Jogue o jogo!
Seu script está completo! Comece o jogo! Agora pressione para cima repetidamente para ganhar velocidade, e pressione a tecla para baixo para parar.