Skip to content

Commit

Permalink
Implemented pause feature
Browse files Browse the repository at this point in the history
  • Loading branch information
1024Adam committed Apr 1, 2017
1 parent e941fea commit 4928d97
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 70 deletions.
Binary file added img/player_paused.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 18 additions & 1 deletion infinite_maze/Game.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ def __init__(self):
self.font = pygame.font.SysFont('', 20)
self.bgColor = pygame.Color(255, 255, 255)
self.fgColor = pygame.Color(0, 0, 0)

self.pace = 0
self.score = 0
self.paused = 0
self.over = 0
self.shutdown = 0

Expand Down Expand Up @@ -61,6 +62,10 @@ def updateScreen(self, player, lines):
self.screen.blit(timeText, (10, 10))
scoreText = self.font.render('Score: ' + str(self.score), 1, self.fgColor)
self.screen.blit(scoreText, (10, 25))

if (self.paused):
scoreText = self.font.render('Paused (press space to continue)', 1, self.fgColor)
self.screen.blit(scoreText, (100, 10))

pygame.display.flip()

Expand Down Expand Up @@ -113,6 +118,18 @@ def updateScore(self, amount):
def setScore(self, newScore):
self.score = newScore

def isPaused(self):
return (self.paused)

def changePaused(self, player):
self.paused = not self.paused
if (self.paused):
self.fgColor = pygame.Color(128, 128, 128)
player.setCursor('img/player_paused.png')
else:
self.fgColor = pygame.Color(0, 0, 0)
player.setCursor('img/player.png')

def getWidth(self):
return (self.width)

Expand Down
3 changes: 3 additions & 0 deletions infinite_maze/Player.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ def getPosition(self):
def getSpeed(self):
return (self.speed)

def setCursor(self, image):
self.cursor = pygame.image.load(image)

def getCursor(self):
return (self.cursor)

Expand Down
146 changes: 77 additions & 69 deletions infinite_maze/infinite_maze.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,52 +15,89 @@ def maze():
lines = Line.generateMaze(game, 15, 20)

game.getClock().reset()

keys = pygame.key.get_pressed()

while (game.isPlaying()):
while (game.isActive()):
game.updateScreen(player, lines)

# Arrow Move Events
prevKeys = keys
keys = pygame.key.get_pressed()
if (keys[pygame.K_RIGHT] or keys[pygame.K_d]):
blocked = 0
for line in lines:
if ((player.getX() + player.getSpeed() >= line.getXStart()) and (player.getX() <= line.getXStart()) and (player.getY() + 6 >= line.getYStart()) and (player.getY() - 6 <= line.getYStart())):
blocked = 1
if ((player.getX() + 6 + player.getSpeed() >= line.getXStart()) and (player.getX() <= line.getXStart()) and (player.getY() >= line.getYStart()) and (player.getY() <= line.getYEnd())):
blocked = 1
if (not blocked):
player.moveX(1)
game.updateScore(1)
if (keys[pygame.K_DOWN] or keys[pygame.K_s]):
blocked = 0
for line in lines:
if ((player.getY() + 5 + player.getSpeed() >= line.getYStart()) and (player.getY() <= line.getYStart()) and (player.getX() + 6 > line.getXStart()) and (player.getX() - 6 < line.getXStart())):
blocked = 1
if ((player.getY() + 6 + player.getSpeed() >= line.getYStart()) and (player.getY() <= line.getYStart()) and (player.getX() >= line.getXStart()) and (player.getX() <= line.getXEnd())):
blocked = 1
if (not blocked):
player.moveY(1)
if (keys[pygame.K_UP] or keys[pygame.K_w]):
blocked = 0

