Archived:Como desenvolver o jogo brick-breaker em PySymbian - Parte 1
Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)
Dados do artigo
Neste artigo irei explicar como criar um jogo Brick-Breaker em PySymbian. O jogo Brick-Breaker é um jogo arcade. Neste jogo, o jogado controla uma barra horizontal pela tela tentando rebater uma bola. O objetico do jogo é destruir todos os tijolos que ficam no topo da tela.
Contents |
Ferramentas de desemvolvimento
1. Editor de texto - Notepad é sufuciente.
2. Python para S60 - preferivelmente utilizar versão PySymbian 1.4.5 stable release
3. PySymbian script shell - preferivelmente utilizar versão PySymbian 1.4.5 stable release
As ferramentas para PySymbian podem ser baixadas aqui.
Os seguintes módulos serão usados no desenvolvimento desta aplicação:
- Módulo appuifw
- Módulo sysinfo
- Módulo graphics
- Módulo e32
- Módulo key_codes
- Módulo random
- Módulo math
- Módulo time
Funções
As seguintes funções serão usadas no Brick Breaker.
1. draw_screen: desenha linhas negras em canvas.
2. draw_slider: desenha a barra deslizante.
3. leftkey: controla a barra deslizante através da tecla para esquerda.
4. rightkey: controla a barra deslizante através da tecla para direita.
5. draw_bricks: desenha o número de tijolos.
6. erase_bricks: apaga os tijolos.
Part 1
Neste artigo (Parte 1) nós iremos discutir as diferentes funções realizadas pela barra deslizando em detalhes.
Inicializando os parametros da barra deslizante
Antes de discutir qualquer função em detalhe - iremos definir alguns dos parametros do objeto em questão.
#SLIDER PARAMETERS#####
SliderX1=120
SliderY1=305
SliderX2=160
SliderY2=315
SliderSpeed=22
SliderColor=RED
import sysinfo
TotalScreenWidth=sysinfo.display_pixels()[1]
draw_screen()
Usando esta função, nós criamos uma tela negra em canvas. A definição de draw_screen() apresenta-se a seguir:
#definindo a função de desenho
def draw_screen():
#Configura a tela cheia
appuifw.app.screen = 'full'
#Variáveis globais para a UI
global canvas
canvas = appuifw.Canvas(redraw_callback=handle_redraw)
appuifw.app.body = canvas
appuifw.app.exit_key_handler = quit
#Variáveis globais para a UI
global img
img = graphics.Image.new(canvas.size)
#Limpa a iamgem
img.clear(BLACK)
handle_redraw(None)
draw_slider()
Usando esta função, nós criamos uma barra horizontal em canvas que será movimentada usando atalhos do teclado. A definição de draw_screen() apresenta-se a seguir:
#Definindo a função de slide
def draw_slider():
global canvas
#Teclas de atalho do teclado
canvas.bind(key_codes.EKeyLeftArrow,lambda: leftkey())
canvas.bind(key_codes.EKeyRightArrow,lambda: rightkey())
appuifw.app.body = canvas
appuifw.app.exit_key_handler = quit
#Desenha o retângulo
img.rectangle((SliderX1,SliderY1,SliderX2,SliderY2),fill=SliderColor)
handle_redraw(None)
leftkey()
A função leftkey() é chamada a partir da função draw_slider(). Usando esta função, nós podemos efetuar o movimento da barra deslizante para esquerda pressionando a tecla esquerda (left key). Sendo assim, o código para esta função é apresentado abaixo:
#Definindo a função da tecla da esquerda (leftkey)
def leftkey():
if (SliderX1>0):
#desenha o retângulo
img.rectangle((SliderX1, SliderY1, SliderX2, SliderY2),fill=BLACK)
#Define as variáveis globais
global img, canvas,SliderX1, SliderY1, SliderX2, SliderY2
#Definindo as coordenadas X1 e X2 do slider
SliderX1=SliderX1-SliderSpeed
SliderX2=SliderX2-SliderSpeed
img.rectangle((SliderX1, SliderY1, SliderX2, SliderY2),fill=SliderColor)
#appuifw.note(u"Left arrow was pressed")
handle_redraw(None)
rightkey()
A função rightkey() é chamada a partir da função draw_slider(). Usando esta função, nós podemos efetuar o movimento da barra deslizante para direita pressionando a tecla direita (right key). Sendo assim, o código para esta função é apresentado abaixo:
#definindo a função da tecla da direita
def rightkey():
if (SliderX2<TotalScreenWidth):
#if (SliderX2<sysinfo.display_pixels()[1]):
#desenha o retângulo
img.rectangle((SliderX1, SliderY1, SliderX2, SliderY2),fill=BLACK)
#define variáveis globais
global img, canvas,SliderX1, SliderY1, SliderX2, SliderY2
#definindo as coordenadas X1 e X2 do slider
SliderX1=SliderX1+SliderSpeed
SliderX2=SliderX2+SliderSpeed
img.rectangle((SliderX1, SliderY1, SliderX2, SliderY2),fill=SliderColor)
#appuifw.note(u"Left arrow was pressed")
handle_redraw(None)
That finishes the slider functions (Part 1) for the Brick-Breaker Game.
The next article in the series : Part 2 for brick-Breaker, would cover Brick functions for this game.
Capturas de tela
As figuras abaixo demonstram o objeto criado bem como sua movimentação. Os screenshots são relevantes apenas para a Parte 1.



(no comments yet)