Esempio n. 1
0
    def redrawAllScene2(self, screen):
        LargeTree.generate(LargeTree, screen, self.scrollX)
        Stone.generate(Stone, screen, self.width, self.height, self.scrollX,
                       self.snowed)
        Waterfall.generate(Waterfall, screen, self.scrollX)
        Bush.generate(Bush, screen, self.scrollX)
        for rabbit in Rabbit.rabbits:
            rabbit.draw(screen, self.scrollX)
        Bridge.generate(Bridge, screen, self.scrollX)
        MediumTree.generate(MediumTree, screen, self.scrollX)
        for bird in Bird.birds:
            bird.draw(screen, self.scrollX)
        if self.scrollX > -800:
            screen.blit(self.rightArrow, self.rightArrowRect)
        if self.scrollX < 800:
            screen.blit(self.leftArrow, self.leftArrowRect)
        #snow
        if self.snowed == True:
            for snowflake in self.snowflakes:
                screen.blit(self.snowflake, snowflake)
        #bloom instruction
        if self.currSeason == 0 or self.currSeason == 1:
            pixel = pygame.font.Font('Pixeled.ttf', 15)
            instructionSurf = pixel.render("CLICK ON TREES TO MAKE THEM BLOOM",
                                           True, (255, 255, 255))
            instructionRect = instructionSurf.get_rect()
            instructionRect.center = (self.width / 2, 775)
            screen.blit(instructionSurf, instructionRect)
        elif self.currSeason == 2 or self.currSeason == 3:
            pixel = pygame.font.Font('Pixeled.ttf', 15)
            instructionSurf = pixel.render(
                "CLICK ON TREES TO MAKE THE LEAVES FALL", True,
                (255, 255, 255))
            instructionRect = instructionSurf.get_rect()
            instructionRect.center = (self.width / 2, 775)
            screen.blit(instructionSurf, instructionRect)
        #menu bar
        screen.blit(self.menuBar, self.menuPos)
        if self.menuExpanded == True:
            screen.blit(self.seasonBar, self.seaPos)
            screen.blit(self.mydrawings, self.mydrawingsPos)

        if self.arrowShow == True:
            screen.blit(self.arrow, self.arrowPos)
        if self.seasonExpanded == True:
            screen.blit(self.spring, self.springPos)
            screen.blit(self.summer, self.summerPos)
            screen.blit(self.autumn, self.autumnPos)
            screen.blit(self.winter, self.winterPos)
            if self.currSeason == 0:
                screen.blit(self.spring1, self.springPos)
            elif self.currSeason == 1:
                screen.blit(self.summer1, self.summerPos)
            elif self.currSeason == 2:
                screen.blit(self.autumn1, self.autumnPos)
            elif self.currSeason == 3:
                screen.blit(self.winter1, self.winterPos)
                screen.blit(self.makeitsnow, self.makePos)
        if self.currSeason == 3:
            screen.blit(self.makeitsnow, self.makePos)
Esempio n. 2
0
 def redrawAllScene1(self, screen):
     LargeTree.generate(LargeTree, screen, self.scrollX)
     Stone.generate(Stone, screen, self.width, self.height, self.scrollX,
                    self.snowed)
     Waterfall.generate(Waterfall, screen, self.scrollX)
     Bush.generate(Bush, screen, self.scrollX)
     Bridge.generate(Bridge, screen, self.scrollX)
     MediumTree.generate(MediumTree, screen, self.scrollX)
     #snow
     if self.snowed == True:
         for snowflake in self.snowflakes:
             screen.blit(self.snowflake, snowflake)
     if self.showInstruction == True:
         pixel = pygame.font.Font('Pixeled.ttf', 15)
         instructionSurf = pixel.render("PRESS 'SPACE' TO ADD ANIMALS",
                                        True, (255, 255, 255))
         instructionRect = instructionSurf.get_rect()
         instructionRect.center = (self.width / 2, 775)
         screen.blit(instructionSurf, instructionRect)
     if self.showNavigation == True:
         screen.blit(self.navigation, self.navRect)
     if self.scrollX > -800:
         screen.blit(self.rightArrow, self.rightArrowRect)
     if self.scrollX < 800:
         screen.blit(self.leftArrow, self.leftArrowRect)
     screen.blit(self.menuBar, self.menuPos)
     if self.menuExpanded == True:
         screen.blit(self.seasonBar, self.seaPos)
     if self.arrowShow == True:
         screen.blit(self.arrow, self.arrowPos)
     if self.seasonExpanded == True:
         screen.blit(self.spring, self.springPos)
         screen.blit(self.summer, self.summerPos)
         screen.blit(self.autumn, self.autumnPos)
         screen.blit(self.winter, self.winterPos)
         if self.currSeason == 0:
             screen.blit(self.spring1, self.springPos)
         elif self.currSeason == 1:
             screen.blit(self.summer1, self.summerPos)
         elif self.currSeason == 2:
             screen.blit(self.autumn1, self.autumnPos)
         elif self.currSeason == 3:
             screen.blit(self.winter1, self.winterPos)
     if self.currSeason == 3:
         screen.blit(self.makeitsnow, self.makePos)
