Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Import the modules
- import pygame
- import os
- import random
- import threading
- # Define colours in RBG format
- white = (255, 255, 255)
- black = (0, 0, 0)
- blue = (0, 0, 255)
- snow = (255, 250, 250)
- red = (255, 0 , 0)
- color = (125, 125, 125)
- bullet = (255, 166, 39)
- # Sets the constants for screen display size
- screen_height = 854
- screen_width = 480
- width = 10
- height = 20
- # Initialize pygame engine
- pygame.mixer.init()
- # Loads the required music files
- intro_music = (os.path.join("space.ogg"))
- # Plays the music, sets volume and sets the loop
- pygame.mixer.music.load(os.path.join("space.ogg"))
- pygame.mixer.music.set_volume(2)
- pygame.mixer.music.play(-1)
- # Set display size according to constants
- screen = pygame.display.set_mode((1384, 600))
- # Sets the variable background to the image file
- background = pygame.image.load("space.jpg")
- background = background.convert()
- # Sets program display title
- pygame.display.set_caption("CANABALT")
- # Sets visibility of the moouse to false
- pygame.mouse.set_visible(0)
- # Sets the clock for program and allows
- # you to set Frame per Second later
- clock = pygame.time.Clock()
- # Initializes font and sets defualt font if
- # need to write something later on
- pygame.font.init()
- font = pygame.font.Font(None, 50)
- font_big = pygame.font.Font(None, 70)
- font_small = pygame.font.Font(None, 40)
- #Set required global variables
- lives = 5
- done = False
- game_running = True
- background_speed = 5
- back = background
- back2 = background
- x = 0
- y = 0
- screenWidth = 1384
- # Define relevant texts needed to be used later
- space_text = font_big.render("SPACE", True, (255, 255, 255))
- objective_text = font.render("THIS IS ENDLESS GAME MODE", True, (255, 255, 255))
- start_text = font_small.render("PRESS SPACE TO START", True, (255,255,255))
- exit_text = font.render("Press ESCAPE to Exit", True, (255,255,255))
- #Define classes and sub-classes
- class Platform(pygame.sprite.Sprite):
- change_x = 0
- change_y = 0
- def __init__(self, x, y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("space_platforms_long.jpg")
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- class Medium(pygame.sprite.Sprite):
- change_x = 0
- change_y = 0
- def __init__(self, x, y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("space platform.jpg")
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- class Rock(pygame.sprite.Sprite):
- change_x = 0
- change_y = 0
- def __init__(self, x, y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("asteroid.png")
- self.image.set_colorkey(white)
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- # Class defining
- class Player(pygame.sprite.Sprite):
- change_x = 0
- change_y = 0
- frame = 0
- def __init__(self, x, y):
- pygame.sprite.Sprite.__init__(self)
- self.images = []
- for i in range(1,8):
- img = img = pygame.image.load("stickman"+str(i)+".png")
- img.set_colorkey(white)
- self.images.append(img)
- self.image_platform_long = self.images[0]
- self.rect = self.image_platform_long.get_rect()
- # Change the speed of the player
- def changespeed(self,x,y):
- self.change_x+=x
- self.change_y+=y
- # Find a new position for the player
- def update(self):
- self.rect.x += self.change_x
- self.rect.y += self.change_y
- collide = collide = pygame.sprite.spritecollide(player, platform_list, False)
- if done == False:
- self.frame +=1
- if self.frame > 4*5:
- self.frame = 0
- # Controls player running images
- self.image = self.images[self.frame//4]
- if done ==False:
- self.frame += 1
- if self.frame > 7*8:
- self.frame = 0
- self.image = self.images[self.frame//4+4]
- def jump(self):
- collide = collide = pygame.sprite.spritecollide(player, platform_list, False)
- if collide:
- self.rect.y-=30
- def gravity(self):
- collide = collide = pygame.sprite.spritecollide(player, platform_list, False)
- self.change_y +=.14
- if collide:
- self.change_y = False
- if self.change_y >= 6.5:
- self.change_y = 6.5
- medium_collide = pygame.sprite.spritecollide(player, medium_list, False)
- if medium_collide:
- self.change_y = False
- if self.change_y >= 6.5:
- self.change_y = 6.5
- class Bullet(pygame.sprite.Sprite):
- def __init__(self):
- # Call the parent class (Sprite) constructor
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.Surface([4, 10])
- self.image.fill(black)
- self.rect = self.image.get_rect()
- # List of platforms in the game
- platform_list = pygame.sprite.Group()
- medium_list = pygame.sprite.Group()
- # List of all the sprites in the game
- all_sprites_list = pygame.sprite.Group()
- # List of the bullets in the game
- bullet_list = pygame.sprite.Group()
- #list of the rocks in the game
- rock_list = pygame.sprite.Group()
- #Set spawning of objects and the amount fo spawns
- for x in range(300):
- platform = Platform(0,0)
- # Set x and y
- platform.rect.x = random.normalvariate(-200,20000)
- platform.rect.y = random.normalvariate(370,550)
- platform_list.add(platform)
- all_sprites_list.add(platform)
- for a in range(150):
- rock = Rock(0,0)
- rock.rect.x = random.randrange(-200,30000)
- rock.rect.y = random.randrange(80,500)
- # Add platform and rock to list of moving objects
- rock_list.add(rock)
- all_sprites_list.add(rock)
- for l in range(275):
- medium = Medium(0,0)
- medium.rect.x = random.normalvariate(-200,20000)
- medium.rect.y = random.normalvariate(370,550)
- medium_list.add(medium)
- all_sprites_list.add(medium)
- # Set starting player position and platform speed
- player = Player(20,15)
- player.rect.x = 50
- player.rect.y = 10
- platform_speed = -3
- rock_speed = -3
- # Add player to list of moving objects
- all_sprites_list.add(player)
- all_sprites_list.add(platform)
- all_sprites_list.add(rock)
- all_sprites_list.add(medium)
- start = True
- while start:
- screen.blit(space_text, [600,20])
- screen.blit(objective_text, [30,100])
- screen.blit(start_text, [30,150])
- screen.blit(exit_text, [1000,555])
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_SPACE:
- start = False
- if event.key == pygame.K_SPACE:
- start = False
- if event.key == pygame.K_1:
- import forest_level_end
- if event.key == pygame.K_2:
- import sea_level_end
- if event.key == pygame.K_3:
- import desert_level_end
- if event.key == pygame.K_4:
- import underwater_level_end
- if event.key == pygame.K_5:
- import space_level_end
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_ESCAPE:
- pygame.quit()
- # Main program loop and controls Quitting the game
- done = False
- collide = pygame.sprite.spritecollide(player, platform_list, False)
- while done == False:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- done=True
- # Set the speed based on the key pressed
- collide = pygame.sprite.spritecollide(player, platform_list, False)
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_LEFT:
- player.changespeed(-4,0)
- if event.key == pygame.K_RIGHT:
- player.changespeed(4,0)
- if event.key == pygame.K_DOWN:
- player.changespeed(0,3)
- if event.key == pygame.K_UP:
- player.changespeed(0,-5.5)
- # Reset speed when key goes up
- if event.type == pygame.KEYUP:
- if event.key == pygame.K_LEFT:
- player.changespeed(4,0)
- if event.key == pygame.K_RIGHT:
- player.changespeed(-4,0)
- if event.key == pygame.K_DOWN:
- player.changespeed(0,-3)
- if event.key == pygame.K_UP:
- player.changespeed(0,5.5)
- if event.key == pygame.K_ESCAPE:
- pygame.quit()
- # Stops player from leaving the screen and controls speed of
- # platform to give illsuion of player running faster
- if player.rect.x <= 0:
- diff = 20 + player.rect.x
- player.rect.x=0
- for platform in platform_list:
- platform.rect.x += 1.0
- for rock in rock_list:
- rock.rect.x += 1.0
- if player.rect.y <= -1:
- player.rect.y=0
- if player.rect.x <=75:
- diff = player.rect.x + 75
- for platform in platform_list:
- platform.rect.x += 0.8
- for rock in rock_list:
- rock.rect.x += 0.8
- for medium in medium_list:
- medium.rect.x += 0.8
- if player.rect.x >= 75:
- diff = player.rect.x - 75
- for platform in platform_list:
- platform.rect.x -= 0.8
- for rock in rock_list:
- rock.rect.x -= 0.8
- for medium in medium_list:
- medium.rect.x -= 0.8
- if player.rect.x >=115:
- diff = player.rect.x -115
- for platform in platform_list:
- platform.rect.x -= 0.9
- for rock in rock_list:
- rock.rect.x -= 0.9
- for medium in medium_list:
- medium.rect.x -= 0.9
- if player.rect.x >=140:
- diff = player.rect.x -140
- for platform in platform_list:
- platform.rect.x -= 1.1
- for rock in rock_list:
- rock.rect.x -= 1.1
- for medium in medium_list:
- medium.rect.x -= 1.1
- if player.rect.x >=165:
- diff = player.rect.x -165
- for platform in platform_list:
- platform.rect.x -= 1.2
- for rock in rock_list:
- rock.rect.x -= 1.2
- for medium in medium_list:
- medium.rect.x -= 1.2
- if player.rect.x >=200:
- diff = player.rect.x -200
- for platform in platform_list:
- platform.rect.x -= 1.3
- background_speed = 9
- for rock in rock_list:
- rock.rect.x -= 1.3
- for medium in medium_list:
- medium.rect.x -= 1.3
- if player.rect.x >=240:
- diff = player.rect.x -240
- for platform in platform_list:
- platform.rect.x -= 1.4
- if player.rect.x >=240:
- background_speed = 10
- for rock in rock_list:
- rock.rect.x -= 1.4
- for medium in medium_list:
- medium.rect.x -= 1.4
- if player.rect.x >=270:
- diff = player.rect.x -270
- for platform in platform_list:
- platform.rect.x -= 1.5
- if player.rect.x >=270:
- background_speed = 11
- for rock in rock_list:
- rock.rect.x -= 1.5
- for medium in medium_list:
- medium.rect.x -= 1.5
- if player.rect.x >=300:
- diff = player.rect.x -300
- for platform in platform_list:
- platform.rect.x -= 1.6
- if player.rect.x >=300:
- background_speed = 12
- for rock in rock_list:
- rock.rect.x -= 1.6
- for medium in medium_list:
- medium.rect.x -= 1.6
- if player.rect.x >=340:
- diff = player.rect.x -340
- for platform in platform_list:
- platform.rect.x -= 1.7
- if player.rect.x >=340:
- background_speed = 13
- for rock in rock_list:
- rock.rect.x -= 1.7
- for medium in medium_list:
- medium.rect.x -= 1.7
- if player.rect.x >=380:
- diff = player.rect.x -380
- for platform in platform_list:
- platform.rect.x -= 1.8
- if player.rect.x >=380:
- background_speed = 14
- for rock in rock_list:
- rock.rect.x -= 1.8
- for medium in medium_list:
- medium.rect.x -= 1.8
- if player.rect.x >=420:
- diff = player.rect.x -420
- for platform in platform_list:
- platform.rect.x -= 1.9
- if player.rect.x >=420:
- background_speed = 15
- for rock in rock_list:
- rock.rect.x -= 1.9
- for medium in medium_list:
- medium.rect.x -= 1.9
- if player.rect.x >=460:
- diff = player.rect.x -460
- for platform in platform_list:
- platform.rect.x -= 2.0
- if player.rect.x >=460:
- background_speed = 16
- for rock in rock_list:
- rock.rect.x -= 2.0
- for medium in medium_list:
- medium.rect.x -= 2.0
- if player.rect.x >=500:
- diff = player.rect.x -500
- for platform in platform_list:
- platform.rect.x -= 2.1
- if player.rect.x >=500:
- background_speed = 17
- for rock in rock_list:
- rock.rect.x -= 2.1
- for medium in medium_list:
- medium.rect.x -= 2.1
- if player.rect.x >=540:
- diff = player.rect.x -540
- for platform in platform_list:
- platform.rect.x -= 2.2
- if player.rect.x >=540:
- background_speed = 18
- for rock in rock_list:
- rock.rect.x -= 2.2
- for medium in medium_list:
- medium.rect.x -= 2.2
- if player.rect.x >=580:
- diff = player.rect.x -580
- for platform in platform_list:
- platform.rect.x -= 2.3
- if player.rect.x >=580:
- background_speed = 19
- for rock in rock_list:
- rock.rect.x -= 2.3
- for medium in medium_list:
- medium.rect.x -= 2.3
- if player.rect.x >= 1340:
- player.rect.x =1340
- if player.rect.y <=0:
- player.rect.y =0
- if player.rect.y >= 601:
- lives -= 1
- if player.rect.y >= 601:
- player.rect.y = 0
- if player.rect.x <= 0:
- player.rect.x =0
- if lives > 0:
- y = y + player.rect.x/30
- z = 22000 - y
- lives_text = font.render("%d lives" % lives, True, (255, 255, 255))
- coins_text = font.render("%d score" % y, True, (255, 255, 255))
- current_stage = font.render("SPACE", True, (255, 255, 255))
- lose_text = font.render("You lose, press ESCAPE to quit", True, (255,255,255))
- final_score = font_big.render("You finished with %d" % y , True, (255,255,255))
- #Platform loop
- for platform in platform_list:
- # Movement of block
- platform.rect.x += platform_speed
- for medium in medium_list:
- medium.rect.x += platform_speed
- for rock in rock_list:
- rock.rect.x += rock_speed
- collide = pygame.sprite.spritecollide(player, platform_list, False)
- if len(pygame.sprite.spritecollide(player, platform_list, False)) > 0:
- player.rect.y-=2
- medium_collide = pygame.sprite.spritecollide(player, medium_list, False)
- if len(pygame.sprite.spritecollide(player, medium_list, False)) > 0:
- player.rect.y-=2
- rock_collide = pygame.sprite.spritecollide(player, rock_list, True)
- if rock_collide:
- lives-=1
- if rock_collide:
- player.rect.y = 100
- player.rect.x = 50
- if lives <=0:
- lives = 0
- # Draw all the spites
- screen.blit(back, (x,0))
- screen.blit(back2,(x-screenWidth,0))
- screen.blit(lives_text, [20,4])
- screen.blit(coins_text, [1190,4])
- screen.blit(current_stage, [640, 4])
- player.update()
- all_sprites_list.draw(screen)
- platform_list.update()
- rock_list.update()
- medium_list.update()
- x = x + background_speed
- if x == screenWidth:
- x = 0
- # Gravity
- player.gravity()
- # Updates all the sprites and other objects
- pygame.display.flip()
- # Frame rate
- clock.tick(30)
- if x == screenWidth:
- x = 0
- if x >= screenWidth:
- x = -1
- # End game and stop all running variables
- if lives == 1:
- white = red
- pygame.display.update()
- if lives <= 0:
- pygame.mixer.music.fadeout(7000)
- screen.fill(black)
- screen.blit(lose_text, [100,100])
- screen.blit(final_score, [100,200])
- pygame.display.update()
- pygame.time.delay(100)
- for event in pygame.event.get():
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_ESCAPE:
- pygame.quit()
- clock.tick(30)
- #Quits the game upon clicking the close button
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement