Added welcome, retry, and exit screen.

This commit is contained in:
CronyAkatsuki 2021-06-22 16:18:08 +02:00
parent 32be1814b8
commit 2a22347592

115
main.py
View File

@ -1,9 +1,10 @@
import pygame, random, sys import pygame, random, sys, time
# global variables # global variables
windowWidth = 800 windowWidth = 800
windowHeight = 800 windowHeight = 800
fps = 60 fps = 60
textColor = (255,255,255)
# initialize pygame and create a window # initialize pygame and create a window
pygame.init() pygame.init()
@ -26,6 +27,70 @@ def redrawGameWindow():
pygame.display.update() pygame.display.update()
def drawText(text, font, window, x,y):
textObj = font.render(text, 1, textColor)
textRect = textObj.get_rect()
textRect.topleft = (x - textObj.get_width() // 2,y - textObj.get_height() // 2)
window.blit(textObj, textRect)
def waitForKeyPress():
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
terminate()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
dodger.run = False
dodger.retry = True
return
def resetGame(player, baddies, gameLogic):
window.fill((0,0,0))
player.x = 100
player.y = 700
baddies.clear()
gameLogic.retry = False
gameLogic.timer = 0
pygame.display.update()
def askForRetry(keys, gameLogic):
window.fill((0,0,0))
drawText("Wanna try again? y/n", font, window, windowHeight / 2, windowWidth / 2)
pygame.display.update()
if keys[pygame.K_y]:
gameLogic.lost = False
gameLogic.retry = True
if keys[pygame.K_n]:
gameLogic.run = False
class game(object):
def __init__(self):
self.timer = 0
self.run = True
self.lost = False
self.retry = False
pass
def play(self, keys, baddies, baddiesSpawnRate, player):
if self.timer % baddiesSpawnRate == 0:
baddies.append(enemy())
for baddie in baddies:
baddie.move()
if player.hitbox.colliderect(baddie.hitbox):
self.lost = True
if baddie.y + baddie.height + 10 > windowHeight:
baddies.pop(baddies.index(baddie))
player.move(keys)
self.timer += 1
# enemy class # enemy class
class enemy(object): class enemy(object):
def __init__(self): def __init__(self):
@ -73,42 +138,42 @@ class player(object):
if keys[pygame.K_DOWN] and self.y < windowHeight - self.height - 50: if keys[pygame.K_DOWN] and self.y < windowHeight - self.height - 50:
self.y += self.moveSpeed self.y += self.moveSpeed
man = player(100, 700, 30, 30) man = player(100, 700, 30, 30)
baddies = [] baddies = []
baddieSpawnRate = 40 baddieSpawnRate = 40
timer = 0 font = pygame.font.SysFont(None, 48)
dodger = game()
drawText('Dodger', font, window, (windowWidth / 2), (windowHeight / 2 - 30))
drawText('Press a key to start.', font, window, (windowWidth / 2), (windowHeight / 2 + 30))
pygame.display.update()
waitForKeyPress()
# main loop # main loop
run = True while dodger.run:
while run: clock.tick(fps)
if timer % baddieSpawnRate == 0:
baddies.append(enemy())
for baddie in baddies:
baddie.move()
if man.hitbox.colliderect(baddie.hitbox):
run = False
if baddie.y + baddie.height + 10 > windowHeight:
baddies.pop(baddies.index(baddie))
keys = pygame.key.get_pressed() keys = pygame.key.get_pressed()
clock.tick(fps) if dodger.lost:
askForRetry(keys, dodger)
man.move(keys) else :
if dodger.retry:
redrawGameWindow() resetGame(man, baddies, dodger)
dodger.play(keys, baddies, baddieSpawnRate, man)
timer += 1 redrawGameWindow()
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == pygame.QUIT: if event.type == pygame.QUIT:
run = False terminate()
if keys[pygame.K_ESCAPE]: if keys[pygame.K_ESCAPE]:
run = False dodger.run = False
window.fill((0,0,0))
drawText('Goodbye', font, window, (windowWidth / 2 ), (windowHeight / 2))
pygame.display.update()
time.sleep(1)
terminate() terminate()