if (not game.isPaused()):
# Arrow Move Events
if (keys[pygame.K_RIGHT] or keys[pygame.K_d]):
blocked = 0
for line in lines:
if ((player.getX() + player.getSpeed() >= line.getXStart()) and (player.getX() <= line.getXStart()) and (player.getY() + 6 >= line.getYStart()) and (player.getY() - 6 <= line.getYStart())):
blocked = 1
if ((player.getX() + 6 + player.getSpeed() >= line.getXStart()) and (player.getX() <= line.getXStart()) and (player.getY() >= line.getYStart()) and (player.getY() <= line.getYEnd())):
blocked = 1
if (not blocked):
player.moveX(1)
game.updateScore(1)
if (keys[pygame.K_DOWN] or keys[pygame.K_s]):
blocked = 0
for line in lines:
if ((player.getY() + 5 + player.getSpeed() >= line.getYStart()) and (player.getY() <= line.getYStart()) and (player.getX() + 6 > line.getXStart()) and (player.getX() - 6 < line.getXStart())):
blocked = 1
if ((player.getY() + 6 + player.getSpeed() >= line.getYStart()) and (player.getY() <= line.getYStart()) and (player.getX() >= line.getXStart()) and (player.getX() <= line.getXEnd())):
blocked = 1
if (not blocked):
player.moveY(1)
if (keys[pygame.K_UP] or keys[pygame.K_w]):
blocked = 0
for line in lines:
if ((player.getY() - player.getSpeed() <= line.getYEnd()) and (player.getY() >= line.getYEnd()) and (player.getX() + 6 > line.getXStart()) and (player.getX() - 6 < line.getXStart())):
blocked = 1
if ((player.getY() - 6 - player.getSpeed() <= line.getYEnd()) and (player.getY() >= line.getYEnd()) and (player.getX() >= line.getXStart()) and (player.getX() <= line.getXEnd())):
blocked = 1
if (not blocked):
player.moveY(-1)
if (keys[pygame.K_LEFT] or keys[pygame.K_a]):
blocked = 0
for line in lines:
if ((player.getX() + 1 - player.getSpeed() <= line.getXEnd()) and (player.getX() >= line.getXEnd()) and (player.getY() + 6 >= line.getYStart()) and (player.getY() - 6 <= line.getYStart())):
blocked = 1
if ((player.getX() - player.getSpeed() <= line.getXEnd()) and (player.getX() >= line.getXEnd()) and (player.getY() >= line.getYStart()) and (player.getY() <= line.getYEnd())):
blocked = 1
if (not blocked):
player.moveX(-1)
game.updateScore(-1)

# Process game pace adjustments
player.setX(player.getX() - game.getPace())
for line in lines:
if ((player.getY() - player.getSpeed() <= line.getYEnd()) and (player.getY() >= line.getYEnd()) and (player.getX() + 6 > line.getXStart()) and (player.getX() - 6 < line.getXStart())):
blocked = 1
if ((player.getY() - 6 - player.getSpeed() <= line.getYEnd()) and (player.getY() >= line.getYEnd()) and (player.getX() >= line.getXStart()) and (player.getX() <= line.getXEnd())):
blocked = 1
if (not blocked):
player.moveY(-1)
if (keys[pygame.K_LEFT] or keys[pygame.K_a]):
blocked = 0
line.setXStart(line.getXStart() - game.getPace())
line.setXEnd(line.getXEnd() - game.getPace())

# Position Adjustments (to prevent screen overflow)
if (player.getX() < game.getXMin()):
game.end()
if (player.getX() > game.getXMax()):
player.setX(game.getXMax())
for line in lines:
line.setXStart(line.getXStart() - player.getSpeed())
line.setXEnd(line.getXEnd() - player.getSpeed())
player.setY(max(player.getY(), game.getYMin()))
player.setY(min(player.getY(), game.getYMax()))

# Reposition lines that have been passed
xMax = Line.getXMax(lines)
for line in lines:
if ((player.getX() + 1 - player.getSpeed() <= line.getXEnd()) and (player.getX() >= line.getXEnd()) and (player.getY() + 6 >= line.getYStart()) and (player.getY() - 6 <= line.getYStart())):
blocked = 1
if ((player.getX() - player.getSpeed() <= line.getXEnd()) and (player.getX() >= line.getXEnd()) and (player.getY() >= line.getYStart()) and (player.getY() <= line.getYEnd())):
blocked = 1
if (not blocked):
player.moveX(-1)
game.updateScore(-1)

start = line.getXStart()
end = line.getXEnd()
if (start < 0):
line.setXStart(xMax)
if (start == end):
line.setXEnd(xMax)
else:
line.setXEnd(xMax + 22)

# Pause Event
if (prevKeys[pygame.K_SPACE] and not keys[pygame.K_SPACE]):
game.changePaused(player)

# Quit Events
if (keys[pygame.K_LMETA] and keys[pygame.K_q]):
game.end()
Expand All @@ -76,35 +113,6 @@ def maze():
if (event.type == pygame.QUIT):
game.end()

# Process game pace adjustments
prevClock = game.getClock().getSecs()
player.setX(player.getX() - game.getPace())
for line in lines:
line.setXStart(line.getXStart() - game.getPace())
line.setXEnd(line.getXEnd() - game.getPace())

# Position Adjustments (to prevent screen overflow)
if (player.getX() < game.getXMin()):
game.end()
if (player.getX() > game.getXMax()):
player.setX(game.getXMax())
for line in lines:
line.setXStart(line.getXStart() - player.getSpeed())
line.setXEnd(line.getXEnd() - player.getSpeed())
player.setY(max(player.getY(), game.getYMin()))
player.setY(min(player.getY(), game.getYMax()))

# Reposition lines that have been passed
xMax = Line.getXMax(lines)
for line in lines:
start = line.getXStart()
end = line.getXEnd()
if (start < 0):
line.setXStart(xMax)
if (start == end):
line.setXEnd(xMax)
else:
line.setXEnd(xMax + 22)

# Game has ended
game.printEndDisplay()
Expand Down

0 comments on commit 4928d97

Please sign in to comment.