PyGame - tecla reptida

1. PyGame - tecla reptida

Gabriel
gjvnq

(usa Ubuntu)

Enviado em 02/11/2009 - 07:07h

Oi, eu estou fazendo um jogo bem simples com o pygame mas para movimentar os objetos eu tenho que ficar pressionando a tecla repetidas vezes.

Codigo:
#! /usr/bin/python2.5
import sys, pygame
pygame.init()
pygame.font.init()

global barra1pos
global barra2pos
global fonte
global pontos1
global pontos2

fonte = pygame.font.Font(None, 25)
pontos1 = 0
pontos2 = 0

size = width, height = 640, 480
bolavelo = [1, 1]
barra1pos = [5, 0]
barra2pos = [620, 0]
preto = 0, 0, 0

tela = pygame.display.set_mode(size)

barraimg1 = pygame.image.load("barra.bmp")
barra1 = barraimg1.get_rect()
barraimg2 = pygame.image.load("barra.bmp")
barra2 = barraimg2.get_rect()

bolaimg = pygame.image.load("bola.bmp")
bola = bolaimg.get_rect()

barra1 = barra1.move(barra1pos)
barra2 = barra2.move(barra2pos)
bola = bola.move([160, 120])
while 1:
barra1pos = [0, 0]
barra2pos = [0, 0]
pontos1t = "Jogador 1: " + str(pontos1)
pontos2t = "Jogador 2: " + str(pontos2)
texto1 = fonte.render(pontos1t , 1,(255,255,255,0))
texto2 = fonte.render(pontos2t , 1,(255,255,255,0))
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
#print event.key
if event.key == 273:
barra2pos = [0, -5]
if event.key == 274:
barra2pos = [0, 5]
if event.key == 304:
barra1pos = [0, -5]
if event.key == 306:
barra1pos = [0, 5]

barra1 = barra1.move(barra1pos)
barra2 = barra2.move(barra2pos)
bola = bola.move(bolavelo)

if bola.left < 0 or bola.right > width:
bolavelo[0] = -bolavelo[0]
if bola.top < 0 or bola.bottom > height:
bolavelo[1] = -bolavelo[1]

if bola.colliderect(barra1) or bola.colliderect(barra2):
bolavelo[0] = -bolavelo[0]

if bola.left < 0:
pontos2 =+ 1
if bola.right > width:
pontos1 =+ 1

tela.fill(preto)
tela.blit(bolaimg, bola)
tela.blit(barraimg1, barra1)
tela.blit(barraimg2, barra2)
tela.blit(texto1, (100,10))
tela.blit(texto2, (440,10))
pygame.display.flip()
pygame.time.wait(25)



  


2. Re: PyGame - tecla reptida

Gabriel
g_s.lima

(usa Ubuntu)

Enviado em 29/04/2010 - 22:32h

Nunca utilizei pygame, mas creio que a lógica é a mesma. Não entendi a sua pergunta. Você quer acelerá-lo ao invés de dar passo por passo? Nesse caso você deve utilizar um loop principal e verificar se a tecla está ativada.

Note que tecla pressionada é uma força aplicada sobre o objeto. Força resulta em aceleração. Então ao pressionar um botão você deve mudar a velocidade em que o objeto muda de posição e não a posição em si. A velocidade deve mudar a posição.

Eu não li o seu código, portanto meus comentários não estão baseados nele. Espero ter ajudado... Abço


3. Re: PyGame - tecla reptida

Gabriel
g_s.lima

(usa Ubuntu)

Enviado em 29/04/2010 - 22:39h

Uma dica: sempre quando programar, não economise comentários. Estou olhando seu código e fica difícil de entender. Por exemplo

global pontos1 // numero de pontos 1

e

// sai do jogo
if event.type == pygame.QUIT: sys.exit()

comentario é essencial, principalmente para nós do opensource...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts