## Python 3 PyGame 2D Car Movement Dodging Driving Racing Game GUI Desktop App Full Project For Beginners Welcome folks today in this blog post we will be building a `2d car movement dodging driving racing game` in tkinter using `pygame` library in python. All the full source code of the application is shown below.

# Get Started

In order to get started you need to install the below library using the `pip` command as shown below

`pip install pygame`

Now download the below source code for the `car driving racing game` as shown below

`DOWNLOAD SOURCE CODE`

Or you can `clone` the github repository by using the `git` command as shown below

`git clone https://github.com/rasmaxim/pygame-car-tutorial.git `

`cd pygame-car-tutorial`

`python game.py`

Now you can also see the directory structure of the `game` as shown below After installing this library make an `game.py` file and copy paste the below code

`game.py`

``````import os
import pygame
from math import sin, radians, degrees, copysign
from pygame.math import Vector2

class Car:
def __init__(self, x, y, angle=0.0, length=4, max_steering=30, max_acceleration=5.0):
self.position = Vector2(x, y)
self.velocity = Vector2(0.0, 0.0)
self.angle = angle
self.length = length
self.max_acceleration = max_acceleration
self.max_steering = max_steering
self.max_velocity = 20
self.brake_deceleration = 10
self.free_deceleration = 2

self.acceleration = 0.0
self.steering = 0.0

def update(self, dt):
self.velocity += (self.acceleration * dt, 0)
self.velocity.x = max(-self.max_velocity, min(self.velocity.x, self.max_velocity))

if self.steering:
else:
angular_velocity = 0

self.position += self.velocity.rotate(-self.angle) * dt
self.angle += degrees(angular_velocity) * dt

class Game:
def __init__(self):
pygame.init()
pygame.display.set_caption("Car tutorial")
width = 1280
height = 720
self.screen = pygame.display.set_mode((width, height))
self.clock = pygame.time.Clock()
self.ticks = 60
self.exit = False

def run(self):
current_dir = os.path.dirname(os.path.abspath(__file__))
image_path = os.path.join(current_dir, "car.png")
car = Car(0, 0)
ppu = 32

while not self.exit:
dt = self.clock.get_time() / 1000

# Event queue
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.exit = True

# User input
pressed = pygame.key.get_pressed()

if pressed[pygame.K_UP]:
if car.velocity.x < 0:
car.acceleration = car.brake_deceleration
else:
car.acceleration += 1 * dt
elif pressed[pygame.K_DOWN]:
if car.velocity.x > 0:
car.acceleration = -car.brake_deceleration
else:
car.acceleration -= 1 * dt
elif pressed[pygame.K_SPACE]:
if abs(car.velocity.x) > dt * car.brake_deceleration:
car.acceleration = -copysign(car.brake_deceleration, car.velocity.x)
else:
car.acceleration = -car.velocity.x / dt
else:
if abs(car.velocity.x) > dt * car.free_deceleration:
car.acceleration = -copysign(car.free_deceleration, car.velocity.x)
else:
if dt != 0:
car.acceleration = -car.velocity.x / dt
car.acceleration = max(-car.max_acceleration, min(car.acceleration, car.max_acceleration))

if pressed[pygame.K_RIGHT]:
car.steering -= 30 * dt
elif pressed[pygame.K_LEFT]:
car.steering += 30 * dt
else:
car.steering = 0
car.steering = max(-car.max_steering, min(car.steering, car.max_steering))

# Logic
car.update(dt)

# Drawing
self.screen.fill((0, 0, 0))
rotated = pygame.transform.rotate(car_image, car.angle)
rect = rotated.get_rect()
self.screen.blit(rotated, car.position * ppu - (rect.width / 2, rect.height / 2))
pygame.display.flip()

self.clock.tick(self.ticks)
pygame.quit()

if __name__ == '__main__':
game = Game()
game.run()``````

See also  Python 3 Tkinter GUI Script to Get Latest Government Job Information From SarkariResult Website Using BeautifulSoup4 Library Full Project For Beginners

Now if you execute the `python` script by typing the below command as shown below

`python game.py` 