duminică, 7 august 2011

pygame script tool - colors

This is a simple script to allow us to see all colors used by pygame.

import pygame
from pygame.locals import *
from pygame.color import THECOLORS
from time import sleep

def main():
    WINSIZE = 640,480
    pygame.init()
    screen = pygame.display.set_mode(WINSIZE,0,8)
    pygame.display.set_caption('Colors in pygame!')

    for i,j in THECOLORS.iteritems():
        print i
 screen.fill(THECOLORS[i])
 font = pygame.font.Font(None, 36)
 text = font.render(i, 1,(0,0,0),(100,100,100))
 sleep(1.1)
 textpos = text.get_rect()
 textpos.centerx = screen .get_rect().centerx
 screen.blit(text, textpos)
 pygame.display.update()

if __name__=="__main__":
    main()

The script is very simple, just try it.

pygame.display routines

Start pygame display:

C:\>python
Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.display.init()

pygame.display.Info() creates object with some data about hardware:

>>> pygame.display.Info()

Here is the interpretation of output.

hw: True if the display is hardware accelerated
wm: True if windowed display modes can be used
video_mem: The megabytes of video memory on the display. This is 0 if unknown
bitsize: Number of bits used to store each pixel
bytesize: Number of bytes used to store each pixel
masks: Four values used to pack RGBA values into pixels
shifts: Four values used to pack RGBA values into pixels
losses: Four values used to pack RGBA values into pixels
blit_hw: True if hardware Surface blitting is accelerated
blit_hw_CC: True if hardware Surface colorkey blitting is accelerated
blit_hw_A: True if hardware Surface pixel alpha blitting is accelerated
blit_sw: True if software Surface blitting is accelerated
blit_sw_CC: True if software Surface colorkey blitting is accelerated
blit_sw_A: True if software Surface pixel alpha blitting is acclerated
current_h, current_h: Width and height of the current video mode, or of the
desktop mode if called before the display.set_mode is called.

This will return the name of the currently running video driver.

>>> pygame.display.get_driver()
'directx'

Without arguments list_modes returns a list of possible dimensions

>>> pygame.display.list_modes()
[(1024, 600), (800, 600), (640, 480), (640, 400), (600, 1024), (600, 800), (512,
 384), (480, 640), (400, 640), (400, 300), (384, 512), (320, 240), (320, 200)]

How to query a specific display mode.

>>> full=pygame.FULLSCREEN | pygame.HWSURFACE | pygame.DOUBLEBUF
>>> pygame.display.mode_ok( [ 800,600 ], full, 32)
32

You can create such a script to help you.

>>> for i in pygame.display.list_modes():
...     a=pygame.display.mode_ok(i,full,16)
...     print "FULLSCREEN | HWSURFACE | DOUBLEBUF for "+str(i)+" x "+str(a)
...
FULLSCREEN | HWSURFACE | DOUBLEBUF for (1024, 600) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (800, 600) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (640, 480) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (640, 400) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (600, 1024) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (600, 800) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (512, 384) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (480, 640) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (400, 640) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (400, 300) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (384, 512) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (320, 240) x 16
FULLSCREEN | HWSURFACE | DOUBLEBUF for (320, 200) x 16

See more here.