コード例 #1
0
    def __init__(self, screen, arealist, clock, numplayers, year, currentplayer, player):
        """ Initializes the variables of the AreaScene class, creates
              necessary Label, Bar objects and the pygame Rects
              corresponding to buttons. """
        # Reads from the Info.txt file the current state of the game
        # and creates the self.AreaList, the self.TroopList and the
        # self.PlayerList lists.
        self.ReadInfo(screen)

        self.time = pygame.time.Clock()
        
        self.screen = screen
        self.area = arealist
        self.Clock = clock
        self.NumPlayers = numplayers
        self.year = year
        self.currentplayer = currentplayer
        self.player = player
        
        self.white = (255, 255, 255)
        self.black = (0, 0, 0)
        self.pause = False

        # Gets the size metrics of the current display
        metrics = GEN.screen_metrics()
        self.w = metrics[0]
        self.h = metrics[1]
        self.ratiow = metrics[2]
        self.ratioh = metrics[3]

        #Creates the necessary font objects
        self.hugefont = pygame.font.SysFont("Times", int(80*self.ratiow))
        self.verylargefont = pygame.font.SysFont("Times", int(50*self.ratiow))
        self.largefont = pygame.font.SysFont("Times", int(40*self.ratiow))
        self.medfont = pygame.font.SysFont("Times", int(25*self.ratiow))
        self.smallfont = pygame.font.SysFont("Times", int(20*self.ratiow))

        # Creation of pygame Rect objects associated with buttons
        self.ButtonDict = {}
        buttonw = int(180*self.ratiow)
        buttonh = int(50*self.ratioh)
        marg = int(1660*self.ratiow)
        self.BackToMain = pygame.Rect((int(1600*self.ratiow), int(20*self.ratioh),
                                                                 buttonw, buttonh))
        self.BuildCapital = pygame.Rect((marg, int(170*self.ratioh), buttonw, buttonh))
        self.BuildFactory = pygame.Rect((marg, int(255*self.ratioh), buttonw, buttonh))
        self.BuildPort = pygame.Rect((marg, int(315*self.ratioh), buttonw, buttonh))
        self.BuildAirPort = pygame.Rect((marg, int(375*self.ratioh), buttonw, buttonh))
        self.BuildFort = pygame.Rect((marg, int(455*self.ratioh), buttonw, buttonh))
        self.BuildHospital = pygame.Rect((marg, int(515*self.ratioh), buttonw, buttonh))
        self.BuildUni = pygame.Rect((marg, int(575*self.ratioh), buttonw, buttonh))
        self.BuildBank = pygame.Rect((marg, int(655*self.ratioh), buttonw, buttonh))
        
        # Creation of Bar objects (sliding bars)
        self.bar = pygame.image.load("bar.png")
        self.bar = pygame.transform.scale(self.bar, (int(400*self.ratiow), int(10*self.ratioh)))
        self.point = pygame.image.load("point.png")
        self.point = pygame.transform.scale(self.point, (int(40*self.ratiow), int(40*self.ratioh)))
        self.playerdot = pygame.image.load(self.area[5]+".png")
        self.playerdot = pygame.transform.scale(self.playerdot, (buttonh, buttonh))
        self.barlist = []
        marg = int(60*self.ratiow)
        marg2 = marg//10
        self.taxesbar = GUI.Bar(self.screen, [marg - marg2, int(200*self.ratioh)], "Taxes",
                                                [marg, int(220*self.ratioh)], [0, 100], self.area[10])
        self.barlist.append(self.taxesbar)
        self.foodbar = GUI.Bar(self.screen, [marg - marg2, int(280*self.ratioh)], "Food",
                                               [marg, int(300*self.ratioh)], [0, 200], self.area[4][5][2])
        self.barlist.append(self.foodbar)
        self.metalbar = GUI.Bar(self.screen, [marg - marg2, int(360*self.ratioh)], "Metal",
                                                 [marg, int(380*self.ratioh)], [0, 100], self.area[4][0][2])
        self.barlist.append(self.metalbar)
        self.timberbar = GUI.Bar(self.screen, [marg - marg2, int(440*self.ratioh)], "Timber",
                                                  [marg, int(460*self.ratioh)], [0, 100], self.area[4][1][2])
        self.barlist.append(self.timberbar)
        self.fossilbar = GUI.Bar(self.screen, [marg - marg2, int(520*self.ratioh)], "Fossils",
                                                [marg, int(540*self.ratioh)], [0, 100], self.area[4][2][2])
        self.barlist.append(self.fossilbar)
        self.uraniumbar = GUI.Bar(self.screen, [marg - marg2, int(600*self.ratioh)], "Uranium",
                                                     [marg, int(620*self.ratioh)], [0, 100], self.area[4][3][2])
        self.barlist.append(self.uraniumbar)
        self.renewbar = GUI.Bar(self.screen, [marg - marg2, int(680*self.ratioh)], "Renewables",
                                                 [marg, int(700*self.ratioh)], [0, 100], self.area[4][4][1])
        self.barlist.append(self.renewbar)

        # Creation of Label objects
        if self.area[11][0] == 0: capital = "- Not Capital"
        else: capital = "- Capital"
        if self.area[11][7] == 0: bank = "- No bank"
        else: bank = "- Bank"
        marg = int(660*self.ratiow)
        marg2 = int(1360*self.ratiow) ###############################################################################
        self.labellist = [GUI.Label(self.area[1], self.hugefont, [int(self.w/2 - len(self.area[1])
                                                    *19), int(20*self.ratioh)]),
                                GUI.Label("- Moral: "+str(round(self.area[6]))+"%", self.largefont,
                                                  [marg, int(175*self.ratioh)]),
                                GUI.Label("- Population: "+str(round(self.area[3], 3))
                                                  +" million people",
                                                  self.largefont, [marg, int(225*self.ratioh)]),
                                GUI.Label("- Per Capita Income: "+str(int(self.area[9]))
                                                  +" coins", self.largefont, [marg, int(275
                                                                                            *self.ratioh)]),
                                GUI.Label("- Resources", self.verylargefont,
                                                   [marg, int(340*self.ratioh)]),
                                GUI.Label("- Food: "+str(int(self.area[4][5][0]))+"/"
                                                   +str(self.area[4][5][1]), self.largefont,
                                                   [marg, int(400*self.ratioh)]),
                                GUI.Label("- Metal: "+str(self.area[4][0][0])+"/"
                                                  +str(self.area[4][0][1]), self.largefont,
                                                  [marg, int(450*self.ratioh)]),
                                GUI.Label("- Timber: "+str(int(self.area[4][1][0]))+"/"
                                                  +str(self.area[4][1][1]), self.largefont,
                                                  [marg, int(500*self.ratioh)]),
                                GUI.Label("- Fossil Fuels: "+str(self.area[4][2][0])+"/"
                                                  +str(self.area[4][2][1]), self.largefont,
                                                  [marg, int(550*self.ratioh)]),
                                GUI.Label("- Uranium: "+str(self.area[4][3][0])+"/"
                                                   +str(self.area[4][3][1]), self.largefont,
                                                   [marg, int(600*self.ratioh)]),
                                GUI.Label("- Renewables: "+"| "+(self.area[4][4][0] + 1)*"+"
                                                   +(6 - self.area[4][4][0])*" "+"|", self.largefont,
                                                   [marg, int(650*self.ratioh)]),
                                GUI.Label(capital, self.largefont, [marg2, int(175*self.ratioh)]),
                                GUI.Label("- Factory: lvl. "+str(self.area[11][1]), self.largefont,
                                                   (marg2, int(260*self.ratioh))),
                                GUI.Label("- Port: lvl. "+str(self.area[11][2]), self.largefont,
                                                  (marg2, int(320*self.ratioh))),
                                GUI.Label("- Airport: lvl. "+str(self.area[11][3]), self.largefont,
                                                  (marg2, int(380*self.ratioh))),
                                GUI.Label("- Fort: lvl. "+str(self.area[11][4]), self.largefont,
                                                  (marg2, int(460*self.ratioh))),
                                GUI.Label("- Hospital: lvl. "+str(self.area[11][5]), self.largefont,
                                                  (marg2, int(520*self.ratioh))),
                                GUI.Label("- University: lvl. "+str(self.area[11][6]), self.largefont,
                                                  (marg2, int(580*self.ratioh))),
                                GUI.Label(bank, self.largefont, (marg2, int(660*self.ratioh)))]

        # Calling the self.Draw method 
        self.Draw()