This article has been localized into Portuguese by the community.
In this article series, we're building a complete Snake game from scratch. It makes sense to start with the Introduction and then work your way through the articles one by one, to get the full understanding.
If you want to get the complete source code for the game at once, to get started modifying and learning from it right now, consider downloading all our samples!
Introdução
Um rápido sumário deste artigo introdutório: Implementaremos o jogo clássico Snake em WPF, e o resultado final será algo parecido com isso:
Criar jogos é, frequentemente, o motivo de pessoas, especialmente jovens, serem atraídas para aprender a programar. Mas a questão, normalmente, é: Como iniciar e o que é necessário? Bem, você precisa de uma linguagem de programação, como C#, C++ ou qualquer outra linguagem popular, e se você é fluente na sua linguagem preferida, na verdade você não precisa de mais nada. Comece adicionando pixels à tela e, em algum momento, você terá um jogo rodando.
Contudo, a maioria das pessoas prefere ter alguma ajuda com as coisas de baixo nível. Por que adicionar pixels à tela manualmente se há uma biblioteca ou framework que pode fazer isso por você, para que você possa focar em construir um jogo divertido? Há vários frameworks por aí que lhe ajudarão a fazer isso, e na verdade, um deles é o WPF.
Assim sendo, WPF não é a mais óbvia escolha quando se quer criar jogos - ele é, definitivamente, um framework que foca em criar interfaces com o usuário para aplicações orientadas a negócios. Mesmo assim, há vários elementos em WPF que você pode usar para criar jogos, e talvez igualmente importante: Você tem todos os mecanismos para pintar e controlar uma janela no Windows.
Então, se você está querendo criar um jogo simples, na verdade WPF pode ser uma opção. Ao menos será uma grande ajuda em todos os aspectos mais básicos, como criar janelas, desenhar uma área simples para o jogo etc. Se você quiser adicionar coisas como gráficos 3D avançados e objetos que se movimentam rapidamente, pode precisar de mais ajuda de outra biblioteca/framework, mas funcionará sem problemas pra um jogo simples - por exemplo, um clássico Snake!
SnakeWPF
Como prova de conceito, decidi criar uma versão baseada em WPF do jogo extremamente clássico Snake. Ele utilizará uma janela WPF normal como sua área de jogo, bem como controles/formas WPF normais para criar a jogabilidade em si. O motivo de eu ter escolhido Snake é porque ele é bem fácil de implementar (não há muita lógica para codificar) e porque ele pode ser implementado usando figuras geométricas simples como quadrados e círculos, que podem ser usados muito facilmente com o WPF. Mas também porque ele ainda é um jogo realmente engraçado, apesar de sua natureza simplista.
Se você não conhece o jogo Snake, só posso assumir que você nunca teve um telefone celular Nokia no final dos anos 90/início dos anos 2000. A primeira versão de Snake foi escrita e demonstrada muitos anos antes disso, mas ele se tornou um sucesso quando a Nokia decidiu incluir sua própria versão dele em seus telefones celulares.
A jogabilidade é tão simples quanto é divertida: Você move a cobra virtual em uma direção (esquerda, direita, para cima ou para baixo) em uma caçada por comida (algumas vezes uma maçã). Quando a cobra acerta a maçã, ela é consumida, a cobra cresce e uma nova maçã aparece na tela. Se você acerta as paredes ou o próprio rabo, o jogo acaba e você tem que começar tudo de novo. Quanto mais maçãs você come, mais pontos você ganha mas ficará mais difícil de não acertar seu próprio rabo.
Há MUITAS variações da jogabilidade - por exemplo, a velocidade com qual a cobra se move irá frequentemente aumentar cada vez que você come uma maçã, deixando cada vez mais difícil, mas nem toda implementação de Snake será assim. Outra variação são as paredes - algumas implementações permitirão que você atravesse a parede e saia no lado oposto, enquanto outras implementações terão o fim do jogo assim que ser atingida a parede.
Em nosso SnakeWPF, as paredes são rígidas (a cobra morre se atingi-las), e a velocidade aumentará exponencialmente para cada maçã que você comer, até certo ponto.
Sumário
Durante os próximos artigos, iremos implementar uma versão legal do clássico jogo Snake usando o WPF. Iniciaremos com o plano de fundo no próximo artigo, e ao final, teremos nosso primeiro, jogo baseado em WPF completamente funcional.
Por favor note que enquanto este É um tutorial de WPF, precisaremos de um pouco mais de código C# que o normal, para implementar a lógica do jogo etc. Tentarei explicar mais sobre isso durante os artigos, mas caso precise um pouco mais de conhecimento sobre C#, não esqueça que temos um ótimo, tutorial completo de C# em nossa rede!