Skip to content

Commit a4ef06e

Browse files
Merge pull request #37 from Stephenson-Software/running
Run Button
2 parents 289e49e + c0fb80c commit a4ef06e

File tree

5 files changed

+31
-6
lines changed

5 files changed

+31
-6
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ w | move up
1515
a | move left
1616
s | move down
1717
d | move right
18+
shift | run
1819
e | interact
1920
q | place item from inventory
20-
f11 | fullscreen
2121
print screen | take screenshot
2222
l | toggle tick speed limit
2323
esc | quit

src/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ def __init__(self):
1212
self.fullscreen = False
1313
self.black = (0,0,0)
1414
self.white = (255,255,255)
15-
self.tickSpeed = 1/30 # 30 frames per second
15+
self.ticksPerSecond = 30
16+
self.tickSpeed = 1/self.ticksPerSecond
1617
self.limitTickSpeed = True
1718
self.gridSize = 16
1819
self.playerMovementEnergyCost = 0.2
19-
self.worldBorder = 16
20+
self.worldBorder = 16
21+
self.runSpeedFactor = 2.5

src/player.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ def __init__(self):
1515
self.inventory = Inventory()
1616
self.interacting = False
1717
self.placing = False
18+
self.tickLastMoved = -1
19+
self.speed = 15
1820

1921
def getColor(self):
2022
return self.color
@@ -56,4 +58,16 @@ def setPlacing(self, bool):
5658
self.placing = bool
5759

5860
def isDead(self):
59-
return self.energy < 1
61+
return self.energy < 1
62+
63+
def setTickLastMoved(self, tick):
64+
self.tickLastMoved = tick
65+
66+
def getTickLastMoved(self):
67+
return self.tickLastMoved
68+
69+
def getSpeed(self):
70+
return self.speed
71+
72+
def setSpeed(self, newSpeed):
73+
self.speed = newSpeed

src/roam.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def __init__(self):
2121
self.status = Status(self.graphik)
2222
self.status.set("entered the world", self.tick)
2323
self.worldScreen = WorldScreen(self.graphik, self.config, self.status, self.tick)
24+
self.currentScreen = WorldScreen
2425

2526
def initializeGameDisplay(self):
2627
if self.config.fullscreen:
@@ -33,7 +34,9 @@ def quitApplication(self):
3334
quit()
3435

3536
def run(self):
36-
self.worldScreen.run()
37+
if self.currentScreen == WorldScreen:
38+
self.worldScreen.run()
39+
self.quitApplication()
3740

3841
roam = Roam()
3942
roam.run()

src/worldScreen.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ def movePlayer(self, direction: int):
150150

151151
# decrease energy
152152
self.player.removeEnergy(self.config.playerMovementEnergyCost)
153+
self.player.setTickLastMoved(self.tick)
153154

154155
def canBePickedUp(self, entity):
155156
itemTypes = [Wood, Leaves, Grass, Apple]
@@ -234,6 +235,8 @@ def handleKeyDownEvent(self, key):
234235
x, y = self.graphik.getGameDisplay().get_size()
235236
self.captureScreen("screenshot-" + str(datetime.datetime.now()).replace(" ", "-").replace(":", ".") +".png", (0,0), (x,y))
236237
self.status.set("screenshot saved", self.tick)
238+
elif key == pygame.K_LSHIFT:
239+
self.player.setSpeed(self.player.getSpeed()*self.config.runSpeedFactor)
237240

238241
def handleKeyUpEvent(self, key):
239242
if (key == pygame.K_w or key == pygame.K_UP) and self.player.getDirection() == 0:
@@ -248,6 +251,8 @@ def handleKeyUpEvent(self, key):
248251
self.player.setInteracting(False)
249252
elif key == pygame.K_q:
250253
self.player.setPlacing(False)
254+
elif key == pygame.K_LSHIFT:
255+
self.player.setSpeed(self.player.getSpeed()/self.config.runSpeedFactor)
251256

252257
# @source https://stackoverflow.com/questions/63342477/how-to-take-screenshot-of-entire-display-pygame
253258
def captureScreen(self, name, pos, size): # (pygame Surface, String, tuple, tuple)
@@ -305,7 +310,8 @@ def run(self):
305310
elif event.type == pygame.VIDEORESIZE:
306311
self.initializeLocationWidthAndHeight()
307312

308-
self.movePlayer(self.player.direction)
313+
if self.player.getTickLastMoved() + 30/self.player.getSpeed() < self.tick:
314+
self.movePlayer(self.player.direction)
309315

310316
if self.player.isInteracting():
311317
self.executeInteractAction()

0 commit comments

Comments
 (0)