segunda-feira, 16 de junho de 2008

Travou tudo, e agora?

Sabe quando o computador simplesmente não foi com a sua cara e resolve travar, ou algum programa não funciona mais do jeito que deveria? Em geral pode ser algum problema de buffer ou acesso indevido à memória que apagou algo que outro programa usava. Estes termos são complexos para o usuário médio mas a solução vem numa instrução simples que qualquer pessoa com um mínimo de coordenação motora consegue realizar.
REINICIE O COMPUTADOR
Ou, desligue e ligue de novo.
Mas deixa ligar mesmo, até tudo o que abre assim que o computador iniciar esteja funcionando e a setinha do mouse não se transforma mais em uma ampulheta.
Se o computador nem desligando estiver, meta o dedão no botão de reset, aquele pequenininho escondido.
Alguns computadores mais novos até tem um sistema de segurança que faz com que o botão de desligar só funcione se for segurado por alguns segundos (entre 7 e 10).

Pode parecer uma dica estúpida, porém um dia você ainda vai me agradecer!

Instalando e rodando Lua

Lua é uma linguagem de programação criada no brasil pela PUC-Rio. Ela é leve porém poderosa, possui vários recursos como arrays alocadas dinamicamente, listas encadeadas préimplementadas e outras cisas com nomes complicados que para leitores convencionais não quer dizer muita coisa mais impressiona quando conversando com completos leigos. Lua já vem sendo usada em vários tipos diferentes de implementações e jogos famosos como o famigerado Ragnarok Online, só procurar que você vai encontrar arquivos do tipo .lua dentro dele. Geralmente é usada para fazer complementos para os jogos, mas pode-se fazer um jogo completo com ele, já que ele se adapta a bibliotecas gráficas (outro termo para usar em conversas com amigos) como o SDL (que também será ensinada neste blog num futuro não muito distante).

Mas já falei de mais e não fizemos nada! Vamos começar com os devidos downloads e depois com a instalação e com o famigerado "Olá Mundo!". E se você é um daqueles que não gosta de fazer "Olá Mundo!"s, leia AQUI o porque de fazer um, ou apenas se contente com o fato de que serve para ver se tudo está funcionando do jeito que deveria.

Para instalar no LINUX, o link direto do site oficial http://www.lua.org fará o serviço. Para facilitar ainda mais, clique AQUI para baixar a versão 5.1.3. Após baixar, leio o readme e o install com informações de como instalar. Se você usa linux deve saber como fazer isto melhor do que eu.

Se você, como eu, vive entre computadores com Windows intalado, vai achar este link mais interessante. Clique AQUI e baixe a versão 5.0.1a5. Como eu só fiz a instalação no windows, vou colocá-la apenas ela aqui.
Baixe o arquivo do link. Quando terminar, clique duas vezes no arquivo executado.

A janela acima aparecerá. Ela pergunta se você quer instalar o Lua, então escolha 'Sim'.

Uma janela nova aparecerá informando que o programa será instalado. Clique em 'Next' para continuar.

Aparecerá as licenças de uso. Se você concordar (e se quiser usar, concordará), marque a opção 'I accept the agreement' e depois em 'Next'.

Agora você terá que escolher onde o programa será instalado. De preferência escolha instalar em C:\luacheia, já que aqui a maioria dos exemplos estarão dentro dele, mas se você se garante, coloque na pasta que você quiser. Eu, pessoalmente, deixei o Lua instalado num pen drive para poder "estudar" onde bem entender. Após escolher o local, clique em 'Next'.

Aqui apenas clique em 'Next' para criar um link no menu "Iniciar".
Deixe a caixinha marcada para criar um link para a área de trabalho. Se não quiser, desmarque. Depois clique em 'Next'.

Por último, clique em 'Install' para realmente instalar o Lua. Pode levar alguns instantes para terminar e até parecer que travou, mas é perfeitamente normal.

A instalação foi concluida. só clicar no botão e luacheia abrirá para você uma primeira vez!

