[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] immediate mode not working?



OK I noticed that by pumping the event queue, with pygame.event.get() , I actually manage to see the blue squares being drawn, but only when this command is written. If I flip again, I'd have to pump the event queue once again.

--- On Tue, 7/8/08, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
From: Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [pygame] immediate mode not working?
To: pygame-users@xxxxxxxx
Date: Tuesday, July 8, 2008, 4:46 PM

Blit works just fine for me - it's not a fill vs. blit thing - the problem you just experienced is something else - it's possible events need to get processed again? try calling pygame.event.get() when things don't seem to work (if you are not pumping the event loop, btw, you are not using pygame in a supported fashion, and the results are unpredictable)

anyways, I did the sequence of stuff below, and it all worked exactly as expected for me (demonstrating blits can work fine)

C:\Documents and Settings\Owner>c:\python25\python
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.init()
(6, 0)
>>> screen=pygame.display.set_mode((400,300))
>>> pygame.event.get()
[<Event(1-ActiveEvent {'state': 1, 'gain': 0})>, <Event(1-ActiveEvent {'state': 2, 'gain': 0})>, <Event(17-VideoExpose {...
>>> blueSquare = pygame.surface.Surface((50,50))
>>> blueSquare.fill((0,0,255))
<rect(0, 0, 50, 50)>
>>> screen.blit(blueSquare, (30,30))
<rect(30, 30, 50, 50)>
>>> pygame.display.flip()
>>> screen.blit(blueSquare, (100,100))
<rect(100, 100, 50, 50)>
>>> pygame.display.flip()
>>> screen.blit(blueSquare, (200,130))
<rect(200, 130, 50, 50)>
>>> pygame.display.flip()

On Tue, Jul 8, 2008 at 3:57 PM, Gabriel Hasbun <gastomaster@xxxxxxxxx> wrote:
You are right, filling the screen seems to work, but not blitting to it.


C:\Documents and Settings\Gabriel>python
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.init()
(6, 0)
>>> screen=pygame.display.set_mode((400,300))
>>> pygame.event.get()
[<Event(4-MouseMotion {'buttons': (0, 0, 0), 'pos': (248, 117), 'rel': (248, 117
)})>, <Event(4-MouseMotion {'buttons': (0, 0, 0), 'pos': (248, 117), 'rel': (0,
0)})>, <Event(1-ActiveEvent {'state': 2, 'gain': 0})>, <Event(17-VideoExpose {})
>, <Event(1-ActiveEvent {'state': 1, 'gain': 0})>]

>>> screen.fill((255,255,255))
<rect(0, 0, 400, 300)>
>>> pygame.display.flip()
>>> screen.fill((255,0,0))
<rect(0, 0, 400, 300)>
>>> pygame.display.flip()
>>> screen.fill((255,240,70))
<rect(0, 0, 400, 300)>
>>> pygame.display.update()
>>> blueSquare = ((0,0,255))
>>> blueSquare = pygame.surface.Surface((50,50))
>>> blueSquare.fill((0,0,255))
<rect(0, 0, 50, 50)>                           # everything alright up until here.
>>> screen.blit(blueSquare, (30,30))
<rect(30, 30, 50, 50)>
>>> pygame.display.update()            # pygame window at this point is non responsive.
>>>





--- On Tue, 7/8/08, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
From: Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx>

Subject: Re: [pygame] immediate mode not working?
To: pygame-users@xxxxxxxx
Date: Tuesday, July 8, 2008, 3:03 PM


The problem is that you need to tell SDL to process windows messages before your window can be used (any event getting function should do)

try this:
---------
import pygame
pygame.init()
screen = pygame.display.set_mode((400,300))
pygame.event.get()
screen.fill((255,255,255))
pygame.display.flip()
screen.fill((0,0,0))
pygame.display.flip()
---------

it worked in a command prompt console for me

On Tue, Jul 8, 2008 at 2:09 PM, Gabriel Hasbun <gastomaster@xxxxxxxxx> wrote:
sure:

C:\Documents and Settings\Gabriel>python
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.init()
(6, 0)
>>> screen = pygame.display.set_mode((400, 300))
>>> whiteSquare = pygame.surface.Surface((50,50))
>>> whiteSquare.fill((255,0,0))
<rect(0, 0, 50, 50)>
>>> screen.blit(whiteSquare, (100,100))
<rect(100, 100, 50, 50)>
>>> pygame.display.flip()
>>>

As you can guess nothing happens on my pygame window, while using the MSDOS(the real) python.

--- On Tue, 7/8/08, Ian Mallett <geometrian@xxxxxxxxx> wrote:
From: Ian Mallett <geometrian@xxxxxxxxx>
Subject: Re: [pygame] immediate mode not working?
To: pygame-users@xxxxxxxx
Date: Tuesday, July 8, 2008, 1:16 PM


Could we see the code?
-I