Another simple graphical trick you can play with in games is lightning.  One algorithm for this is to draw a white square over the entire bounds of the screen for a very short time.  The following code can be used to flash every second:

#Lightning.py
#Flash of lightning visual effect.

import pygame

from engine.AtlanSprite import AtlanSprite

class Lightning(AtlanSprite):

“”"
AtlanSprite is one of my game engine classes.
Replace this with your own basic sprite class.
“”"

def __init__(self, m):

“”"
Constructor – set up the counter variable and bounds.
m = whatever container class you are using
“”"
AtlanSprite.__init__(self)
#make the bounds however large your screen size is
self.bounds = pygame.Rect(0, 0, 800, 600)
self.master = m
self.counter = 0
self.flashing = False

def draw(self, surface):

“”"
Called from the main game loop every frame.
Draw a white square when the lightning is flashing.
“”"

if self.flashing:

#see pygame.org’s documentation on the surface.fill() method
surface.fill((255, 255, 255), self.bounds)

def update(self, time):

“”"
Should be called every game frame with the time that has ellapsed.
time = time elapsed in milliseconds

“”"

self.counter = self.counter + time
#flash every second

if self.counter >= 1000:

if not self.flashing:

self.flashing = True

#only flash for 50 milliseconds

if self.counter >= 1050:

self.flashing = False
self.counter = 0

This works best if you have a thunder sound effect to go with it.  The reason it works is that the square is drawn so quickly that the human eye can’t really tell what is going on.  All you see is everything get brighter so it looks like lightning flashed.  Note that you’ll probably want to draw the lightning last in your list of sprites so that it doesn’t get covered up by anything else.