Skip to content

Commit

Permalink
minor adjustments and improvements to game logic
Browse files Browse the repository at this point in the history
  • Loading branch information
1024Adam committed Jul 5, 2022
1 parent 8643885 commit 6e21481
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 67 deletions.
33 changes: 10 additions & 23 deletions infinite_maze/Clock.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,24 @@ def __init__(self):
self.startTime = self.time.get_time()

self.milliseconds = 0
self.seconds = 0
self.minutes = 0

def update(self):
self.time.tick()
self.milliseconds += self.time.get_time()
self.seconds = self.milliseconds / 1000
if (self.seconds >= 60):
self.minutes += 1
self.seconds -= 60
self.milliseconds -= 60000
self.millis += self.time.get_time()

def getTimeString(self):
return ('{:02f}'.format(self.minutes) + ':' + '{:02f}'.format(self.seconds))
minutes = int(self.millis / 60000)
seconds = int((self.millis / 1000) % 60)
return (f'{minutes:02}' + ':' + f'{seconds:02}')

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

self.milliseconds = 0
self.seconds = 0
self.minutes = 0

def getMills(self):
return (self.milliseconds)

def getSecs(self):
return (self.seconds)

def getMins(self):
return (self.minutes)
self.millis = 0

def getFullTime(self):
return (self.milliseconds + (self.seconds * 1000) + (self.minutes * 60000))
def getMillis(self):
return (self.millis)

def getSeconds(self):
return (self.millis / 60)
15 changes: 11 additions & 4 deletions infinite_maze/Game.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def __init__(self):

self.pace = 0
self.score = 0
self.scoreIncrement = 1
self.paused = 0
self.over = 0
self.shutdown = 0
Expand All @@ -43,14 +44,14 @@ def updateScreen(self, player, lines):
for line in lines:
pygame.draw.line(self.getScreen(), self.fgColor, line.getStart(), line.getEnd(), 1)

prevClock = self.clock.getSecs()
prevClock = self.clock.getSeconds()
# Update Clock
self.clock.update()
currClock = self.clock.getSecs()
currClock = self.clock.getSeconds()

# Update Pace
if (self.clock.getFullTime() > 1000 and currClock % 30 == 0 and currClock != prevClock):
self.pace += 1
if (self.clock.getMillis() > 1000 and currClock % 30 == 0 and currClock != prevClock):
self.pace += 0.1

# Print Border
pygame.draw.line(self.getScreen(), self.fgColor, (self.xMin, self.yMin), (self.width, self.yMin), 2)
Expand Down Expand Up @@ -114,6 +115,12 @@ def getScore(self):

def updateScore(self, amount):
self.score += amount

def incrementScore(self):
self.score += self.scoreIncrement

def decrementScore(self):
self.score -= self.scoreIncrement

def setScore(self, newScore):
self.score = newScore
Expand Down
7 changes: 7 additions & 0 deletions infinite_maze/Line.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ def __init__(self, startPos = (0, 0), endPos = (0, 0), sideA = 0, sideB = 0):
self.end = endPos
self.sideA = sideA
self.sideB = sideB
self.isHorizontal = (startPos[1] == endPos[1])

def getStart(self):
return (self.start)
Expand Down Expand Up @@ -54,6 +55,12 @@ def getSideB(self):

def setSideB(self, side):
self.sideB = side

def getIsHorizontal(self):
return self.isHorizontal

def resetIsHorizontal(self):
self.isHorizontal = (self.startPos[0] == self.endPos[0])

@staticmethod
def getXMax(lines):
Expand Down
12 changes: 10 additions & 2 deletions infinite_maze/Player.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ class Player:
def __init__(self, xPosition, yPosition):
self.cursor = pygame.image.load('img/player.png')
self.position = (xPosition, yPosition)
self.speed = 5
self.width = 10
self.height = 10
self.speed = 1

def setX(self, xPosition):
self.position = (xPosition, self.position[1])
Expand Down Expand Up @@ -36,8 +38,14 @@ def setCursor(self, image):

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

def getWidth(self):
return self.width

