Jump to content
  • Advertisement
Sign in to follow this  
PaladinJohn

Pausing Python (or causing a delay)

This topic is 2263 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Apologies ahead of time if I'm not articulating my issue clearly enough but I'm having trouble pausing the logic of my program for half a second before resuming to allow a very basic explosion like effect.

Here is the block of code as I currently have it:

[source lang="python"]def eliminate(self, occupiedGrid):
if len(self.matchedElements) >= 1:
for x in range (0, len(self.matchedElements)):
if self.matchedElements[x].type == 2:
self.remainingBlocks -= 1
occupiedGrid[xToGrid(self.matchedElements[x].x)][yToGrid(self.matchedElements[x].y)].type = 3
self.draw(self.occupiedGrid)
pygame.display.update()
time.sleep(0.5)
for x in range (0, len(self.matchedElements)):
occupiedGrid[xToGrid(self.matchedElements[x].x)][yToGrid(self.matchedElements[x].y)] = 0[/source]
Unfortuantely, this isn't working as intended, as the graphics haven't quite caught up when the pause goes into effect, failing to display the explosion graphic (type 3) and instead skipping right past it. Because of the way the program is written, I can't leave this sequence of events to return to the main loop to artificially create a pause, as this is in the middle of data altering logic and all of the data at this point would be half-altered and create an issue. As a small example, this block of code appears in this sequence of events:

[source lang="python"]def clearObjects(self, occupiedGrid):
self.matchedElements = []
self.checkGrid(self.occupiedGrid)
self.eliminate(self.occupiedGrid)
self.checkLinked(self.occupiedGrid)
self.draw(self.occupiedGrid)
if self.remainingBlocks == 0:
screen.fill((100, 100, 100))
self.showTextScreen('Cleared!', 'Press Escape to Quit or Any Key to Play Again.', 2)
self.delay = True[/source]
For the record, I have tested the program by stopping it completely once the type is changed and it displays the graphic just fine. Without a pause, however, the graphic is not up long enough for the human eye to discern it was there in the first place as the program quickly moves to the part where it clears the graphic and creates an empty space in it's place.

Share this post


Link to post
Share on other sites
Advertisement
Just wanted to post an update saying that I discovered the issue after getting some sleep. The delay was working just fine, but I had made the mistake of forgetting to call this lovely block of text before the pygame.display.update()
[source lang="python"]self.allSprites.clear (screen, self.background)
self.inactiveSprites.clear (screen, self.background)
self.allSprites.update()
self.inactiveSprites.update()
self.allSprites.draw(screen)
self.inactiveSprites.draw(screen)[/source]
After giving it it's own function and a minor tweak to the code I got it to work as intended. Thank you to any one that might have been puzzling over this.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!