O Amiblitz é uma linguagem de programação compilada e oriunda do Basic. Mas assim como o C e outras linguagens, no Amiblitz nós podemos incluir bibliotecas e rotinas externas e ampliar a gama de comandos e funções. Existe biblioteca pra quase tudo. O AB (vou chamá-lo assim agora pra não ficar toda hora escrevendo Amiblitz) não consegue carregar JPG, somente IFF? Não tem problema. Já existe uma biblioteca que permite isso e muitas outras coisas! Às vezes fico pensando quanta gente louca (mais louca que eu) existe por aí… 😀
Logo que carregamos o AB3, o que vemos é isso aqui:
Um trabalho sensacional… diga-se de passagem. Tem debugger, visualizador de variáveis, editor com várias opções de configuração, help contextual, “autocompletar” pra comandos e funções (um versão simplificada do intellisense) entre outras funcionalidades bem legais!
O modo BLITZ
Apesar de muito se falar sobre o desenvolvimento de jogos quando se pensa no AB, ele é uma linguagem completa, com várias bibliotecas para construir qualquer tipo de programa, inclusive jogos :-D.
Nessa série de artigos que pretendo escrever, vou tentar facilitar a vida de quem está começando. Eu pesquisei bastante, troquei mensagens com a galera da Alemanha (que é uma das mais ativas, porém hoje mais voltada para a produção de jogos e aplicativos para os Amigas NG) e bati a cabeça algumas vezes para conseguir resolver e até entender algumas coisas. E ainda há muito que aprender!
Muitos incrédulos devem pensar: “Como um jogo escrito em Basic pode ficar rápido o suficiente?” Bem, além de compilado, o AB tem um comando interessante (BLITZ), que quando executado, “by-passa” o sistema operacional e acessa diretamente os chips customizados. É isso mesmo, você fala direto com o hardware através de comandos específicos e muitas vezes complexos. Não é possível nem acessar o disco nesse modo (já que isso depende do sistema operacional).
E como as chamadas não passam pelo OS, se você fizer besteira, já sabe o que acontece né? Guru Meditation pra você, principalmente se estiver no AB2. No AB3, eles conseguiram fazer um sistema de recuperação que muitas vezes salva o programador de uma fria. Eu disse muitas vezes, mas nem sempre! A regra básica é, sempre salve o código antes de executá-lo… É possível configurar o AB de forma que ele sempre salve o programa quando você mandar compilar o código.
Vamos ver como isso funciona!
Nada de Hello World! 😉
Vamos a um exemplo prático, só pra dar uma animada, mas nada de Hello World né? Isso pode ser feito com um simples Print (lembre que isso aqui é Basic!). Também não pretendo tratar dos outros modos de criação de programas. Vou focar basicamente na criação de jogos. Esse código funciona tanto no BlitzBasic2, quanto no Amiblitz2 e obviamente no Amiblitz3.
Pra compilar e executar é só acessar o menu de compilação ou escolher, por exemplo o atalho A (tecla Amiga direita) + B. Esse atalho, salva, compila e executa o programa.
Agora vamos dar uma olhada no código. Não tem nada de complicado e o efeito é bem interessante.
- BLITZ – “Liga” o modo Blitz
- Bitmap 0,320, DispHeight, 5 – Esse comando cria um bitmap com as características que você informar. Nesse caso, o 0 (zero), é o índice desse bitmap (logicamente que você pode ter mais de 1 bitmap). 320 é a largura da tela em pixels. DispHeight é um função que retorna a altura da tela em pixels. Sendo assim você não precisa se preocupar se o Amiga é PAL ou NTSC. Por fim, o 5 informa a “profundidade” de cores: 2^5 = 32 cores. Mais pra frente veremos que o fato da máquina ser AGA ou não influencia muito nesse ponto e em alguns outros. Mas vamos com calma…
- Slice 0, 42, 5 – Imagine o Slice como sendo uma janela e o bitmap a tela atrás dessa janela. Você só vai ver a parte do bitmap que o Slice permitir. Por exemplo: Você pode ter um background de 1024×252 e um Slice de 320×252, que poderá ser movido lateralmente dando a impressão que o background está se movendo, num Scroll horizontal. Mais uma vez… vamos com calma! O comando Slice tem uma forma simples, que é essa, e uma forma completa que veremos em breve. O 0 (zero) corresponde ao índice do Slice (sim podemos ter mais de um Slice – jogos multiplayer por exemplo, precisam de um Slice pra cada jogador). O 42 é uma coordenada de hardware (lembre-se que estamos acessando o hardware diretamente, então coisas meio esquisitas como essa vão aparecer pelo caminho) que corresponde ao canto superior esquerdo da tela. Qualquer valor acima disso, desloca o Slice para baixo e vice-versa. Por fim, o 5, assim como no Bitmap, refere-se ao número de cores.
- Show 0 – Exibe o Bitmap criado (0 é o índice do bitmap).
- Repeat…Until – Esse “laço” repete todas as instruções, pelo menos uma vez e até que a condição estabelecida seja verdadeira. No caso, JoyB(0)>0 (o botão esquerdo do mouse seja pressionado).
- A série de comandos RND (randomico), gera aleatoriamente, coordenadas x, y, o tamanho
e a cor (c) do quadrado que será desenhado com o comando Boxf.
- Boxf – Desenha retângulos preenchidos (o f é de fill), nas coordenadas x e y, com largura e alturas
e cor (c).
O efeito gerado de vários quadrados sendo desenhados na tela com uma velocidade impressionante é bem legal. Aqui um vídeo com o resultado. A qualidade não está boa, mas dá pra ter uma ideia.
Espero que tenham gostado. Pelo menos foi um pouco mais do que um simples “Hello World”.
Fiquem à vontade para enviar comentários, dúvidas e sugestões.
Grande abraço!
Pingback: News… | AMX Project
Pingback: Guru Meditation: Amiblitz – Parte 3: Um pouco de interação pra animar! | LabRitcho
Pingback: Guru Meditation: Amiblitz – Parte 4: Pong | LabRitcho