def getHeight(self):
return self.height

def reset(self, xPosition, yPosition):
self.setX(xPosition)
self.setY(yPosition)
self.speed = 5
self.speed = 1
94 changes: 56 additions & 38 deletions infinite_maze/infinite_maze.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def maze():

game.getClock().reset()
keys = pygame.key.get_pressed()
mills = 0
millis = 0
while (game.isPlaying()):
while (game.isActive()):
game.updateScreen(player, lines)
Expand All @@ -28,49 +28,67 @@ def maze():
if (not game.isPaused()):
# Arrow Move Events
if (keys[pygame.K_RIGHT] or keys[pygame.K_d]):
blocked = 0
blocked = False
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 line.getIsHorizontal():
blocked = blocked or (
player.getY() <= line.getYStart() and
player.getY() + player.getHeight() >= line.getYStart() and
player.getX() + player.getWidth() + player.getSpeed() == line.getXStart()
)
else: # vertical line
blocked = blocked or (
player.getX() + player.getWidth() <= line.getXStart() and
player.getX() + player.getWidth() + player.getSpeed() >= line.getXStart() and
(
(player.getY() >= line.getYStart() and player.getY() <= line.getYEnd()) or
(player.getY() + player.getHeight() >= line.getYStart() and player.getY() + player.getHeight() < line.getYEnd())
)
)
if (not blocked):
player.moveX(1)
game.updateScore(1)
if (keys[pygame.K_DOWN] or keys[pygame.K_s]):
blocked = 0
player.moveX(player.getSpeed())
game.incrementScore()
elif (keys[pygame.K_LEFT] or keys[pygame.K_a]):
blocked = False
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 line.getIsHorizontal():
blocked = blocked or (
player.getY() <= line.getYStart() and
player.getY() + player.getHeight() >= line.getYStart() and
player.getX() - player.getSpeed() == line.getXEnd()
)
else: # vertical line
blocked = blocked or (
player.getX() >= line.getXEnd() and
player.getX() - player.getSpeed() <= line.getXEnd() and
(
(player.getY() >= line.getYStart() and player.getY() <= line.getYEnd()) or
(player.getY() + player.getHeight() >= line.getYStart() and player.getY() + player.getHeight() < line.getYEnd())
)
)
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
player.moveX(-player.getSpeed())
game.decrementScore()
if (keys[pygame.K_DOWN] or keys[pygame.K_s]):
blocked = False
#for line in lines:
# blocked = blocked or ((player.getY() + 5 + player.getSpeed() >= line.getYStart()) and (player.getY() <= line.getYStart()) and (player.getX() + 5 > line.getXStart()) and (player.getX() - 5 < line.getXStart()))
# blocked = blocked or ((player.getY() + 5 + player.getSpeed() >= line.getYStart()) and (player.getY() <= line.getYStart()) and (player.getX() >= line.getXStart()) and (player.getX() <= line.getXEnd()))
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
player.moveY(player.getSpeed())
elif (keys[pygame.K_UP] or keys[pygame.K_w]):
blocked = False
#for line in lines:
# blocked = blocked or ((player.getY() - player.getSpeed() <= line.getYEnd()) and (player.getY() >= line.getYEnd()) and (player.getX() + 5 > line.getXStart()) and (player.getX() - 5 < line.getXStart()))
# blocked = blocked or ((player.getY() - 5 - player.getSpeed() <= line.getYEnd()) and (player.getY() >= line.getYEnd()) and (player.getX() >= line.getXStart()) and (player.getX() <= line.getXEnd()))
if (not blocked):
player.moveX(-1)
game.updateScore(-1)
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())
#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 Down Expand Up @@ -115,10 +133,10 @@ def maze():
game.end()

# Process FPS
processTime = int(game.getClock().getFullTime() - mills)
processTime = int(game.getClock().getMillis() - millis)
if (processTime <= 16):
time.delay(16 - processTime)
mills = game.getClock().getFullTime()
millis = game.getClock().getMillis()

# Game has ended
game.printEndDisplay()
Expand Down

0 comments on commit 6e21481

Please sign in to comment.