self.screen = pygame.display.set_mode((self.sx, self.sy))
pygame.font.init()
self.font = pygame.font.SysFont("xkcd,sans", 25)
+ self.xmovementmax = 10
self.platformTypeNormal = 0
self.platformTypeFloating = 1
self.platformTypeBreaking = 2
+ self.itemTypeAccelerator = 0
+ self.itemTypeBeanie = 1
self.imgPlatformNormal = pygame.image.load("assets/platformNormal.png").convert_alpha()
self.imgPlatformFloating = pygame.image.load("assets/platformFloating.png").convert_alpha()
self.imgPlatformBreaking = pygame.image.load("assets/platformBreaking.png").convert_alpha()
self.imgPlayerRightDown = pygame.image.load("assets/playerRightDown.png").convert_alpha()
self.imgPlayerLeftUp = pygame.image.load("assets/playerLeftUp.png").convert_alpha()
self.imgPlayerLeftDown = pygame.image.load("assets/playerLeftDown.png").convert_alpha()
+ self.imgPlayerRightUpBeanie = pygame.image.load("assets/playerRightUpBeanie.png").convert_alpha()
+ self.imgPlayerRightDownBeanie = pygame.image.load("assets/playerRightDownBeanie.png").convert_alpha()
+ self.imgPlayerLeftUpBeanie = pygame.image.load("assets/playerLeftUpBeanie.png").convert_alpha()
+ self.imgPlayerLeftDownBeanie = pygame.image.load("assets/playerLeftDownBeanie.png").convert_alpha()
self.imgAccelerator = pygame.image.load("assets/accelerator.png").convert_alpha()
self.imgAcceleratorUsed = pygame.image.load("assets/acceleratorUsed.png").convert_alpha()
+ self.imgBeanie = pygame.image.load("assets/beanie.png").convert_alpha()
+ def reset(self):
+ self.cameray = 0
+ self.score = 0
+ self.items = []
+ self.playerx = self.sx // 2
+ self.playery = self.sy * 3 // 4
+ self.direction = 0
+ self.jump = 0
+ self.gravity = 0
+ self.xmovement = 0
+ self.playerWearsBeanie = False
+ self.platforms = [[self.playerx, self.playery + self.sy // 6, self.platformTypeNormal, False]]
+ self.generatePlatforms()
+
def updatePlayer(self):
if not self.jump:
self.playery += self.gravity
self.cameray -= self.sy // 60
if not self.direction:
if self.jump:
- self.screen.blit(self.imgPlayerRightDown, (self.playerx, self.playery - self.cameray))
+ if self.playerWearsBeanie:
+ self.screen.blit(self.imgPlayerRightDownBeanie, (self.playerx, self.playery - self.cameray))
+ else:
+ self.screen.blit(self.imgPlayerRightDown, (self.playerx, self.playery - self.cameray))
else:
- self.screen.blit(self.imgPlayerRightUp, (self.playerx, self.playery - self.cameray))
+ if self.playerWearsBeanie:
+ self.screen.blit(self.imgPlayerRightUpBeanie, (self.playerx, self.playery - self.cameray))
+ else:
+ self.screen.blit(self.imgPlayerRightUp, (self.playerx, self.playery - self.cameray))
else:
if self.jump:
- self.screen.blit(self.imgPlayerLeftDown, (self.playerx, self.playery - self.cameray))
+ if self.playerWearsBeanie:
+ self.screen.blit(self.imgPlayerLeftDownBeanie, (self.playerx, self.playery - self.cameray))
+ else:
+ self.screen.blit(self.imgPlayerLeftDown, (self.playerx, self.playery - self.cameray))
else:
- self.screen.blit(self.imgPlayerLeftUp, (self.playerx, self.playery - self.cameray))
+ if self.playerWearsBeanie:
+ self.screen.blit(self.imgPlayerLeftUpBeanie, (self.playerx, self.playery - self.cameray))
+ else:
+ self.screen.blit(self.imgPlayerLeftUp, (self.playerx, self.playery - self.cameray))
def updatePlatforms(self):
for p in self.platforms:
platformType = 1
else:
platformType = 2
-
- self.platforms.append([random.randint(0, self.sx * 7 // 8), self.platforms[-1][1] - self.sy // 12, platformType, 0])
- coords = self.platforms[-1]
+ self.platforms.append([random.randint(0, self.sx * 7 // 8), self.platforms[-1][1] - self.sy // 12, platformType, False])
check = random.randint(0, 1000)
if check > 900 and platformType == 0:
- self.accelerators.append([coords[0], coords[1] - self.imgPlatformNormal.get_height(), 0])
+ x = self.platforms[-1][0]
+ y = self.platforms[-1][1]
+ itemType = random.randint(0,1000)
+ if itemType < 900:
+ itemType = self.itemTypeAccelerator
+ self.items.append([x, y + 10, itemType, False])
+ else:
+ itemType = self.itemTypeBeanie
+ self.items.append([x + self.imgPlatformNormal.get_width() * 3 // 4, y + 6, itemType, False])
self.platforms.pop(0)
self.score += 1
if p[2] == self.platformTypeNormal:
self.screen.blit(self.imgPlatformBreaking, (p[0], p[1] - self.cameray))
else:
self.screen.blit(self.imgPlatformBroken, (p[0], p[1] - self.cameray))
-
- for accelerator in self.accelerators:
- if accelerator[-1]:
- self.screen.blit(self.imgAcceleratorUsed, (accelerator[0], accelerator[1] - self.cameray))
- else:
- self.screen.blit(self.imgAccelerator, (accelerator[0], accelerator[1] - self.cameray))
- if pygame.Rect(accelerator[0], accelerator[1], self.imgAccelerator.get_width(), self.imgAccelerator.get_height()).colliderect(pygame.Rect(self.playerx, self.playery, self.imgPlayerRightUp.get_width(), self.imgPlayerRightUp.get_height())):
- self.jump = self.sy // 12
- self.cameray -= self.sy // 12
- accelerator[-1] = True
+ for item in self.items:
+ if item[2] == self.itemTypeAccelerator:
+ if item[-1]:
+ imgItem = self.imgAcceleratorUsed
+ else:
+ imgItem = self.imgAccelerator
+ elif item[2] == self.itemTypeBeanie:
+ if not item[-1]:
+ imgItem = self.imgBeanie
+ else:
+ imgItem = None
+ if imgItem:
+ self.screen.blit(imgItem, (item[0], item[1] - imgItem.get_height() - self.cameray))
+ if not item[-1]:
+ if pygame.Rect(item[0], item[1] - imgItem.get_height(), imgItem.get_width(), imgItem.get_height()).colliderect(pygame.Rect(self.playerx, self.playery, self.imgPlayerRightUp.get_width(), self.imgPlayerRightUp.get_height())):
+ if item[2] == self.itemTypeAccelerator:
+ self.jump = self.sy // 12
+ self.cameray -= self.sy // 12
+ item[-1] = True
+ elif item[2] == self.itemTypeBeanie:
+ self.playerWearsBeanie = True
+ item[-1] = True
def generatePlatforms(self):
on = self.sy
pygame.draw.line(self.screen, (222,222,222), (x * 12, 0), (x * 12, self.sy))
pygame.draw.line(self.screen, (222,222,222), (0, x * 12), (self.sx, x * 12))
- def reset(self):
- self.cameray = 0
- self.score = 0
- self.accelerators = []
- self.playerx = self.sx // 2
- self.playery = self.sy * 3 // 4
- self.direction = 0
- self.jump = 0
- self.gravity = 0
- self.xmovement = 0
- self.xmovementmax = 10
- self.platforms = [[self.playerx, self.playery + self.sy // 6, self.platformTypeNormal, 0]]
- self.generatePlatforms()
-
def showScore(self):
line1 = self.font.render("Press ENTER to restart,", -1, (0, 0, 0))
line2 = self.font.render("ESC to quit.", -1, (0, 0, 0))