Untitled
unknown
plain_text
2 years ago
6.7 kB
8
Indexable
import pygame
import math
import random
pizza_position = [960, 540]
pygame.init()
score = 0
health = 3
CYAN = (0, 255, 148)
GOLD = (241, 196, 15)
#define screen sixe
SCREEN_WIDTH = 1920
SCREEN_HEIGHT = 1080
#create game window
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Equihacks S1 Submission")
myfont = pygame.font.SysFont("fira sans medium", 70)
myfont2 = pygame.font.SysFont("fira sans medium", 70)
#define colours
pygame.mouse.set_visible(False)
BG = (255, 255, 255)
BLACK = (0, 0, 0)
title = pygame.image.load('img/pizza_power-removebg-preview.png')
title_rect = title.get_rect(center = (960, 900))
pizza_original = pygame.image.load('img/pizzacursor.png')
cursor_img = pygame.image.load('img/peppermint-removebg-preview.png')
apple = pygame.image.load('img/APPLEHEALTH-removebg-preview (1).png')
asteroid_l1 = pygame.image.load('img/lemon-removebg-preview.png')
asteroid_l2 = pygame.image.load('img/redlemon-removebg-preview.png')
asteroid_list = []
run = True
speed = 4
asteroid_speed = 3
pizza_speed = 0
DEFAULT_IMAGE_SIZE = (80, 80)
DEFAULT_Cookie_SIZE = (15, 15)
DEAFULT_CURSOR_SIZE = (32, 32)
DEAFULT_APPLE_SIZE = (40, 40)
# Scale the image to your needed sixe
pizza_original = pygame.transform.scale(pizza_original, DEFAULT_IMAGE_SIZE)
cursor_img = pygame.transform.scale(cursor_img, DEAFULT_CURSOR_SIZE)
apple = pygame.transform.scale(apple, DEAFULT_APPLE_SIZE)
x = [10, 1910]
y = [10, 1070]
bullet = pygame.image.load('img/cookie-removebg-preview.png').convert_alpha()
bullet = pygame.transform.scale(bullet, DEFAULT_Cookie_SIZE)
bullet_list = []
#game loop
angle = 0
def asteroid_bullet_collision(score):
for idb, bullet in enumerate(bullet_list):
for ida, asteroid in enumerate(asteroid_list):
if bullet[1].colliderect(asteroid[1]) and asteroid[3] == asteroid_l1:
score += 10
bullet_list.pop(idb)
asteroid_list.pop(ida)
asteroid_create(30, 59, asteroid_l2)
asteroid_create(30, 59, asteroid_l2)
if bullet[1].colliderect(asteroid[1]) and asteroid[3] == asteroid_l2:
score += 50
bullet_list.pop(idb)
asteroid_list.pop(ida)
return score
def asteroid_pizza_collision(health, pizza_rect):
for ida, asteroid in enumerate(asteroid_list):
if asteroid[1].colliderect(pizza_rect):
health -= 1
asteroid_list.pop(ida)
return health
def asteroid_create(low_size, high_size, costume_type):
if random.random() < 0.15:
location_x_asteroid=random.choice(x)
location_y_asteroid=random.randrange(y[0], y[1])
size_asteroid = random.randrange(low_size, high_size)
DEAFULT_ASTEROID_SIZE = (size_asteroid, size_asteroid)
x_dist = location_x_asteroid - pizza_position[0]
y_dist = location_y_asteroid - pizza_position[1]
asteroid_angle = math.degrees(math.atan2(y_dist, x_dist))
asteroid = pygame.transform.scale(costume_type, DEAFULT_ASTEROID_SIZE)
asteroid_rect = asteroid.get_rect(center = (random.choice(x), random.randrange(y[0], y[1])))
asteroid_list.append([asteroid, asteroid_rect, asteroid_angle + 180, costume_type])
def asteroid_render():
for asteroid in asteroid_list:
screen.blit(asteroid[0], asteroid[1])
def asteroid_move():
for asteroid in asteroid_list:
asteroid[1] = asteroid[1].move(asteroid_speed * math.cos(asteroid[2]) , -1* speed * math.sin(asteroid[2]))
def bullet_create(angle):
bullet_rect = bullet.get_rect(center = (pizza_position[0],pizza_position[1]))
bullet_list.append([bullet, bullet_rect, angle])
"""Assign a position and an image to the bullet"""
"""Add to a list of bullets"""
def bullet_render():
for bullet in bullet_list:
screen.blit(bullet[0], bullet[1])
"""Go through the list of bullets and render each bullet"""
def pizza_move(angle, x_dist, y_dist):
if math.sqrt(x_dist**2 + y_dist**2) > 10:
pizza_position[0] -= math.cos(angle) * pizza_speed
pizza_position[1] += math.sin(angle) * pizza_speed
def bullet_move():
for bullet in bullet_list:
bullet[1] = bullet[1].move(speed * math.cos(bullet[2]) , -1* speed * math.sin(bullet[2]))
while run:
if health == 0:
pygame.display.flip()
screen.fill(BLACK)
text1 = " " + f" Your Score was {score}"
text2 = " You lost but don't worry, you did great ;)"
text3 = " Click R to retry or Click ESCAPE to leave"
label1 = myfont2.render(text1, 1, GOLD)
label2 = myfont2.render(text2, 1, GOLD)
label3 = myfont2.render(text3, 1, GOLD)
screen.blit(label1, (525, 0))
screen.blit(label2, (520, 60))
screen.blit(label3, (520, 120))
for event in pygame.event.get():
#quit program
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r:
health = 3
score = 0
bullet_list = []
if event.key == pygame.K_ESCAPE:
run = False
break
else:
#update background
screen.fill(BLACK)
screen.blit(title, title_rect)
#get mouse position
pos = pygame.mouse.get_pos()
screen.blit(cursor_img, pos)
x_dist = pos[0] - pizza_position[0]
y_dist = -(pos[1] - pizza_position[1])#-ve because pygame y coordinates increase down the screen
angle = math.degrees(math.atan2(y_dist, x_dist))
bullet_angle = math.atan2(y_dist, x_dist)
#rotate pizza
pizza = pygame.transform.rotate(pizza_original, angle - 90)
pizza_rect = pizza.get_rect(center = (pizza_position[0], pizza_position[1]))
pizza_move(bullet_angle, x_dist, y_dist)
health_id = 1
while health_id <= health:
apple_rect = apple.get_rect(center = (health_id * 30, 20))
screen.blit(apple, apple_rect)
health_id += 1
#draw image
screen.blit(pizza, pizza_rect)
bullet_move()
bullet_render()
asteroid_create(60, 100, asteroid_l1)
asteroid_render()
asteroid_move()
score = asteroid_bullet_collision(score)
health = asteroid_pizza_collision(health, pizza_rect)
text = f"Score: {score}"
label = myfont.render(text, 1, CYAN)
screen.blit(label, (960, 0))
#update display
pygame.display.flip()
#event handlerbullet
for event in pygame.event.get():
#quit program
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
bullet_create(bullet_angle)
if event.key == pygame.K_UP:
pizza_speed -= 1
if event.key == pygame.K_DOWN:
if pizza_speed + 3 < 0:
pizza_speed += 2
print(health)
Editor is loading...
Leave a Comment