Agora que você já tem o Lua instalado, está na hora de testá-lo! Se você deichou a caixa 'launch' antes de terminar a instalação, deve ter aparecido uma janela com coisas escritas. Isto é bom! diz que o programa funciona! Pode fechar a janela clicando no X superior.
Uma vantagem do Luacheia é que, depois de instalado, você pode mover ou copiar a pasta para onde quiser! É claro que os atalhos não funcionarão mais, porém logo eles não serão mais necessários.
Agora começa nosso "Olá Mundo!" para Lua! Abra um editor de textos qualquer como o Bloco de notas, ou algo mais legal como Notepad++ (baixe o .Installer.exe. Quando for usá-lo, escolha em 'Linguagens' Lua).
Agora vamos digitar alguns códigos!

print ("Ola Mundo!");

É. Só isto. nada mais do que isto! Salve este arquivo com o nome que você quiser, sem nenhum espaço nem acentos. De preferência, coloque-o na pasta onde você instalou Lua porque fica bem mais fácil para executá-lo.
Agora clique no botão iniciar e depois em executar. Digite 'cmd' e depois no botão 'Ok'.
O que aparece na tela é uma janela de console, não muito amistosa, porém funcional. Vou deixar para ensiná-los como configurá-la outra hora, agora apenas digite 'cd\' e clique 'Enter' para ir à raiz do drive C.

Agora digite 'cd luacheia' e clique 'Enter' se você instalou na pasta recomendada, ou digite 'cd/pasta1/pasta2/luacheia' e clique 'Enter' para abrir a pasta desejada.


Agora digite 'luacheia olamundo.lua' ou troque olamundo.lua pelo nome do seu arquivo, e ele será executado.

Se você fez tudo certo, seu programa rodou! O que ele fez? Escreveu a frase 'Ola Mundo!' na tela em uma linha. Grande porcaria, você deve estar pensando. Mas agora você sabe como fazer para rodar um programa em Lua! Existe outra maneira para rodar programa Lua, mas envolve criar um arquivo .bat para isto e eu não vou ensinar isto agora, ainda mais porque preciso explicar o que foi feito neste singelo programa.

Primeiro, no Lua não é preciso dizer onde o programa começa ou termina. Encarando algumas linguagens mais robustas, você verá que isto é uma vantagem e ao mesmo tempo uma desvantagem, mas a minha filosofia diz que quanto menos se escreve, menos se erra, então pra mim é bom não ter que se preocupar com isto e ir direto ao que interessa.
A função print( ) é a responsável por "imprimir" uma mensagem na tela. O que vem dentro dos parenteses é a informação a ser impressa que, neste caso, por se tratar de um texto literal, ou seja, que a gente quer que apareça do jeito que está escrito, vem entre aspas. Se você quiser tentar, pode colocar algum número no lugar de Ola Mundo! sem as aspas que ele também exibirá na tela.
Agora o mais importante! Perceba que tem um ';' no final da linha. Ele diz que o comando daquela linha acabou! normalmente, no final de cada linha de programação haverá um ';' com raras excessões. Até programadores mais experientes esquecem vez ou outra dele, então não se sinta tão idiota se você também esquecer.
Como experimento, tente colocar varios comandos print() no olamundo.lua, como no exemplo:

print("Este e um programa teste.");
print("Estou fazendo varias linhas!");
print("Ate o momento tenho...");
print(4);
print("linhas!");


Se tudo der certo, executando este programa você terá algo mais ou menos assim:


Ufa! Acho que já deu, né? Volto a falar mais de Lua em outro tópico.

Olá mundo!

