pygame is
Simple DirectMedia Layer is
Site Swing

GRIP - 0.82

Stuart Laxton (shannow)



The game was written during June, July and August 2012 from scratch with the exception of the sprite rotation code which was taken from TankorSmash's tutorial page. The game is the second I've wrote, the first being Hangman+. The idea behind the game was for a more realistic top down racing game where finding the quickest racing line is key rather than power sliding around corners. The original plan was for multiple racers and AI but I'd rather release the current version based on lap timing / ghost laps and get some feedback before spending months more time on it. Hints & Tips The faster bikes accelerate slower and take longer to slow down for corners. You are best starting with Bike 1 and learning the tracks before moving onto the faster bikes. On the slower, technical tracks boosting out of corners is the key to the fastest laptimes. Also try not to hold boost down too long - many short bursts of boost give you a quicker overall time as your bike takes a while to drop from the boosted top speed. You are allowed to clip corners but if you are on the grass for more than 0.5 seconds over the lap then your lap time is invalidated. You must also cross the 2 sector / timing lines for your lap to count. You only get a ghost bike once a valid lap has been completed. Future plans I'm also looking to implement in future releases the following :- Permanent recording of ghost laps Sound! Network / multiplayer


New Features: Skidmarks! Braking and boosting now leave a mark on the track surface for the duration of the time trial. The ghost replay seen in the display laptimes screen shows the track with skidmarks present as they were at end of the time trial. Braking leaves twin skidmarks (front/rear) whilst boosting leaves a single track (rear) Going off the racetrack also leaves tyre tracks on the grass. Altered Bike Behaviour As part of the new skidmarks feature the bikes now skid under braking and acceleration due to boosting. The length of slide is dependant on the bike speed. The affect of the skid has been softened from earlier (unreleased) versions of the code where hitting the brakes during cornering would lock the direction of travel and send you straight off - now the rotation still happens during braking but as part of a more controllable drift. Bug Fixes Fixed issues with larger screen sizes Removed support for 640 x 480 Fixed ghost replace freeze after displaying 1 ghost lap in lap time screen Fixed irritating Python 2.7 timing bug (dividing 2 integers returns an integer in 2.7) Other code cleanup / dead variable removal


Home Page:


click to view original size


GRIP - 0.102 - Apr 18, 2013
GRIP - 0.82 - Sep 14, 2012
GRIP - 0.63 - Sep 2, 2012
GRIP - 0.52 - Aug 28, 2012
GRIP - 0.31 - Aug 4, 2012 account Comments

If you wish to leave a comment with your account, please sign in first.

September 17, 2012 8:57pm - Stuart Laxton - nickname: (shannow)
Thanks Chavdar!
I wondered why someone had downloaded the old original version recently - I've learnt a lot since starting this project and it's great finding out how to do stuff I've seen in other games :-)
September 16, 2012 9:12pm - chavdar - nickname: (chabuduo) - 5/5
wow exceptional!
i checked out the earlier versions just to check the evolution ^^
August 29, 2012 12:48pm - Stuart Laxton - nickname: (shannow)
Thanks for the comments and tips Spacemax :-) I'll get those fixes done and release a Linux friendly version later this week. Thanks for playing & commenting :-)
August 28, 2012 11:13pm - Maxime - nickname: (spacemax) - 5/5
At first, congratulations. It had a long time i hadn't saw a so cool game :)
Good quality of the Graphisms, fluid animations just not enough sounds !!!
The bike is easy to drive except the key use to accelarate and break which are too near from themselves (w&s)

Some issues to resolve :
File "/home/max/documentations/python/sources/python/grip/", line 90, in <module>
bikeImage = pygame.image.load('graphics\\bike1.png').convert_alpha()
pygame.error: Couldn't open graphics\bike1.png

On linux distribution, use the slash (working too on windows):
bikeImage = pygame.image.load('graphics/bike1.png').convert_alpha()
Traceback (most recent call last):
File "/home/max/documentations/python/sources/python/grip/", line 1222, in <module>
File "/home/max/documentations/python/sources/python/grip/", line 472, in shadowGraphics
shadowImage1 = pygame.image.load('graphics/shadow1.png').convert_alpha()
pygame.error: Couldn't open graphics/shadow1.png

The file is named shadow1.PNG. Rename it (and the others) all in lowercase characters cause linux is sensitive case.

File "/home/max/documentations/python/sources/python/grip/", line 1318, in <module>
playerRotatedImage = pygame.transform.rotate(playerImage[playerImage[0]],degree)
IndexError: list index out of range

This issue is due at the empty table playerImage when no choice is done at the begining of the game
Adding this at line 1225 after menu(), resolve it :

if playerImage==[]:

nice work anyway; Good trip with ghost...
August 4, 2012 1:55pm - Erik Martin - nickname: (neccarus)
Awesome, keep it up.

our projects welcomes all python game, art, music, sound, video and multimedia projects. If they use pygame or not.
recent releases
Feb 21, 2017

Jan 31, 2017

Jan 24, 2017

Jan 18, 2017

Jan 7, 2017

Dec 30, 2016

Dec 8, 2016

Nov 28, 2016

Nov 27, 2016

... more!
for pygame related questions, comments, and suggestions, please see help (lists, irc)