Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import time
- import sys
- import random
- WIDTH, HEIGHT = 600, 700
- WHITE = (255, 255, 255)
- BLUE = (0,100,200)
- PINK = (255, 0, 120)
- BAR = 60
- ### SETTINGS ###
- MIN_ENEMY_SPEED = 4
- MAX_ENEMY_SPEED = 6
- PLAYER_SPEED = 3
- MIN_BALL_WIDTH = 20
- MAX_BALL_WIDTH = 30
- ENEMY_COLOR = WHITE
- PLAYER_COLOR = PINK
- DIFFICULTY_LEVEL = 15
- MAX_LIFE = 10
- PLAYER_SIZE = 30
- MAX_PLAYER_UP_POS = 200
- ### SETTINGS ###
- enemies = []
- pygame.init()
- canvas = pygame.display.set_mode((WIDTH,HEIGHT))
- background = pygame.Surface((WIDTH,HEIGHT))
- font = pygame.font.SysFont("Calibri", 30)
- pygame.display.set_caption('Dodger')
- clock = pygame.time.Clock()
- def drawBorder(y):
- pygame.draw.line(canvas, WHITE, (0, y), (WIDTH, y), 2)
- def quitGame():
- pygame.quit()
- sys.exit(0)
- def drawScore():
- global score
- life_text = font.render("{} / {} ".format(player.life, MAX_LIFE), 1, WHITE)
- rect_life = life_text.get_rect()
- rect_life.x = BAR/2
- rect_life.centery = HEIGHT - BAR/2
- canvas.blit(life_text, (rect_life.x, rect_life.y))
- score_text = font.render("{}".format(score), 1, WHITE)
- rect_score = score_text.get_rect()
- rect_score.right = WIDTH - BAR/2
- rect_score.centery = HEIGHT - BAR/2
- canvas.blit(score_text, (rect_score.x, rect_score.y))
- class Enemy():
- def __init__(self):
- self.randomize()
- def randomize(self):
- x = random.randint(0, WIDTH - 50)
- y = random.randint(-700, -10)
- w = random.randint(MIN_BALL_WIDTH, MAX_BALL_WIDTH)
- self.speed = random.randint(MIN_ENEMY_SPEED, MAX_ENEMY_SPEED)
- self.rec = pygame.Rect(x, y, w, w)
- def update(self):
- self.rec.y += self.speed
- if self.rec.bottom > HEIGHT - BAR:
- self.randomize()
- def show(self):
- pygame.draw.rect(canvas, ENEMY_COLOR, self.rec, 0)
- class Player():
- def __init__(self):
- self.rec = pygame.Rect(0, HEIGHT - (BAR + PLAYER_SIZE), PLAYER_SIZE, PLAYER_SIZE)
- self.rec.centerx = WIDTH/2
- self.speed = PLAYER_SPEED
- self.horizontalDir = 0
- self.verticalDir = 0
- self.life = MAX_LIFE
- def move(self):
- self.rec.x += self.speed * self.horizontalDir
- self.rec.y += self.speed * self.verticalDir
- if self.rec.left <= 0:
- self.rec.left = 0
- elif self.rec.right >= WIDTH:
- self.rec.right = WIDTH
- if self.rec.top <= HEIGHT - MAX_PLAYER_UP_POS:
- self.rec.top = HEIGHT - MAX_PLAYER_UP_POS
- elif self.rec.bottom >= HEIGHT - BAR:
- self.rec.bottom = HEIGHT - BAR
- def update(self, enemy):
- if self.rec.colliderect(enemy.rec):
- self.life -= 1
- def show(self):
- pygame.draw.rect(canvas, PLAYER_COLOR, self.rec, 0)
- for i in range(DIFFICULTY_LEVEL):
- enemies.append(Enemy())
- player = Player()
- score = 0
- start = time.time()
- def theGame():
- global score
- global start
- player.horizontalDir = 0
- player.verticalDir = 0
- keys = pygame.key.get_pressed()
- if keys[pygame.K_LEFT]:
- player.horizontalDir = -1
- elif keys[pygame.K_RIGHT]:
- player.horizontalDir = 1
- if keys[pygame.K_UP]:
- player.verticalDir = -1
- elif keys[pygame.K_DOWN]:
- player.verticalDir = 1
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- quitGame()
- canvas.blit(background, (0,0))
- drawBorder(HEIGHT - BAR)
- drawScore()
- current = time.time()
- score = int(current - start)
- for enemy in enemies:
- enemy.update()
- enemy.show()
- player.update(enemy)
- player.move()
- player.show()
- while player.life <= 0:
- canvas.fill((0,0,0,))
- line1 = 'The End'
- line2 = 'Your score: ' + str(score)
- line3 = 'press P to play again'
- line4 = 'press Q to quit'
- textSet1 = font.render(line1, True, (PINK))
- textSet2 = font.render(line2, True, (PINK))
- textSet3 = font.render(line3, True, (PINK))
- textSet4 = font.render(line4, True, (PINK))
- canvas.blit(textSet1,(20,20))
- canvas.blit(textSet2,(20,80))
- canvas.blit(textSet3,(20,140))
- canvas.blit(textSet4,(20,200))
- pygame.display.flip()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- quitGame()
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_p:
- player.life = MAX_LIFE
- score = 0
- start = time.time()
- player.rec.centerx = WIDTH/2
- player.rec.bottom = HEIGHT - BAR
- enemies.clear()
- for i in range(DIFFICULTY_LEVEL):
- enemies.append(Enemy())
- return
- elif event.key == pygame.K_q:
- quitGame()
- pygame.display.flip()
- clock.tick(60)
- while True:
- theGame()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement