# **Doodle Jump**
```
import pygame
import sys
import random
class DoodleJump:
def __init__(self):
# initialize the attributes
pygame.font.init()
self.screen = pygame.display.set_mode((400, 533))
self.title = pygame.display.set_caption("Doodle Jump!")
self.background = pygame.image.load("images/background.png")
self.doodle1 = pygame.image.load("images/doodle1.png")
self.doodle2 = pygame.image.load("images/doodle2.png")
self.platform = pygame.image.load("images/platform.png")
self.font = pygame.font.SysFont("comicsans", 30)
self.playerX = 150
self.playerY = 150
self.platX = 0
self.platY = 0
self.platList = []
self.dy = 0
self.cameraY = 200
self.score = 0
def messageToScreen(self, msg, color, x, y, size):
# showing the message in the screen
pygame.font.init()
self.screenfont = pygame.font.SysFont("comicsans", size)
self.screen.blit(self.screenfont.render(msg, True, color), (x, y))
pygame.display.update()
def generatePlatforms(self):
# generating the initial platforms
for i in range(12):
self.platX = random.randrange(0, 400)
self.platY = random.randrange(0, 533)
self.platList.append([self.platX, self.platY])
def updatePlayer(self):
# manipulating the player
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.playerX -= 3
self.doodle2 = pygame.image.load("images/doodle2.png")
elif keys[pygame.K_RIGHT]:
self.playerX += 3
self.doodle2 = pygame.transform.flip(pygame.image.load("images/doodle2.png"), True, False)
# moving through the left or the right boundary
if self.playerX > 400:
self.playerX = -50
elif self.playerX < -50:
self.playerX = 400
# falling
self.dy += 0.12
self.playerY += self.dy
# jumping: step in the plates
for plat in self.platList:
if (self.playerX + 50 > plat[0]) and (self.playerX + 20 < plat[0] + 68) and (self.playerY + 70 > plat[1]) and (self.playerY + 70 < plat[1] + 14) and self.dy > 0:
self.dy = -10
def updatePlatforms(self):
# moving the screen
if self.playerY < self.cameraY:
self.playerY = self.cameraY
for plat in self.platList:
plat[1] = plat[1] - self.dy
if plat[1] > 533:
plat[1] = 0
plat[0] = random.randrange(0, 400)
self.score += 50
def gameOver(self):
# stopping the game when gameover
if self.playerY > 533:
self.screen.fill((255, 255, 255))
self.messageToScreen("Game Over!", (255, 0, 0), (400 / 2 - 100), (533 / 2 - 30), 40)
self.messageToScreen("Press SPACE to play again.", (0, 0, 0), (400 / 2 - 190), (533 / 2 + 10), 40)
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
DoodleJump().run()
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
def run(self):
# main function
self.generatePlatforms()
while True:
# builting items in the screen
self.screen.blit(self.background, (0, 0))
for plat in self.platList:
self.screen.blit(self.platform, (plat[0], plat[1]))
self.screen.blit(self.font.render("Score: " + str(self.score), True, (0, 0, 0)), (10, 10))
self.screen.blit(self.doodle2, (self.playerX, self.playerY))
# closing the screen
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
self.updatePlayer()
self.updatePlatforms()
self.gameOver()
pygame.display.update()
DoodleJump().run()
```