global dirty
dirty = True
def draw() :
#Aqui va el codigo de ploteo y de dibujo
global dirty
dirty = False # Como recien fue dibujado ya no esta sucio
def main():
while True
if dirty:
draw()
Es tan facil como esto, ahora como ejemplo final voy a reescribir el codigo del ploteo isometrico ocupando dirty rects
#-------Empieza Codigo-----------
#Isometric Plot
import pygame
from pygame import *
global dirty
dirty = True
TILESIZE = 64
SCREEN = pygame.display.set_mode((800, 600))
BLUE = (0, 0, 200)
GROUND_IMAGE = pygame.image.load('grass.png')
def plot():
SCREEN.fill((0, 200 , 0))
"""Aqui en el range es donde vamos a poner cuantos tiles queremos dibujar
En este caso son 15 tiles en la direccion y, y 10 tiles en la direccion x
y por lo tanto vamos a dibujar 150 tiles"""
for y in range(0, 15):
for x in range(0, 10):
"""tenemos 2 tipos de posiciones en este ploteo,
posiciones de pixeles y posiciones de tiles,
la posiciones de pixeles se incrementan de 1 en 1,
las de tile depende del ploteo que queramos,
en este caso nuestra imagen mide 64*32 pixeles,
por lo tanto cada posicion horizontal esta a 64 pixeles
de la siguiente, pero en el caso vertical,
las imagenes estan distanciadas por 32 pixeles
y dijimos que habia que moverse desde
la mitad de la imagen para abajo
o sea: imagen/4 para abajo
"""
tile_x = x * TILESIZE
tile_y = y * TILESIZE/4
if y % 2 == 0: # si estamos en una fila par(partiendo desde 0 seria la fila 0,2,4,6,8)
SCREEN.blit(GROUND_IMAGE, (tile_x, tile_y))
else:
tile_x += 32 # corregimos la posicion para las filas impares
SCREEN.blit(GROUND_IMAGE, (tile_x, tile_y))
global dirty
dirty = False
def main():
clock = pygame.time.Clock()
fps = 40
ready = False
while not(ready):
clock.tick(fps)
print clock.get_fps()
if dirty:
plot()
pygame.display.update()
events = pygame.event.get()
for event in events:
if event.type == QUIT:
return
if event.type == KEYDOWN:
ready = True
main()
#-------Termina Codigo-----------
No hay comentarios:
Publicar un comentario