Algo muito importante para se começar a programar é fazer um programa conhecido como 'Olá Mundo!', ou 'Hello World!'. Se você ocupar algum tempo procurando na internet, verá que existem muitos modelos de Olá Mundo! espalhados por aí, nas mais diferentes linguagens. Este tipo de programa ele funciona no aprendizado para gerar uma resposta na tela visível ao aluno. Basicamente o que qualquer programa Olá Mundo! faz é escrever na tela a frase 'Olá Mundo!', e por mais que pareça trivial neste exato momento, quando alguém que nunca viu uma determinada linguagem de programação antes (ou qualquer uma, em casos mais extremos, e que encabeçam meu público alvo) isto serve principalmente para saber se o sistema está rodando do jeito que deveria após ser instalado, além de fornecer conceitos básicos. Aqui eu farei um algoritmo, ou um código que não roda em sistema nenhum, porém serve para exemplificar como funcionará um Olá Mundo! em praticamente qualquer linguagem. Todas as linguagens abordadas neste blog virão acompanhadas de um tutorial dizendo como instalá-las e colocá-las para funcionar, assim como um Olá Mundo! delas. Eu recomendo que sempre que for usar uma nova linguagem, gaste um tempo fazendo um Olá Mundo! assim como em aulas de idiomas começamos sempre aprendendo a dizer "Meu nome é ... .". Não parecerá muito emocionante, mas é didático!

O conceito inicial envolvendo o Olá Mundo! é criar um programa que rode uma função. Se você é novo em programação, vai querer continuar lendo este parágrafo, senão, pode pular pro próximo. Tá avisado. Uma função é um trecho enorme de código que faz alguma coisa. Normalmente funções são criadas de tal modo que possam ser chamadas diversas vezes dentro de um programa ou mesmo de uma função maior. Aqui vamos pegar como exemplo a função ESCREVER (note que sempre que eu estiver falando em função algorítmica, as palavras virão em caixa alta (maiúsculas) para melhor identificá-las. Ainda falarei de "identação" e de porque ela é importante) já que a nossa intenção é fazer o programa escrever na tela uma mensagem Olá Mundo! Atrás deste nome amistoso ESCREVER, existe uma série de códigos complicados envolvendo acesso a memória e ao buffer de video que ninguém está realmente interessado em saber, então para evitar toda esta chamada de comandos místicos para apenas escrever uma mensagem na tela, usaremos a função que algum santo já digitou pensando em meros mortais que nem entendem direito o que é um buffer (quem falar que é uma almoço chique, vai levar um teclado na testa! Isso é Buffet!). No caso da nossa linguagem de programação fictícia (ou como muitos gostam de chamar pra ficar com um nome bonitino, linguagem algorítmica), esta função que escreve coisas na tela tem o nome ESCREVER, fácil de lembrar e prático. Na maioria das vezes, funções tem nomes relacionados a sua função, como por exemplo printf() na linguagem C que faz basicamente o mesmo que ESCREVER. Agora, esperando que o conceito de função já está bem explicado, vamos para o complicado, programas. Programas são conjuntos de funções e linhas de código que realizam uma determinada operação para alcançar um objetivo, ou em português claro, faz a bagaça funcionar. No caso do nosso Olá Mundo! o programa inicia, exibe na tela uma saudação e termina sem fazer mais nada. Chato? É, com certeza. Mas se você fizer isto uma vez, estará abrindo uma porta para que logo você esteja fazendo o que quiser, inclusive um jogo completo saído do nada existencial!

Agora que temos a turma inteira de novo junta, podemos seguir para o Olá Mundo! Isso supondo que pessoas com algum conhecimento de programação ainda estejam lendo até aqui... Um programa na nossa linguagem algorítmica ficaria assim:

INÍCIO //inicia um programa
ESCREVER "Olá Mundo!"
FIM //finaliza o programa

O que este programa faz? Ele começa com uma declaração dizendo que o programa começa ali (aqui isto é trivial, mas em algumas linguagens você perceberá que existe uma série de questões a serem declarados, programados e voodoozados logo no início. Não se preocupe, você não terá que ver isto tão cedo, mas verá (espaço para risada mléfica)).
Tudo o que vem depois de // em uma linha é considerado como comentário. Comentários são trechos especiais na programação. Ele existe, está escrito, mas não faz absolutamente nada. Em geral Comentários são usados pelo programador para explicar o que um pedaço do código faz, mas se você quiser pode colocar uma receita de bolo. Todas as linguagens de programação tem um simbolo especial que inicia uma linha de comentário (ou até um bloco). O mais importante é assim que pegar uma nova linguagem pra programar, descobrir como fazer comentários, principalmente para conseguir identificá-los nos programas feitos por outros.
Na linha seguinte vem a nossa função ESCREVER que faz o que ela indica, escreve um texto na tela. Como ela faz isto não é de maneira nenhuma importante, ainda masi porque estamos lidando com um pseudo código, então ele funciona do jeito exato que você quiser. Os mais simplórios imaginarão uma linha de texto na tela escrito "Olá Mundo!", se você é uma pessoa mais especial, ESCREVER pode fazer o texto piscar na tela em três cores aleatórias enquanto as letras pulam na tela e explodem em fogos de artifício, a sua imaginação é o limite!
A última linha termina o programa. Diz ao computador que além daquilo não existe mais nada, que o programa pode ser finalizado. Em geral o final é colocado na última linha, mas é possivel rechear com Comentários para maiores esclarecimentos.
E assim terminamos nossa primeira aula de programação! Se você conseguiu entender tudo até agora, você provavelmente tem jeito pra programação, senão, mande sua dúvida.

sexta-feira, 13 de junho de 2008

Vírus no pendrive (reconhecendo e removendo)

Uma das pragas mais chatas na atualidade é o vírus de pendrives, que afeta quase qualquer dispositivo de armazenagem de dados que possa ser conectado ao usb do seu computador. Os efeitos são os mais variados. Os métodos descritos aqui podem não resolver todos os seus problemas com este tipo de vírus, mas vai te dar uma segurança maior.

1- Quando colocar seu pendrive numa maquina windows, não escolha nenhuma opção daquela janelinha que aparece para reprodução automática. Ao invés disto, clique em 'cancelar'.
2- Va no windows exporer e clique com o botão direito em cima do nome do drive que atualmente é o pendrive. Preste atenção nas primeiras linhas. Se tiver 'executar' ou 'reproduzir' logo no início, os indícios de seu pendrive já estar infectado são grandes. Preste atenção na letra que representa seu pendrive. Você vai precisar dela.
3- clique no botão iniciar e em 'executar'. Digite 'cmd' e isto trará a janela de console, preta com letras brancas no padrão. Digite a letra do seu drive que você observou no item dois acompanhada de dois pontos. Como aqui abriu no drive g, eu digito 'g:'. Isto vai me levar até dentro do meu pendrive. Digite agora 'dir/w/a'. Isto fará aparecer uma listagem com todos os arquivos que estão no pendrive inclusive os arquivos ocultos. O que você deve procurar são arquivos executáveis (com final '.exe') que não deveriam estar ali e em especial um autorun.ini ou autorun.inf. delete-os todos com o comando 'del nome-do-arquivo.xxx' onde nome-do-arquivo.xxx será o nome dos arquivos a serem apagados.
Feito isto, você estará parando de disceminar o vírus e disseminá-lo. Mas não adianta nada se você não prestar atenção em seguir com a dica 1 sempre que colocar o seu pendrive num computador. Eu sei que é mais fácil, mas pode sair muito caro para a sua máquina.

quarta-feira, 11 de junho de 2008

Por onde começar a fazer jogos? (Roteiro)

Acredito que se você quer começar a fazer um jogo, primeiro você tem que aprender a programar. Ocasionalmente, numa equipe grande, um desenvolvedor raramente terá que lidar com qualquer tipo de código, para isto que servem os burros de carga dos programadores. Mas mesmo assim, um desenvolvedor precisa saber um mínimo para poder orientar a sua equipe para que ela alcance o resultado final esperado.
Mas por onde começar? Eu sou fã da idéia de que bons jogos vêm de bons roteiros, e entenda aqui que todo o jogo tem um roteiro, por mais simples que seja. Vamos a um exemplo clássico:
Personagem anda por labirinto pegando pecinhas coloridas para marcar ponto, enquanto é perseguido por inimigos. Quando o personagem pega todas as pecinhas ele ganha o jogo (ou fase), mas se antes disto ele for pego por um dos inimigos, ele morre. Existem ainda peças especiais brilhantes que dão ao personagem a habilidade de atropelar seus inimigos, derrotando-os temporariamente
Para quem ainda não se tocou, este é roteiro do jogo Pac-Man. Claro que ele não deve estar nem perto de ser tão completo quanto o roteiro original, mas quando o desenvolvedor pensou no jogo pela primeira vez deve ter sido isto que passou pela cabeça dele. Se você nunca escreveu um roteiro antes, comece-o pensando em algumas regras simples de jogo como aquelas impressas em jogos de tabuleiros como número de jogadores, objetivo do jogo (o que o jogador precisa fazer para ganhar) os movimentos básicos do jogo (pensando ainda no pac-man, o personagem anda para as quatro direções), como o jogador interagirá com o jogo (teclado, mouse, controle, etc) e, o mais difícil, defina os momentos de jogo. Se pegarmos ainda o pac-man, teremos o momento em que o personagem nasce, eme está parado no meio do mapa, o momento em movimento (um para cada direção) o momento "encontrou uma parede" (normlamente o personagem para em paredes e não pode atravessá-las, apenas contorná-las), o momento "encontrou um inimigo" (quando é testado se ele possui a habilidade especial ativada. Caso tenha, o inimigo morre, caso não, o personagem morre), o momento "ativa habilidade especial" (preste atenção que neste momento os inimigos começam a fugir do personagem principal, além de mudarem de aparência e a música de fundo mudar. Além disto, um relógio oculto marca o tempo de duração da habilidade). Com isto já dá para começar a pensar em algumas coisas importantes: Que tipo de imagem será necessário, qual tipo de tecnologia pode ser usada, qual os tipos de "testes" precisarão ser feitos durante o jogo, etc. Estes elementos serão explicados em outro texto aqui, mas por enquanto é bom saber que eles existem.
Para jogos mais elaborados, uma história também deve ser elaborada na fase do roteiro. Não se preocupe com nada muito detalhado neste primeiro momento, apenas algo direto, alguns nomes (que também não precisam ser os definitivos) e alguns ganchos importantes na história.
Rockeiro sai numa aventura para derrotar o Dr.Malvado, armado com uma arma especial que se acopla a seu braço e tem a incrível habilidade de memorizar ataques das armas de inimigos. Em certos momentos ele terá que enfrentar o próprio irmão saxofonista por causa de conflitos ideológicos.
Essa pode ser considerada uma versão bem simplória de algum jogo do Rockman.
Acho que já escrevi de mais. Qualquer dúvida, ou sugestão para roteiros para este blog, deixe um comentário.

terça-feira, 10 de junho de 2008

Por que programar?

Uma das maiores questões quando se pensa em Jogos de computador é o porquê se dar ao trabalho de programar algo. Já existem tantos títulos por aí, tantos estilos diferentes, e se uma coisa não atinge as suas espectativas quanto ao que você espera de um jogo, sempre haverá outra que o faça e se não, é possível baixar (ou fazer) uma modificação rápida no jogo para se ter o que quer, assim aconteceu com Ultima Online, com diversos servidores alternativos por aí e muitos deles bem diferentes do original, os modos de jogo novos do Warcraft 3, como o DOTA, milhares de modificações de Counter-Strike, dentre tantos outros.
Mas em algum momento, o jogador mais impetuoso pensará em fazer um jogo com a cara dele, algo épico, que revolucione, ou apenas que use melhor recursos vistos em tantos jogos separados. Um dia ouvi um colega de curso falando sobre um MMORPG em tempo real com combates estilo Street Fighter, onde a habilidade do jogador contasse mais do que os níveis que o personagem tem. Ainda não foi feito nada neste aspecto, apesar de já existirem alguns que se encaminham por estes rumos, mas nada realmente bom ou realmente MMORPG. Uma pessoa frustrada por nunca ver um jogo do jeito que ela quer disponível pode ou se desesperar e chorar num canto escuro da sala segurando uma faquinha de rocambole ou pode colocar a mão na massa e começar a pensar em vazer este jogo ele mesmo. Este foi o motivo pelo qual resolvi começar a estudar programação, e programação de jogos, pra ser mais específico. Se você também está sentindo este comichão, esta coceirinha atrás da orelha de que algo deve ser feito urgentemente, e ainda não encontrou nenhum tutorial descente sobre jogos, vasculhe cada canto deste blog, e aprenda a montar o grande quebra-cabeça que é um jogo.