droppinggems append{'imagenum'boardcopy[ ][ ]' ' ' ' 'direction'down boardcopy[ ][yempty_space return droppinggems def animatemovinggems(boardgemspointstextscore) pointstext is dictionary with keys ' '' 'and 'points progress progress at represents beginning means finished while progress animation loop displaysurf fill(bgcolor drawboard(board for gem in gemsdraw each gem drawmovinggem(gemprogress drawscore(score for pointtext in pointstext pointssurf basicfont render(str(pointtext['points']) scorecolor pointsrect pointssurf get_rect( pointsrect center (pointtext[' ']pointtext[' '] displaysurf blit(pointssurfpointsrect pygame display update( fpsclock tick(fps progress +moverate progress the animation little bit more for the next frame def movegems(boardmovinggems) movinggems is list of dicts with keys xydirectionimagenum for gem in movinggems if gem[' '!rowaboveboard board[gem[' ']][gem[' ']empty_space movex movey if gem['direction'=left movex - elif gem['direction'=right movex elif gem['direction'=down movey elif gem['direction'=up movey - board[gem[' 'movex][gem[' 'moveygem['imagenum' else gem is located above the board (where new gems come fromemail questions to the authoral@inventwithpython com