PCR has a cursor class: http://www.pygame.org/pcr/repository.html pyzzle includes some hand-shaped cursor images. pyzzle required smpeg. 4stattack isn't all that dissimilar from what I want to do. drawing is covered here: http://pygame.org/docs/ref/pygame_draw.html Lots of good doc here: http://pygame.org/docs/ So how do you create surfaces? As mentioned above, you create the special 'display surface' with pygame.display.set_mode(). You can create a surface that contains an image by using image.load(), or you can make a surface that contains text with font.render(). You can even create a surface that contains nothing at all with Surface(). Done: 1) Figure out the basics of GTP (write python program to match two gnugo's) 2) good enough stone images for testing 3) Figure out the basics of pygame (read tutorials) 4) open window 5) get mouse position and buttons (done mouse exper., but not in game) 6) place sprite at mouse position 7) draw board 9) blit right at vertices 10) two color alternation - two player game 11) board datastructure 12) removal of captured stones (probably done, not that well tested tho) 13) interface with gnugo via gtp 14) pass moves (sort of done, but button is mispositioned) 15) get score from gnugo via gtp (sort of done, but nongui) 16) board background picture 17) nice stone pictures - transparent? 18) play stoneclick sounds 20) counts of removed stones on side 25) last move marker Need/want (22 steps to a really nice program) : 19) link to intro web pages 21) undo 22) allow optional clicking of dead stones 23) blit stones approximately at vertices - but not too far off 24) nice mouse cursor