Skip to content

Commit

Permalink
minor updates (fps is crazy though)
Browse files Browse the repository at this point in the history
  • Loading branch information
1024Adam committed Jul 5, 2022
1 parent 8ed90bb commit 1ce4b2c
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 30 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ To compile and execute the game, type **python infinite_maze**

## Specifications
The only software needed to run this program is Python. Infinite Maze Game
was developed and tested using Python (v2.7.11).
was developed and tested using Python (v3.10.4).

## Special Features
Infinite Maze Game makes use of the Pygame library, which is a simple and easy way to
Expand Down
15 changes: 13 additions & 2 deletions infinite_maze/Clock.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ def __init__(self):

self.milliseconds = 0
self.millisPaused = 0
self.ticks = 0

def update(self):
self.time.tick()
Expand All @@ -18,15 +19,22 @@ def getTimeString(self):
seconds = int((self.millis / 1000) % 60)
return (f'{minutes:02}' + ':' + f'{seconds:02}')

def getFps(self):
return self.time.get_fps()

def reset(self):
self.time = pygame.time.Clock()
self.startTime = self.time.get_time()

self.millis = 0
self.ticks = 0

def getMillis(self):
return (self.millis)

def getSeconds(self):
return int((self.millis / 1000) % 60)

def rollbackMillis(self, rollback):
self.millis -= rollback

Expand All @@ -36,5 +44,8 @@ def getMillisPaused(self):
def setMillisPaused(self, millis):
self.millisPaused = millis

def getSeconds(self):
return int((self.millis / 1000) % 60)
def tick(self):
self.ticks += 1

def getTicks(self):
return self.ticks
5 changes: 3 additions & 2 deletions infinite_maze/Game.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,16 @@ def updateScreen(self, player, lines):

prevMillis = self.clock.getMillis()
prevSeconds = self.clock.getSeconds()
# Update Clock
# Update Clock/Ticks
self.clock.tick()
self.clock.update()

if self.paused:
self.clock.rollbackMillis(self.clock.getMillis() - prevMillis)

# Update Pace
if not self.paused and self.clock.getMillis() > 10000 and self.clock.getSeconds() % 30 == 0 and prevSeconds != self.clock.getSeconds():
self.pace += 0.1
self.pace += 1

# Print Border
pygame.draw.line(self.getScreen(), self.fgColor, (self.xMin, self.yMin), (self.width, self.yMin), 2)
Expand Down
41 changes: 16 additions & 25 deletions infinite_maze/infinite_maze.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@ def maze():
lines = Line.generateMaze(game, 15, 20)

game.getClock().reset()
keys = pygame.key.get_pressed()
millis = 0
keys = pygame.key.get_pressed()
while (game.isPlaying()):
while (game.isActive()):
game.updateScreen(player, lines)

prevKeys = keys
keys = pygame.key.get_pressed()

Expand Down Expand Up @@ -109,12 +107,13 @@ def maze():
)
if (not blocked):
player.moveY(-player.getSpeed())

# Process game pace adjustments
player.setX(player.getX() - game.getPace())
for line in lines:
line.setXStart(line.getXStart() - game.getPace())
line.setXEnd(line.getXEnd() - game.getPace())
if game.getClock().getTicks() % 10 == 0:
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()):
Expand All @@ -138,11 +137,11 @@ def maze():
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 @@ -152,20 +151,14 @@ def maze():
game.end()
if (keys[pygame.K_ESCAPE]):
game.end()

# Process Game Events
for event in pygame.event.get():
if (event.type == pygame.QUIT):
game.end()

# Process FPS
processTime = int(game.getClock().getMillis() - millis)
if (processTime <= 16):
time.delay(16 - processTime)
millis = game.getClock().getMillis()
# Process Game Events
if any(event.type == pygame.QUIT for event in pygame.event.get()):
game.end()

# Game has ended
game.printEndDisplay()

# Quit Events
keys = pygame.key.get_pressed()
if (keys[pygame.K_y]):
Expand All @@ -176,7 +169,6 @@ def maze():
lines = Line.generateMaze(game, 15, 20)

game.getClock().reset()

if (keys[pygame.K_n]):
game.quit()
if (keys[pygame.K_LMETA] and keys[pygame.K_q]):
Expand All @@ -187,9 +179,8 @@ def maze():
game.quit()

# Process Game Events
for event in pygame.event.get():
if (event.type == pygame.QUIT):
game.quit()

if any(event == pygame.QUIT for event in pygame.event.get()):
game.quit()

game.cleanup()
exit(0)

0 comments on commit 1ce4b2c

Please sign in to comment.