From 4928d97c2ccdf62f3078a7ddec690d6ad69f1735 Mon Sep 17 00:00:00 2001 From: 1024Adam Date: Sat, 1 Apr 2017 14:22:44 -0400 Subject: [PATCH] Implemented pause feature --- img/player_paused.png | Bin 0 -> 394 bytes infinite_maze/Game.py | 19 ++++- infinite_maze/Player.py | 3 + infinite_maze/infinite_maze.py | 146 +++++++++++++++++---------------- 4 files changed, 98 insertions(+), 70 deletions(-) create mode 100644 img/player_paused.png diff --git a/img/player_paused.png b/img/player_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..00da9322b70bc5a481337723fcf861f18f59b3a1 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv{rEQ~^eGAv!IlYv6AnIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^Q2d>zi(`ny<=zRlS%)12TJQJdY*{-&i#uec;Tu*atEN1q z6O!L}8Ygsf6fw#=Du_m}EKuJT`yorMSC}XBPig=6U>hce=XY2Sl+JtZpX|fTV0i3o zlr=-doMQ8$bFs@Ze`Va>rr-7G$Qc#}rA3M@Pxi|1URQ0;xMN%H?dhqNX=zGI3=GD> zk<-!{Y#Y|ES+(l@u63(*PX7@6!_4r>W_fAs{TmXOZS-xOT@uoaj+yj`Ka_Z^rnG9+ zf1l9Sj*Ondp{DB1?|bP0l+XkKT@aGw literal 0 HcmV?d00001 diff --git a/infinite_maze/Game.py b/infinite_maze/Game.py index efc289b..7e0c7d1 100644 --- a/infinite_maze/Game.py +++ b/infinite_maze/Game.py @@ -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 @@ -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() @@ -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) diff --git a/infinite_maze/Player.py b/infinite_maze/Player.py index 201ead2..60d1c24 100644 --- a/infinite_maze/Player.py +++ b/infinite_maze/Player.py @@ -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) diff --git a/infinite_maze/infinite_maze.py b/infinite_maze/infinite_maze.py index ac8798d..ba563c6 100644 --- a/infinite_maze/infinite_maze.py +++ b/infinite_maze/infinite_maze.py @@ -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() @@ -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()