Skip to content
Permalink
36592ab040
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
195 lines (154 sloc) 5.43 KB
import pygame
import random
import math
from pygame import mixer
# initialize pygame
pygame.init()
# screen resolutions
width = 800
height = 425
screen = pygame.display.set_mode((width, height)) # create screen
# Background
background = pygame.image.load('img/background.jpg')
# Soundtrack
mixer.music.load('31 Flashback.mp3')
mixer.music.play(-1)
# Title and Icon
pygame.display.set_caption("You should be in quarantine!")
icon = pygame.image.load('img/icon.png')
pygame.display.set_icon(icon)
# Player
playerImg = pygame.image.load('img/player.png')
playerX = 100
playerY = 360
playerX_change, playerY_change = 0, 0
score = 0
# Enemy
enemyImg = []
enemyX = []
enemyY = []
enemyX_change = []
enemyY_change = []
num_of_enemies = 6
for i in range(num_of_enemies):
enemyImg.append(pygame.image.load('img/enemy.png'))
enemyX.append(random.randint(150, width - 32))
enemyY.append(360)
enemyX_change.append(-0.7)
enemyY_change.append(0)
# Player spray Attack: Ready - spray attack isn't being seen / Fire - spray is moving
sprayImg = pygame.image.load('img/spray.png')
sprayX = 0
sprayY = 360
sprayX_change = 2
spray_state = "ready"
# Score text
score_value = 0
font = pygame.font.Font('8-BIT WONDER.ttf', 18)
textX, textY = 10, 10
# Game Over text
over_font = pygame.font.Font('8-BIT WONDER.ttf', 36)
game_over = False # game_over remains False until player loses the game
def show_score(x, y):
score = font.render("Score " + str(score_value), True, (245, 194, 66))
screen.blit(score, (x, y))
def game_over_text():
over_text = over_font.render("GAME OVER", True, (0, 0, 0))
screen.blit(over_text, (int(width / 2) - 160, int(height / 2) - 20))
def player(x, y):
screen.blit(playerImg, (x, y))
def enemy(x, y, i):
screen.blit(enemyImg[i], (x, y))
def player_attack(x, y):
global spray_state
spray_state = "fire"
screen.blit(sprayImg, (x + 10, y + 10))
def isCollision(x1, y1, x2, y2):
distance = math.sqrt((math.pow(x1 - x2, 2)) + (math.pow(y1 - y2, 2)))
if distance < 27:
return True
return False
# Game loop
running = True
while running: # leaves window opened
screen.fill((250, 152, 3)) # note: things appear on top of the things above it in the code
# background image
screen.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# when key is being pressed, below are all the game keys
if event.type == pygame.KEYDOWN and game_over is False:
if event.key == pygame.K_LEFT:
playerX_change = -1
if event.key == pygame.K_RIGHT:
playerX_change = 1
if event.key == pygame.K_UP:
playerY_change = -1
if event.key == pygame.K_DOWN:
playerY_change = 1
if event.key == pygame.K_z:
if spray_state is "ready":
# spray_sound = mixer.Sound('quickfart.wav') #later change .wav to the spray sound
# spray_sound.play()
# get's current x, y coordinate of the player
sprayX = playerX
sprayY = playerY
player_attack(sprayX, sprayY)
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
playerX_change = 0
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
playerY_change = 0
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
game_over = False
playerX += playerX_change
playerY += playerY_change
# set boundaries so player doesn't leave the screen
if playerX <= 0:
playerX = 0
elif playerX >= width - 32:
playerX = width - 32
if playerY <= 0:
playerY = 0
elif playerY >= height - 32:
playerY = height - 32
# Enemy movement patterns
for i in range(num_of_enemies):
# Game over
player_collision = isCollision(playerX, playerY, enemyX[i], enemyY[i])
if player_collision:
score_value = 0
game_over = True
enemyX[i] += enemyX_change[i]
# set boundaries to define enemy movement
if enemyX[i] <= 0: # later change this value to any left boundary, like a wall on it's left
enemyX_change[i] = 0.7
elif enemyX[i] >= width - 32: # later change this value to any right boundary, like a wall on it's right
enemyX_change[i] = -0.7
# Collision between attack and enemy
attack_collision = isCollision(enemyX[i], enemyY[i], sprayX, sprayY)
if attack_collision:
sprayY = height
spray_state = "ready"
score_value += 1
enemyX[i] = random.randint(120, width - 32)
enemyY[i] = 360
enemydeath_sound = mixer.Sound('quickfart.wav') # later change .wav to the player being attacked sound
enemydeath_sound.play()
enemy(enemyX[i], enemyY[i], i)
# Spray attack movement
if sprayX >= width:
sprayX = 0
spray_state = "ready"
if spray_state is "fire":
sprayX += sprayX_change
player_attack(sprayX, sprayY)
# When player loses the game:
if game_over:
game_over_text()
player(playerX, playerY)
show_score(textX, textY)
# note: things appear on top of the things above it in the code
pygame.display.update()