import pygame, sys, time from pygame.locals import * pygame.init() #--Display--# winWidth = 400 winHeight = 400 winCenterx = int(winWidth / 2) winCentery = int(winHeight / 2) window = pygame.display.set_mode((winWidth, winHeight), 0, 32) #--Display--# #--Images--# BackgroundImage = pygame.image.load('Background.jpg') FloorImage = pygame.image.load('Floor.jpg') BallImage = pygame.image.load('Ball.jpg') #--Images--# #--Movement Variables--# forward = False backward = False jump = False UP = 8 DOWN = 2 STOP = 5 spX = 3 spY = 5 #--Movement Variables--# #--Level Rects--# bkGroundScImage = pygame.transform.scale(BackgroundImage, (1000, 1000)) bkGroundRect = {'rect':pygame.Rect(0, -650, 1000, 1000), 'dir':UP} levelScImage = pygame.transform.scale(FloorImage, (1000, 50)) levelRect = {'rect':pygame.Rect(0, winHeight - 50, 1000, 50), 'dir':DOWN} platScImage = pygame.transform.scale(FloorImage, (100, 25)) platRect = {'rect':pygame.Rect(75, 270, 100, 25), 'dir':DOWN} platScImage1 = pygame.transform.scale(FloorImage, (100, 25)) platRect1 = {'rect':pygame.Rect(225, 250, 100, 25), 'dir':UP} platScImage2 = pygame.transform.scale(FloorImage, (100, 25)) platRect2 = {'rect':pygame.Rect(375, 200, 100, 25), 'dir':UP} platScImage3 = pygame.transform.scale(FloorImage, (100, 25)) platRect3 = {'rect':pygame.Rect(575, 150, 100, 25), 'dir':UP} platScImage4 = pygame.transform.scale(FloorImage, (100, 25)) platRect4 = {'rect':pygame.Rect(675, 150, 100, 25), 'dir':UP} platScImage5 = pygame.transform.scale(FloorImage, (100, 25)) platRect5 = {'rect':pygame.Rect(575, 0, 100, 25), 'dir':UP} platScImage6 = pygame.transform.scale(FloorImage, (100, 25)) platRect6 = {'rect':pygame.Rect(375, 0, 100, 25), 'dir':UP} #--Level Rects--# #--Caracter Rects--# charScImage = pygame.transform.scale(BallImage, (50, 50)) charRect = {'rect':pygame.Rect(20, 300, 50, 50), 'dir':DOWN} jumpScImage = pygame.transform.scale(FloorImage, (50, 140)) jumpRect = pygame.Rect(20, 210, 50, 140) winCenterRectScImage = pygame.transform.scale(FloorImage, (60, 60)) winCenterRect = pygame.Rect(winCenterx - 30, winCentery - 30, 60, 60) #--Caracter Rects--# #--Collision Variables--# solidX = int(charRect['rect'].width - spX - spX - 2) solidY = int(charRect['rect'].height - spY - spY- 1) #--Collision Variables--# while True: #--Level & scenery--# window.blit(bkGroundScImage, bkGroundRect['rect']) window.blit(levelScImage, levelRect['rect']) window.blit(platScImage, platRect['rect']) window.blit(platScImage1, platRect1['rect']) window.blit(platScImage2, platRect2['rect']) window.blit(platScImage3, platRect3['rect']) window.blit(platScImage4, platRect4['rect']) window.blit(platScImage5, platRect5['rect']) window.blit(platScImage6, platRect6['rect']) levelRect['rect'].top = bkGroundRect['rect'].bottom #--Level & scenery--# #--Character--# window.blit(winCenterRectScImage, winCenterRect) winCenterRect.center = (winCenterx, winCentery) window.blit(jumpScImage, jumpRect) jumpRect.centerx = charRect['rect'].centerx window.blit(charScImage, charRect['rect']) #--Character--# #--Input controls--# for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_RIGHT: forward = True backward = False if event.key == K_LEFT: backward = True forward = False if event.key == K_UP: jump = True if event.type == KEYUP: if event.key == K_RIGHT: forward = False if event.key == K_LEFT: backward = False if event.key == K_UP: jump = False #--Input controls--# #--Movement--# if charRect['dir'] == UP: charRect['rect'].top -= spY if charRect['dir'] == DOWN: charRect['rect'].bottom += spY #--Movement--# #--Level movement--# if charRect['rect'].centerx >= winCenterx: if forward and levelRect['rect'].right > winWidth: levelRect['rect'].right -= spX platRect['rect'].right -= spX platRect1['rect'].right -= spX platRect2['rect'].right -= spX platRect3['rect'].right -= spX platRect4['rect'].right -= spX platRect5['rect'].right -= spX platRect6['rect'].right -= spX if charRect['rect'].centerx <= winCenterx: if backward and levelRect['rect'].left < 0: levelRect['rect'].left += spX platRect['rect'].left += spX platRect1['rect'].left += spX platRect2['rect'].right += spX platRect3['rect'].right += spX platRect4['rect'].right += spX platRect5['rect'].right += spX platRect6['rect'].right += spX #--Level movement--# if bkGroundRect['rect'].top < 0 and charRect['rect'].top < winCenterRect.top: bkGroundRect['rect'].top += spY platRect['rect'].top += spY jumpRect.top += spY charRect['dir'] = STOP if levelRect['rect'].bottom > winHeight and charRect['rect'].centery == winCenterx: bkGroundRect['rect'].bottom -= spY platRect['rect'].bottom -= spY # jumpRect.bottom -= spY charRect['dir'] = STOP if levelRect['rect'].bottom <= winHeight: if charRect['rect'].centery >= winCenterx and charRect['rect'].centerx < jumpRect.centerx: charRect['dir'] = DOWN #--Character movement--# if levelRect['rect'].left == 0: if forward and charRect['rect'].centerx < winCenterx: charRect['rect'].centerx += spX if backward and charRect['rect'].left > 0: charRect['rect'].left -= spX if levelRect['rect'].right == winWidth: if forward and charRect['rect'].right < winWidth: charRect['rect'].right += spX if backward and charRect['rect'].centerx > winCenterx: charRect['rect'].centerx -= spX if levelRect['rect'].left < 0: if forward and charRect['rect'].right < winCenterRect.right: charRect['rect'].centerx += spX if levelRect['rect'].right > winWidth: if backward and charRect['rect'].left > winCenterRect.left: charRect['rect'].left -= spX if charRect['rect'].top <= jumpRect.top: charRect['dir'] = DOWN #--Character movement--# #--Collision detection--# #--Level--# if charRect['rect'].colliderect(levelRect['rect']): if charRect['rect'].bottom > levelRect['rect'].top and charRect['rect'].top < levelRect['rect'].top - solidY: charRect['rect'].bottom = levelRect['rect'].top jumpRect.bottom = levelRect['rect'].top if charRect['rect'].left < levelRect['rect'].right and charRect['rect'].right > levelRect['rect'].right + solidX: charRect['rect'].left = levelRect['rect'].right if charRect['rect'].right > levelRect['rect'].left and charRect['rect'].left < levelRect['rect'].left - solidX: charRect['rect'].right = levelRect['rect'].left if charRect['rect'].top < levelRect['rect'].bottom and charRect['rect'].bottom > levelRect['rect'].bottom + solidY: charRect['rect'].top = levelRect['rect'].bottom if charRect['rect'].bottom >= levelRect['rect'].top: if jump == True: charRect['dir'] = UP #--Level--# #--Platform--# if charRect['rect'].colliderect(platRect['rect']): if charRect['rect'].bottom > platRect['rect'].top and charRect['rect'].top < platRect['rect'].top - solidY: charRect['rect'].bottom = platRect['rect'].top jumpRect.bottom = platRect['rect'].top if charRect['rect'].left < platRect['rect'].right and charRect['rect'].right > platRect['rect'].right + solidX: charRect['rect'].left = platRect['rect'].right if charRect['rect'].right > platRect['rect'].left and charRect['rect'].left < platRect['rect'].left - solidX: charRect['rect'].right = platRect['rect'].left if charRect['rect'].top < platRect['rect'].bottom and charRect['rect'].bottom > platRect['rect'].bottom + solidY: charRect['rect'].top = platRect['rect'].bottom if charRect['rect'].bottom == platRect['rect'].top: if jump == True: charRect['dir'] = UP if charRect['rect'].top == platRect['rect'].bottom: charRect['dir'] = DOWN #--Platform--# #--Platform1--# if charRect['rect'].colliderect(platRect1['rect']): if charRect['rect'].bottom > platRect1['rect'].top and charRect['rect'].top < platRect1['rect'].top - solidY: charRect['rect'].bottom = platRect1['rect'].top jumpRect.bottom = platRect1['rect'].top if charRect['rect'].left < platRect1['rect'].right and charRect['rect'].right > platRect1['rect'].right + solidX: charRect['rect'].left = platRect1['rect'].right if charRect['rect'].right > platRect1['rect'].left and charRect['rect'].left < platRect1['rect'].left - solidX: charRect['rect'].right = platRect1['rect'].left if charRect['rect'].top < platRect1['rect'].bottom and charRect['rect'].bottom > platRect1['rect'].bottom + solidY: charRect['rect'].top = platRect1['rect'].bottom if charRect['rect'].bottom == platRect1['rect'].top: if jump == True: charRect['dir'] = UP if charRect['rect'].top == platRect1['rect'].bottom: charRect['dir'] = DOWN #--Platform1--# #--Platform2--# if charRect['rect'].colliderect(platRect2['rect']): if charRect['rect'].bottom > platRect2['rect'].top and charRect['rect'].top < platRect2['rect'].top - solidY: charRect['rect'].bottom = platRect2['rect'].top jumpRect.bottom = platRect2['rect'].top if charRect['rect'].left < platRect2['rect'].right and charRect['rect'].right > platRect2['rect'].right + solidX: charRect['rect'].left = platRect2['rect'].right if charRect['rect'].right > platRect2['rect'].left and charRect['rect'].left < platRect2['rect'].left - solidX: charRect['rect'].right = platRect2['rect'].left if charRect['rect'].top < platRect2['rect'].bottom and charRect['rect'].bottom > platRect2['rect'].bottom + solidY: charRect['rect'].top = platRect2['rect'].bottom if charRect['rect'].bottom == platRect2['rect'].top: if jump == True: charRect['dir'] = UP if charRect['rect'].top == platRect2['rect'].bottom: charRect['dir'] = DOWN #--Platform2--# #--Platform3--# if charRect['rect'].colliderect(platRect3['rect']): if charRect['rect'].bottom > platRect3['rect'].top and charRect['rect'].top < platRect3['rect'].top - solidY: charRect['rect'].bottom = platRect3['rect'].top jumpRect.bottom = platRect3['rect'].top if charRect['rect'].left < platRect3['rect'].right and charRect['rect'].right > platRect3['rect'].right + solidX: charRect['rect'].left = platRect3['rect'].right if charRect['rect'].right > platRect3['rect'].left and charRect['rect'].left < platRect3['rect'].left - solidX: charRect['rect'].right = platRect3['rect'].left if charRect['rect'].top < platRect3['rect'].bottom and charRect['rect'].bottom > platRect3['rect'].bottom + solidY: charRect['rect'].top = platRect3['rect'].bottom if charRect['rect'].bottom == platRect3['rect'].top: if jump == True: charRect['dir'] = UP if charRect['rect'].top == platRect3['rect'].bottom: charRect['dir'] = DOWN #--Platform3--# #--Platform4--# if charRect['rect'].colliderect(platRect4['rect']): if charRect['rect'].bottom > platRect4['rect'].top and charRect['rect'].top < platRect4['rect'].top - solidY: charRect['rect'].bottom = platRect4['rect'].top jumpRect.bottom = platRect4['rect'].top if charRect['rect'].left < platRect4['rect'].right and charRect['rect'].right > platRect4['rect'].right + solidX: charRect['rect'].left = platRect4['rect'].right if charRect['rect'].right > platRect4['rect'].left and charRect['rect'].left < platRect4['rect'].left - solidX: charRect['rect'].right = platRect4['rect'].left if charRect['rect'].bottom < platRect4['rect'].bottom : charRect['rect'].bottom = platRect4['rect'].top if charRect['rect'].bottom >= platRect4['rect'].top: if jump == True: charRect['dir'] = UP #--Platform4--# #--Platform5--# if charRect['rect'].colliderect(platRect5['rect']): if charRect['rect'].bottom > platRect5['rect'].top and charRect['rect'].top < platRect5['rect'].top - solidY: charRect['rect'].bottom = platRect5['rect'].top jumpRect.bottom = platRect5['rect'].top if charRect['rect'].left < platRect5['rect'].right and charRect['rect'].right > platRect5['rect'].right + solidX: charRect['rect'].left = platRect5['rect'].right if charRect['rect'].right > platRect5['rect'].left and charRect['rect'].left < platRect5['rect'].left - solidX: charRect['rect'].right = platRect5['rect'].left if charRect['rect'].top < platRect5['rect'].bottom and charRect['rect'].bottom > platRect5['rect'].bottom + solidY: charRect['rect'].top = platRect5['rect'].bottom if charRect['rect'].bottom >= platRect5['rect'].top: if jump == True: charRect['dir'] = UP if charRect['rect'].top == platRect5['rect'].bottom: charRect['dir'] = DOWN #--Platform5--# #--Platform6--# if charRect['rect'].colliderect(platRect6['rect']): if charRect['rect'].bottom > platRect6['rect'].top and charRect['rect'].top < platRect6['rect'].top - solidY: charRect['rect'].bottom = platRect6['rect'].top jumpRect.bottom = platRect6['rect'].top if charRect['rect'].left < platRect6['rect'].right and charRect['rect'].right > platRect6['rect'].right + solidX: charRect['rect'].left = platRect6['rect'].right if charRect['rect'].right > platRect6['rect'].left and charRect['rect'].left < platRect6['rect'].left - solidX: charRect['rect'].right = platRect6['rect'].left if charRect['rect'].top < platRect6['rect'].bottom and charRect['rect'].bottom > platRect6['rect'].bottom + solidY: charRect['rect'].top = platRect6['rect'].bottom if charRect['rect'].bottom >= platRect6['rect'].top: if jump == True: charRect['dir'] = UP if charRect['rect'].top == platRect6['rect'].bottom: charRect['dir'] = DOWN #--Platform6--# #--Collision detection--# #--platRect4 movement--# if platRect4['dir'] == UP: platRect4['rect'].top -= 1 if platRect4['dir'] == DOWN: platRect4['rect'].bottom += 1 if platRect4['rect'].top >= levelRect['rect'].top: if platRect4['dir'] == DOWN: platRect4['dir'] = UP if platRect4['rect'].top <= bkGroundRect['rect'].top + 200: if platRect4['dir'] == UP: platRect4['dir'] = DOWN #--PlatRect4 movement--# pygame.display.update() time.sleep(0.6)