Esempio n. 1
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))