Dobrý den,
začal jsem pohrávat s moduly pygame, ale hned ze začátku jsem narazil na problém který mi stále neleze do hlavy.
Vykreslil jsem si pozadí do okna pomocí for cyklů. Dále jsem vykreslil obrázek a FPS. Problém nastává hned po zapnutí(jak je vidět na obrázku). Je mi jasné, že chyba je v nepřekreslování pozadí, tudíž přepsané pixely se nevrátí na výchozí barvu, vím i jak by bylo možné je překreslit, ale problém je, že v mém podání je to velmi náročné (ze 750FPS na 90FPS, protože vykresluji celé pozadí v každém cyklu znova a znova). Mohli by jste mi někdo dát radu, jak tento problém opravit? Nejspíš jsem ještě nepochopil celkově princip blitu a rectu,... :(
http://img177.imageshack.us/img177/9969/63632183.png
# -*- coding: cp1250 -*-
import pygame, os, sys
from pygame import *
def main():
pygame.init()
mx, my = 0, 0
x, y = 0, 0
obraz = pygame.display.set_mode((640, 480))
hodiny = pygame.time.Clock()
platno = pygame.image.load(os.path.join('grafika', 'tankbrigade.png')).convert()
platno.set_colorkey(0)
for i in range(20):
for j in range(20):
obraz.blit(platno, (i*32, j*32), (198, 132, 32, 32))
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_UP:
my = -1
if event.key == K_DOWN:
my = 1
if event.key == K_LEFT:
mx = -1
if event.key == K_RIGHT:
mx = 1
if event.type == KEYUP:
if event.key == K_UP:
my = 0
if event.key == K_DOWN:
my = 0
if event.key == K_LEFT:
mx = 0
if event.key == K_RIGHT:
mx = 0
x += mx
y += my
tank = obraz.blit(platno, (x, y), (495, 33, 32, 32))
tank.move(x, y)
hodiny.tick()
font = pygame.font.Font(None, 18)
text = font.render(str(hodiny.get_fps()), 1, (10, 10, 10))
obraz.blit(text, (500, 15))
pygame.display.flip()
if __name__ == '__main__': main()