Esempio n. 3
0
 def test_ClassWhichTakesVector(self):
     waterfall = Waterfall([])
     self.assertIsNotNone(waterfall)
Esempio n. 4
0
    def initScene1(self):
        season = self.seasons[self.currSeason]
        #reset everything before changing the season
        Stone.backStones = []
        Stone.middleStones = []
        Stone.frontStones = []
        Stone.dims = []
        Stone.stoneSurface = dict()
        Stone.backSurface = dict()
        Stone.middleSurface = dict()
        Stone.frontSurface = dict()
        Tree.mediumTrees = []
        Tree.bushes = []
        Tree.largeTrees = []
        Bridge.bridges = []
        Waterfall.waterfalls = []
        #generate stones
        for corner in Stone.cornerData:
            if corner[1] <= self.height / 3:
                layer = 0
                h = random.randint(500, 800)
                w = random.randint(50, 100)
                for dim in range(random.randint(0, 4)):
                    length = random.randint(5, w // 3)
                    dimx = random.randint(corner[0], corner[0] + w * 2 // 3)
                    dimy = 790 - h
                    Stone.dims.append((length, dimx, dimy))
                Stone.backStones.append((corner[0], 800, w, h, layer))
                #add to surface dictionary
                for i in range(corner[0], corner[0] + w):
                    Stone.stoneSurface[i] = 789 - h
                    Stone.backSurface[i] = 789 - h
            elif corner[1] <= self.height * 2 / 3:
                layer = 1
                h = random.randint(100, 500)
                w = random.randint(100, 150)
                for dim in range(random.randint(0, 4)):
                    length = random.randint(5, w // 3)
                    dimx = random.randint(corner[0], corner[0] + w * 2 // 3)
                    dimy = 790 - h
                    Stone.dims.append((length, dimx, dimy))
                for i in range(corner[0], corner[0] + w):
                    Stone.stoneSurface[i] = 789 - h
                    Stone.middleSurface[i] = 789 - h
                Stone.middleStones.append((corner[0], 800, w, h, layer))

            else:
                layer = 2
                h = random.randint(20, 100)
                w = random.randint(50, 150)
                for dim in range(random.randint(0, 4)):
                    length = random.randint(5, w // 3)
                    dimx = random.randint(corner[0], corner[0] + w * 2 // 3)
                    dimy = 790 - h
                    Stone.dims.append((length, dimx, dimy))
                for i in range(corner[0], corner[0] + w):
                    Stone.stoneSurface[i] = 789 - h
                    Stone.frontSurface[i] = 789 - h
                Stone.frontStones.append((corner[0], 800, w, h, layer))

        #trees
        for tree in Tree.mediumTreeData:
            a = tree[0] + 800
            b = Stone.stoneSurface.get(a, 800)
            if b != 800:
                Tree.mediumTrees.append(MediumTree(a, b, season))
            x = tree[0]
            y = Stone.stoneSurface.get(x, 800)
            Tree.mediumTrees.append(MediumTree(x, y, season))
            c = tree[0] - 800
            d = Stone.stoneSurface.get(c, 800)
            if d != 800:
                Tree.mediumTrees.append(MediumTree(c, d, season))
        for bush in Tree.bushData:
            a = bush[0] + 800
            b = Stone.stoneSurface.get(a, 800)
            if b != 800:
                Tree.bushes.append(Bush(a, b, season))
            x = bush[0]
            y = Stone.stoneSurface.get(x, 800)
            Tree.bushes.append(Bush(x, y, season))
            c = bush[0] - 800
            d = Stone.stoneSurface.get(c, 800)
            if d != 800:
                Tree.bushes.append(Bush(c, d, season))
        for largeTree in Tree.largeTreeData:
            x = largeTree[0]
            y = 800
            height = random.randint(300, 600)
            Tree.largeTrees.append(LargeTree(x, y, height, season))
            Tree.largeTrees.append(LargeTree(x + 800, y, height, season))
            Tree.largeTrees.append(LargeTree(x - 800, y, height, season))
        #identify biggest gap
        gapOriginX,gapDestinationX,gapOriginY,gapDestinationY =\
        Stone.findBiggestGap(Stone,Stone.stoneSurface)
        #setup back stones for waterfall
        self.backStoneX = gapOriginX + (gapOriginX - gapDestinationX) / 2
        self.backStoneH = random.randint(500, 800)
        self.backStoneW = random.randint(50, 100)
        Stone.backStones.append(
            (self.backStoneX, 800, self.backStoneW, self.backStoneH, 0))
        self.middleStoneX = self.backStoneX + 30
        self.middleStoneH = random.randint(100, 500)
        self.middleStoneW = random.randint(100, 150)
        Stone.middleStones.append(
            (self.middleStoneX, 800, self.middleStoneW, self.middleStoneH, 1))
        self.frontStoneX = self.middleStoneX + 30
        self.frontStoneH = random.randint(20, 100)
        self.frontStoneW = random.randint(50, 150)
        Stone.frontStones.append(
            (self.frontStoneX, 800, self.frontStoneW, self.frontStoneH, 2))
        Waterfall.waterfalls.append(Waterfall(self.backStoneX,800-self.backStoneH,\
        self.backStoneW,self.backStoneH,self.middleStoneX,800-self.middleStoneH,\
        self.middleStoneW,self.middleStoneH,self.frontStoneX,800-self.frontStoneH,
        self.frontStoneW,self.frontStoneH))
        #identify bridge gaps
        #back
        if Stone.findBiggestGap(Stone, Stone.backSurface) != None:
            backX1,backX2,backY1,backY2 =\
            Stone.findBiggestGap(Stone,Stone.backSurface)
            Bridge.bridges.append(\
            Bridge(backX1,backX2,backY1,backY2))
        #middle
        if Stone.findBiggestGap(Stone, Stone.middleSurface) != None:
            middleX1,middleX2,middleY1,middleY2 =\
            Stone.findBiggestGap(Stone,Stone.middleSurface)
            Bridge.bridges.append(\
            Bridge(middleX1,middleX2,middleY1,middleY2))
        #front
        if Stone.findBiggestGap(Stone, Stone.frontSurface) != None:
            frontX1,frontX2,frontY1,frontY2 =\
            Stone.findBiggestGap(Stone,Stone.frontSurface)
            Bridge.bridges.append(\
            Bridge(frontX1,frontX2,frontY1,frontY2))

        #instruction
        self.showInstruction = False
        self.showNavigation = True
        self.timer = 0
        self.leftArrow = pygame.image.load('menu/leftarrow.png')
        self.rightArrow = pygame.image.load('menu/rightarrow.png')
        self.leftArrowRect = self.leftArrow.get_rect()
        self.rightArrowRect = self.rightArrow.get_rect()
        self.leftArrowRect.center = (50, self.height / 2)
        self.rightArrowRect.center = (1230, self.height / 2)
        self.navigation = pygame.image.load('menu/lookaround.png')
        self.navRect = self.navigation.get_rect()
        self.navRect.center = (self.width / 2, 30)

        #menubar
        self.menuBar = pygame.image.load('menu/menu.png')
        self.menuPos = (1150, 20)
        self.menuExpanded = False
        self.seasonBar = pygame.image.load('menu/seasons.png')
        self.seaPos = (960, 20)
        self.seasonExpanded = False
        self.arrow = pygame.image.load('menu/downarrow.png')
        self.arrowPos = (1055, 75)
        self.arrowShow = False
        self.spring = pygame.image.load('menu/spring.png')
        self.spring1 = pygame.image.load('menu/spring1.png')
        self.springPos = (960, 70)
        self.summer = pygame.image.load('menu/summer.png')
        self.summer1 = pygame.image.load('menu/summer1.png')
        self.summerPos = (960, 120)
        self.autumn = pygame.image.load('menu/autumn.png')
        self.autumn1 = pygame.image.load('menu/autumn1.png')
        self.autumnPos = (960, 170)
        self.winter = pygame.image.load('menu/winter.png')
        self.winter1 = pygame.image.load('menu/winter1.png')
        self.winterPos = (960, 220)
        self.makeitsnow = pygame.image.load('menu/makeitsnow.png')
        self.makePos = (20, 20)
        self.snowed = False
        #snow
        self.snowDensity = 30
        self.snowSpeed = 10
        self.snowflakes = []
        self.snowflake = pygame.image.load('menu/snowflake.png')
        for i in range(self.snowDensity):
            snowX = random.randint(0, 1280)
            snowY = random.randint(0, 800)
            self.snowflakes.append((snowX, snowY))
Esempio n. 5
0
 def test_WaterHeightForLongHighLowMediumLowWellWithStepAtEnd(self):
     waterfall = Waterfall([3, 1, 1, 2, 1])
     self.assertListEqual([2, 2, 2, 2, 1], waterfall.getHeights())
Esempio n. 6
0
 def test_WaterHeightForLongHighLowMediumWell(self):
     waterfall = Waterfall([3, 1, 1, 2])
     self.assertListEqual([2, 2, 2, 2], waterfall.getHeights())
Esempio n. 7
0
 def test_WaterHeightForMediumLowHighWell(self):
     waterfall = Waterfall([2, 1, 3])
     self.assertListEqual([2, 2, 2], waterfall.getHeights())
Esempio n. 8
0
 def test_WaterHeightForHighLowHighWell(self):
     waterfall = Waterfall([1, 0, 1])
     self.assertListEqual([1, 1, 1], waterfall.getHeights())
Esempio n. 9
0
from Waterfall import Waterfall

waterfall = Waterfall()
waterfall.start()