class AuraDefender(Defender):
    """
    Aura defender class who provides buffs.
    """
    last_created_time = 0
    HP = 150
    ATTACK_POWER = 12
    DEFEND_POWER = 1
    reach_model = [(-1, -1), (-1, 0), (-1, 1), (-1, 2), (0, 0), (0, -1), (0, 1), (0, 2), (1, -1), (1, 0), (1, 1), (1, 2)]
    SPEED = 0
    ATTACK_SPEED = 1.0
    filename = path('res/character/gongtoub0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'AuraDefender'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 1
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.cost = 20
        self.cool_down_time = 60
        self.init_image(self.filename, 75, 75, 1)
        AuraDefender.last_created_time = time.time()

    def update(self):
        for defender in Defender.defenders:
            if CharacterModel.reachable(self, defender, self.reach_model):
                self.activate_special(defender)
        super().update()

    @staticmethod
    def activate_special(character):
        character.attack_power = 1.2 * character.ATTACK_POWER
        character.defend_power = 1.2 * character.DEFEND_POWER

    def die(self):
        for defender in Defender.defenders:
            if CharacterModel.reachable(self, defender, self.reach_model):
                self.deactivate_special(defender)
        super().die()

    @staticmethod
    def deactivate_special(character):
        character.attack_power = character.ATTACK_POWER
        character.defend_power = character.DEFEND_POWER
Exemple #2
0
def dataLoad(i):
    level = path("res/levelData/level" + str(i) + ".txt")
    fileP = open(level, mode='r')
    columnAndRow = []  #加载地图的行和列
    blockData = []  #加载地图中的方块信息
    directionData = []  #加载地图中的方向信息
    t = fileP.readline(4)
    t = t.strip('\n')
    #print(t)
    columnAndRow.append(int(t))  #行,6行
    t = fileP.readline(4)
    t = t.strip('\n')
    #print(t)
    columnAndRow.append(int(t))  #列,10列
    while (1):
        a = fileP.read(1)
        if a == "*":
            break
        if a == "\n" or a == "\r":
            continue
        blockData.append(int(a))

    s = ""
    l = []
    while (1):
        a = fileP.read(1)
        if a == "*":
            s = ""
            break
        if a == " " or a == ",":
            if s != "":
                l.append(int(s))
            s = ""
            continue
        if a == "\n" or a == "\r":
            if s != "":
                l.append(int(s))
            if len(l) == 3:
                directionData.append(l)
            l = []
            s = ""
            continue
        s += a

    fileP.close()
    levelData = (columnAndRow, blockData, directionData)
    return levelData
class ScientistAttacker(Attacker):
    """
    Scientist attacker class.
    """
    last_created_time = 0
    SPECIAL_INTERVAL = 10  # seconds
    HP = 180
    ATTACK_POWER = 30
    DEFEND_POWER = 0
    reach_model = [(0, 0), (0, 1), (0, 2)]
    special_reach_model = [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9)]
    SPEED = 1.0
    ATTACK_SPEED = 1.0
    filename = path('res/mapnum/Mapnum1_0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'ScientistAttacker'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 1
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.speed = self.SPEED / 5
        self.cost = 25
        self.cool_down_time = 50
        self.created_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        BombDefender.last_created_time = time.time()
        self.last_special_time = 0
    
    def update(self):
        if time.time() - self.last_special_time >= self.SPECIAL_INTERVAL:
            count = 0
            for defender in Defender.defenders:
                if self.reachable(self, defender, self.special_reach_model):
                    defender.die()
                    count += 1
            self.attack_power *= 1.5 * count + 1
            self.speed *= 2 * count + 1
            self.attack_power = min(self.attack_power, 10 * self.ATTACK_POWER)
            self.speed = min(self.speed, 10 * self.SPEED)
            self.reach_model = [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]
            self.last_special_time = time.time()
class PharmacistDefender(Defender):
    """
    Pharmacist defender class.
    """
    last_created_time = 0
    SPECIAL_INTERVAL = 15
    HP = 100
    ATTACK_POWER = 10
    DEFEND_POWER = 2
    reach_model = [(-1, -1), (-1, 0), (-1, 1), (0, 0), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
    SPEED = 0
    ATTACK_SPEED = 1.0
    filename = path('res//character/yaojishib0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'PharmacistDefender'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 1
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.cost = 25
        self.cool_down_time = 80
        self.last_special_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        PharmacistDefender.last_created_time = time.time()

    def update(self):
        if time.time() - self.last_special_time >= self.SPECIAL_INTERVAL:
            for defender in Defender.defenders:
                if CharacterModel.reachable(self, defender, self.reach_model) and defender.active:
                    self.special(defender)
        super().update()

    def attacked(self, loss, attacker):
        super().attacked(loss, attacker)

    def special(self, character):
        if character.hp <= 0:
            character.hp = character.HP
            self.last_special_time = time.time()
class BombDefender(Defender):
    """
    Bomb defender class.
    """
    last_created_time = 0
    SPECIAL_INTERVAL = 1.5  # seconds
    HP = 200
    ATTACK_POWER = 0
    DEFEND_POWER = 0
    reach_model = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 0), (0, 1), (1, -1), (1, 0), (1, 1)]
    SPEED = 0
    ATTACK_SPEED = 0.5
    filename = path('res/mapnum/Mapnum1_0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'BombDefender'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 0.025
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.cost = 28
        self.cool_down_time = 120
        self.created_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        BombDefender.last_created_time = time.time()

    def update(self):
        if time.time() - self.created_time >= self.SPECIAL_INTERVAL:
            self.die()
        super().update()

    def die(self):
        for attacker in Attacker.attackers:
            if CharacterModel.reachable(self, attacker, self.reach_model):
                self.special(attacker)
        super().die()

    def special(self, character):
        character.attacked(self.hp, self)
class BombAttacker(Attacker):
    """
    Bomb attacker class.
    """
    last_created_time = 0
    HP = 210
    ATTACK_POWER = 20
    SPECIAL_ATTACK_POWER = 380
    DEFEND_POWER = 0
    SPEED = 1.0
    ATTACK_SPEED = 1.0
    reach_model = [(0, 0)]
    special_reach_model = [(-1, 0), (0, -1), (0, 0), (0, 1), (1, 0)]
    filename = path('res/mapnum/Mapnum1_0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'BombAttacker'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 0.025
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.speed = 0.2
        self.cost = 28
        self.cool_down_time = 90
        self.init_image(self.filename, 75, 75, 1)
        BombAttacker.last_created_time = time.time()

    def special(self, character):
        character.attacked(self.SPECIAL_ATTACK_POWER, self)

    def die(self):
        # Exert special attack to its 4-neighbors
        for defender in Defender.defenders:
            if CharacterModel.reachable(self, defender, self.special_reach_model):
                self.special(defender)
        super().die()
class PharmacistAttacker(Attacker):
    """
    Pharmacist attacker class.
    """
    last_created_time = 0
    SPECIAL_INTERVAL = 8
    HP = 150
    ATTACK_POWER = 15
    DEFEND_POWER = 2
    reach_model = [(0, 1), (0, 0), (0, -1), (1, 0),(-1, 0), (1, 1),(1, -1),(-1, 1),(-1,-1)]
    SPEED = 1.0
    ATTACK_SPEED = 1.0
    filename = path('res/character/yaojishir0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'PharmacistAttacker'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 1
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.speed = 0.2
        self.cost = 25
        self.cool_down_time = 80
        self.last_special_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        PharmacistAttacker.last_created_time = time.time()

    def attacked(self, loss, attacker):
        if time.time() - self.last_special_time >= self.SPECIAL_INTERVAL:
            # Kill attacker
            self.special(attacker)
            self.last_special_time = time.time()
        super().attacked(loss, attacker)

    def special(self, character):
        character.die()
class ScientistDefender(Defender):
    """
    Scientist defender class.
    """
    last_created_time = 0
    SPECIAL_INTERVAL = 60  # seconds
    HP = 150
    ATTACK_POWER = 15
    DEFEND_POWER = 0
    reach_model = [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (-1, 0), (-1, 1), (-1, 2), (1, 0), (1, 1), (1, 2)]
    special_reach_model = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
    SPEED = 0
    ATTACK_SPEED = 0.5
    filename = path('res/mapnum/Mapnum1_0.png')

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'ScientistDefender'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 2
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.cost = 25
        self.cool_down_time = 50
        self.created_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        BombDefender.last_created_time = time.time()
        self.last_special_time = time.time()
    
    def update(self):
        if time.time() - self.last_special_time >= self.SPECIAL_INTERVAL:
            for defender in Defender.defenders:
                if self.reachable(self, defender, self.special_reach_model):
                    self.hp += defender.hp * 2
                    self.attack_power += defender.attack_power * 2
                    defender.die()
            self.last_special_time = time.time()
class BullyAttacker(Attacker):
    """
    Bully attacker class.
    """
    last_created_time = 0
    HP = 125
    ATTACK_POWER = 20
    DEFEND_POWER = 0
    reach_model = [(0, 0), (0, -1), (0, 1), (1, 0), (-1, 0)]
    SPEED = 2.0
    ATTACK_SPEED = 0.8
    filename = path('res/mapnum/Mapnum1_0.png')
    special_targets = set()

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'ScientistDefender'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 1.25
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.cost = 19
        self.cool_down_time = 18
        self.speed = 0.4
        self.created_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        BombDefender.last_created_time = time.time()
        self.last_special_time = 0
    
    def update(self):
        for defender in Defender.defenders:
            if self.reachable(self, defender, self.reach_model):
                BullyDefender.special_targets.add((defender, time.time()))
        for defender, apply_time in BullyDefender.special_targets:
            if defender in Defender.defenders and time.time() - apply_time <= 3:
                defender.hp -= 15 / 90 # 90 frames in 3 secs
class IdiotAttacker(Attacker):
    """
    Idiot attacker class.
    """
    last_created_time = 0
    HP = 150
    ATTACK_POWER = 8
    DEFEND_POWER = 0
    reach_model = [(0, -2), (0, -1), (0, 0), (0, -1), (0, -2)]
    SPEED = 0.5
    ATTACK_SPEED = 0.8
    filename = path('res/mapnum/Mapnum1_0.png')
    special_targets = set()

    def __init__(self, controller, position, direction):
        self.controller = controller
        super().__init__(controller, position, direction)
        self.type = 'ScientistDefender'
        self.attack_power = self.ATTACK_POWER
        self.attack_time = 1.25
        self.defend_power = self.DEFEND_POWER
        self.hp = self.HP
        self.speed = 0.1
        self.cost = 22
        self.cool_down_time = 25
        self.created_time = time.time()
        self.init_image(self.filename, 75, 75, 1)
        BombDefender.last_created_time = time.time()
        self.last_special_time = 0
    
    def update(self):
        for attacker in Attacker.attackers:
            if attacker is self:
                continue
            if self.reachable(self, attacker, self.reach_model):
                attacker.attacked(self.attack_power, self)
Exemple #11
0
def combatScene(map, selectedRoleList, toolsList, screen):
    #战斗界面时整体的背景图,大小为750×500
    bgImageFile = path('image/combatSceneBg.jpg')
    bgImage_init = pygame.image.load(bgImageFile).convert()
    bgImage = pygame.transform.scale(bgImage_init, (750, 500))
    screen.blit(bgImage, (0, 0))

    #定义一些帮助确定位置的坐标,以地图的位置为参考
    mapLeft = 50
    mapTop = 20
    mapButtom = 420
    mapRight = 700

    setMapUI(map, mapLeft, mapTop, 50)

    mapAreaDraw(map, screen)

    roleInfoAreaDraw(0, mapTop, mapLeft, 200)

    costAreaDraw(0, mapButtom, mapLeft, 500)

    cardAreaDraw(mapLeft, mapButtom, mapRight, 500, selectedRoleList)

    toolAreaDraw(mapRight, mapTop, 750, mapButtom, toolsList)
def settings(screen, clock, isBgmOn):       
    # isBgmOn是一个bool量用来告诉函数是否播放背景音乐
    # isFullscreen则以bool量形式告诉函数当前是否是全屏的
    # 需要在这里设置一下背景音乐

    size = (width, height) = (1280, 720)
    
    bgmFlag = isBgmOn
    breakflag = 0
    background = pygame.image.load(path("res/bg/bg_main.png")).convert()    #背景图
    title = pygame.image.load(path("res/pic/settingTitle.png")).convert_alpha()    #标题
    titlePos = (340, 20)
    backButton = pygame.image.load(path("res/button/back.png")).convert_alpha()
    backPos = (0, 0)
    homeButton = pygame.image.load(path("res/button/home.png")).convert_alpha()
    homePos = (150, 0)

    fullscreenButton = pygame.image.load(path("res/button/fullscreen.png")).convert_alpha()     # 全屏
    fullscreenPos = (420, 250)
    bgmButton = pygame.image.load(path("res/button/bgm.png")).convert_alpha()         # 背景音乐
    bgmPos = (420, 350)

    onButton = pygame.image.load(path("res/button/on.png")).convert_alpha()     
    offButton = pygame.image.load(path("res/button/off.png")).convert_alpha()        
    fullscreenOnPos0 = (660, 250)
    fullscreenOnPos1 = (660, 245)
    fullscreenOffPos0 = (727, 250)
    fullscreenOffPos1 = (727, 245)
    bgmOnPos0 = (660, 350)
    bgmOnPos1 = (660, 345)
    bgmOffPos0 = (727, 350)
    bgmOffPos1 = (727, 345)
    fullscreenOnPos = fullscreenOnPos0
    fullscreenOffPos = fullscreenOffPos0
    bgmOnPos = bgmOnPos0
    bgmOffPos = bgmOffPos0

    while True:
        for event in pygame.event.get():
            x, y = pygame.mouse.get_pos()

            # 浮动效果
            if x > fullscreenOnPos0[0] and x < fullscreenOnPos0[0] + onButton.get_width() \
                    and y > fullscreenOnPos0[1] and y < fullscreenOnPos0[1] + onButton.get_height():
                fullscreenOnPos = fullscreenOnPos1
            else:
                fullscreenOnPos = fullscreenOnPos0
            
            if x > fullscreenOffPos0[0] and x < fullscreenOffPos0[0] + offButton.get_width() \
                    and y > fullscreenOffPos0[1] and y < fullscreenOffPos0[1] + offButton.get_height():
                fullscreenOffPos = fullscreenOffPos1
            else:
                fullscreenOffPos = fullscreenOffPos0

            if x > bgmOnPos0[0] and x < bgmOnPos0[0] + onButton.get_width() \
                    and y > bgmOnPos0[1] and y < bgmOnPos0[1] + onButton.get_height():
                bgmOnPos = bgmOnPos1
            else:
                bgmOnPos = bgmOnPos0
            
            if x > bgmOffPos0[0] and x < bgmOffPos0[0] + offButton.get_width() \
                    and y > bgmOffPos0[1] and y < bgmOffPos0[1] + offButton.get_height():
                bgmOffPos = bgmOffPos1
            else:
                bgmOffPos = bgmOffPos0

            if event.type == pygame.QUIT:
                sys.exit()
                breakflag = 1

            if event.type == MOUSEBUTTONDOWN:
                if x > backPos[0] and x < backPos[0] + backButton.get_width() \
                        and y > backPos[1] and y < backPos[1] + backButton.get_height():
                    breakflag = 1
                    # here to come back

                if x > homePos[0] and x < homePos[0] + homeButton.get_width() \
                        and y > homePos[1] and y < homePos[1] + homeButton.get_height():
                    breakflag = 1
                    # here to come back home
                
                # touch logic
                if x > fullscreenOnPos0[0] and x < fullscreenOnPos0[0] + onButton.get_width() \
                    and y > fullscreenOnPos0[1] and y < fullscreenOnPos0[1] + onButton.get_height():
                    # here to set fullscreen on
                    screen = pygame.display.set_mode(size, FULLSCREEN)

                if x > fullscreenOffPos0[0] and x < fullscreenOffPos0[0] + offButton.get_width() \
                    and y > fullscreenOffPos0[1] and y < fullscreenOffPos0[1] + offButton.get_height():
                    # here to set fullscreen off
                    screen = pygame.display.set_mode(size, 0)
                
                if x > bgmOnPos0[0] and x < bgmOnPos0[0] + onButton.get_width() \
                    and y > bgmOnPos0[1] and y < bgmOnPos0[1] + onButton.get_height():
                    # here to turn on bgm
                    # 这里要加上对应的逻辑
                    if bgmFlag:
                        bgmFlag = False
                        # closeBgm()


                if x > bgmOffPos0[0] and x < bgmOffPos0[0] + offButton.get_width() \
                    and y > bgmOffPos0[1] and y < bgmOffPos0[1] + offButton.get_height():
                    # here to turn off bgm
                    #需要加上对应逻辑
                    if not bgmFlag:
                        bgmFlag = True
                        # closeBgm()


        screen.blit(background, (0, 0))
        screen.blit(title, titlePos)
        screen.blit(backButton, backPos)
        screen.blit(homeButton, homePos)
        screen.blit(fullscreenButton, fullscreenPos)
        screen.blit(bgmButton, bgmPos)
        screen.blit(onButton, fullscreenOnPos)
        screen.blit(offButton, fullscreenOffPos)
        screen.blit(onButton, bgmOnPos)
        screen.blit(offButton, bgmOffPos)

# 更新画面
        pygame.display.update()
        # 帧率
        clock.tick(40)
        if breakflag == 1:
            return (screen, bgmFlag)
def selectCharacters(screen, clock, modeID, mapID):
    background = (255, 255, 255)
    breakflag = 0
    infoflag = 0
    # playBgm(1)
    # 编队
    CharID = []  #存储选中的角色编号,传入到战斗界面
    totalNum = 9  #可选中角色总数
    chooseNum = 0  #选中的角色数量
    characterFlamePos = []  #人物框的位置
    characterPic0 = []  #未上锁的人物图片
    characterPic = []  #当前人物栏的人物状态图
    loadpathNotLocked = []  #未上锁人物图路径
    loadpathLocked = []  #上锁人物图路径
    charInfoList = []  # 人物信息
    charactersInTeam = [1, 1, 1, 1, 1, 1, 1, 1, 1]  #人物状态,是否编入队伍,是为0,否为1
    modeIntroAddress = path("res/pic/modeintro" + str(modeID) + ".png")

    # 图片及位置
    if modeID == 1 or modeID == 3:
        background = pygame.image.load(
            path("res/bg/bg_character_att.png")).convert()
        stringc = "r"
    else:
        background = pygame.image.load(
            path("res/bg/bg_character_def.png")).convert()
        stringc = "b"

    backButton = pygame.image.load(path("res/button/back.png")).convert_alpha()
    backPos = (0, 0)
    homeButton = pygame.image.load(path("res/button/home.png")).convert_alpha()
    homePos = (150, 0)
    startButton = pygame.image.load(
        path("res/button/sure.png")).convert_alpha()
    startPos = (1080, 653)
    characterTitle = pygame.image.load(
        path("res/pic/chartitle.png")).convert_alpha()
    characterTitlePos = (340, 0)
    modeIntro = pygame.image.load(modeIntroAddress).convert_alpha()
    modeIntroPos = (980, 0)
    #   人物框
    characterFlame = pygame.image.load(
        path("res/character/charflame.png")).convert_alpha()
    #   编队框
    teamFlame = pygame.image.load(
        path("res/character/teamflame.png")).convert_alpha()
    teamFlamePos = (255, 520)
    characterInfoPos = (0, 100)
    # 人物框加载路径
    if modeID == 2:
        side = 'b'  # single defend
    elif modeID == 1:
        side = 'r'  # single attack
    loadpathNotLocked.append(path("res/character/pingmin{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/gongtou{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/gansidui{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/pangdun{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/yaojishi{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/bomb{}.png".format(side)))
    loadpathNotLocked.append(path(
        "res/character/scientist{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/bully{}.png".format(side)))
    loadpathNotLocked.append(path("res/character/fully{}.png".format(side)))
    loadpathLocked.append(path("res/character/pingmin{}s.png".format(side)))
    loadpathLocked.append(path("res/character/gongtou{}s.png".format(side)))
    loadpathLocked.append(path("res/character/gansidui{}s.png".format(side)))
    loadpathLocked.append(path("res/character/pangdun{}s.png".format(side)))
    loadpathLocked.append(path("res/character/yaojishi{}s.png".format(side)))
    loadpathLocked.append(path("res/character/bomb{}s.png".format(side)))
    loadpathLocked.append(path("res/character/scientist{}s.png".format(side)))
    loadpathLocked.append(path("res/character/bully{}s.png".format(side)))
    loadpathLocked.append(path("res/character/fully{}s.png".format(side)))

    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/pingmin{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/gongtou{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/gansidui{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/pangdun{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/yaojishi{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/bomb{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/scientist{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/bully{}.png".format(side))).convert_alpha())
    charInfoList.append(
        pygame.image.load(path(
            "res/charinfo/fully{}.png".format(side))).convert_alpha())

    for i in range(0, totalNum):
        characterPic0.append(
            pygame.image.load(loadpathNotLocked[i]).convert_alpha())
        characterPic.append(
            pygame.image.load(loadpathNotLocked[i]).convert_alpha())
        characterFlamePos.append((255 + i * 100, 250))
    while True:
        x, y = pygame.mouse.get_pos()
        # 根据鼠标悬停显示对应的角色信息
        # 不悬停则不显示
        infoflag = 0
        for i in range(0, totalNum):
            if x > characterFlamePos[i][0] and x < characterFlamePos[i][0] + characterFlame.get_width() \
                and y > characterFlamePos[i][1] and y < characterFlamePos[i][1] + characterFlame.get_height():
                Charinfo = charInfoList[i]
                infoflag = 1
        for i in range(0, chooseNum):
            if x > 255 + 100 * i and x < 255 + 100 * i + characterFlame.get_width() \
                and y > 520 and y < 520 + characterFlame.get_height():
                Charinfo = charInfoList[CharID[i]]
                infoflag = 1

        for event in pygame.event.get():
            x, y = pygame.mouse.get_pos()
            if event.type == pygame.QUIT:
                sys.exit()
                breakflag = 1

            if event.type == MOUSEBUTTONDOWN:
                if x > backPos[0] and x < backPos[0] + backButton.get_width() \
                        and y > backPos[1] and y < backPos[1] + backButton.get_height():
                    from src.selectMap import selectMap
                    selectMap(screen, clock, modeID)
                    breakflag = 1
                    # here to come back

                if x > homePos[0] and x < homePos[0] + homeButton.get_width() \
                        and y > homePos[1] and y < homePos[1] + homeButton.get_height():
                    from src.initialMenu import initialMenu
                    initialMenu(screen, clock)
                    breakflag = 1
                    # here to come back home

                if x > startPos[0] and x < startPos[0] + startButton.get_width() \
                        and y > startPos[1] and y < startPos[1] + startButton.get_height():
                    from src.fighting import startFight
                    startFight(screen, clock, modeID, mapID, CharID)
                    breakflag = 1
                    # here to start the game

                for i in range(0, totalNum):
                    if x > characterFlamePos[i][0] and x < characterFlamePos[i][0] + characterFlame.get_width() \
                            and y > characterFlamePos[i][1] and y < characterFlamePos[i][1] + characterFlame.get_height():
                        charactersInTeam[i] = -charactersInTeam[i]
                        # Charinfo = charInfoList[i]
                        # infoflag = 1
                        if charactersInTeam[i] == 1:
                            characterPic[i] = pygame.image.load(
                                loadpathNotLocked[i]).convert_alpha()
                            CharID.remove(i)
                            chooseNum = chooseNum - 1
                        else:
                            if chooseNum <= 7:
                                characterPic[i] = pygame.image.load(
                                    loadpathLocked[i]).convert_alpha()
                                CharID.append(i)
                                chooseNum = chooseNum + 1
                            else:
                                charactersInTeam[i] = 1

                for i in range(0, chooseNum):
                    if x > 255 + 100 * i and x < 255 + 100 * i + characterFlame.get_width() \
                            and y > 520 and y < 520 + characterFlame.get_height():
                        charactersInTeam[
                            CharID[i]] = -charactersInTeam[CharID[i]]
                        # Charinfo = pygame.image.load(path("res/charinfo/Charinfo.png")).convert_alpha()
                        if charactersInTeam[CharID[i]] == 1:
                            characterPic[CharID[i]] = pygame.image.load(
                                loadpathNotLocked[CharID[i]]).convert_alpha()
                            del CharID[i]
                            chooseNum = chooseNum - 1

        # 填充背景和内容
        screen.blit(background, (0, 0))
        screen.blit(backButton, backPos)
        screen.blit(homeButton, homePos)
        if chooseNum > 0:
            screen.blit(startButton, startPos)
        screen.blit(characterTitle, characterTitlePos)
        screen.blit(modeIntro, modeIntroPos)
        screen.blit(teamFlame, teamFlamePos)
        if infoflag == 1:
            screen.blit(Charinfo, characterInfoPos)
        for i in range(0, totalNum):
            screen.blit(characterFlame, characterFlamePos[i])
            screen.blit(characterPic[i], characterFlamePos[i])
        for i in range(0, chooseNum):
            screen.blit(characterPic0[CharID[i]], (255 + 100 * i, 520))
        # 更新画面
        pygame.display.update()
        # 帧率
        clock.tick(40)
        if breakflag == 1:
            break
def endFight(screen, clock, modeID, flag_mapinfo, isWin, attackers, defenders, mapload, defendersID, attackersID, attackerPicOld, attackerDetectPicOld, attackerAttackPicOld):
    resultPad = pygame.image.load(path("res/battle/fightResultPad.png")).convert_alpha()
    if isWin:
        title = pygame.image.load(path("res/battle/victory.png")).convert_alpha()
        # winBgm()
    else:
        title = pygame.image.load(path("res/battle/lose.png")).convert_alpha()
        # loseBgm()
    tryAgainButton = pygame.image.load(path("res/battle/tryAgain.png")).convert_alpha()
    returnHomeButton = pygame.image.load(path("res/battle/backToMenu.png")).convert_alpha()

    padPos = (240, 60)
    titlePos = (440, 80)
    tryAgainButtonPos0 = (540, 430)
    tryAgainButtonPos1 = (540, 425)
    returnHomeButtonPos0 = (540, 510)
    returnHomeButtonPos1 = (540, 505)
    tryAgainButtonPos = tryAgainButtonPos0
    returnHomeButtonPos = returnHomeButtonPos0

    breakflag = 0

    AmbulanceEquipment.count = 1
    ListEquipment.count = 1
    CanonEquipment.count = 1
    IndifferentEquipment.count = 1
    DopingEquipment.count = 1
    SignalEquipment.count = 1

    while True:

        for event in pygame.event.get():
            x, y = pygame.mouse.get_pos()
            if x > tryAgainButtonPos0[0] and x < tryAgainButtonPos0[0] + tryAgainButton.get_width() \
                    and y > tryAgainButtonPos0[1] and y < tryAgainButtonPos0[1] + tryAgainButton.get_height():
                tryAgainButtonPos = tryAgainButtonPos1
            else:
                tryAgainButtonPos = tryAgainButtonPos0

            if x > returnHomeButtonPos0[0] and x < returnHomeButtonPos0[0] + returnHomeButton.get_width() \
                    and y > returnHomeButtonPos0[1] and y < returnHomeButtonPos0[1] + returnHomeButton.get_height():
                returnHomeButtonPos = returnHomeButtonPos1
            else:
                returnHomeButtonPos = returnHomeButtonPos0

            if event.type == pygame.QUIT:
                sys.exit()
                breakflag = 1

            if event.type == MOUSEBUTTONDOWN:
                if x > tryAgainButtonPos0[0] and x < tryAgainButtonPos0[0] + tryAgainButton.get_width() \
                        and y > tryAgainButtonPos0[1] and y < tryAgainButtonPos0[1] + tryAgainButton.get_height():
                    from src.selectCharacters import selectCharacters
                    for defender in defenders:
                        k = defenders.index(defender)
                        mapload.maps[mapload.positionToBlock([defender.position[0], defender.position[1]])[1]][mapload.positionToBlock([defender.position[0], defender.position[1]])[0]].isPlantOn = False
                        defenders.remove(defender)
                        defender.die()
                        del defendersID[k]
                    for attacker in attackers:
                        k = attackers.index(attacker)
                        attackers.remove(attacker)
                        attacker.die()
                        del attackerPicOld[k]
                        del attackerDetectPicOld[k]
                        del attackerAttackPicOld[k]
                        del attackersID[k]
                    for defender in Defender.defenders:
                        defender.die()
                    for attacker in Attacker.attackers:
                        attacker.die()
                    selectCharacters(screen, clock, modeID, flag_mapinfo)
                    breakflag = 1
                    # here to start the game function

                if x > returnHomeButtonPos0[0] and x < returnHomeButtonPos0[0] + returnHomeButton.get_width() \
                        and y > returnHomeButtonPos0[1] and y < returnHomeButtonPos0[1] + returnHomeButton.get_height():
                    from src.initialMenu import initialMenu
                    for defender in defenders:
                        k = defenders.index(defender)
                        mapload.maps[mapload.positionToBlock([defender.position[0], defender.position[1]])[1]][mapload.positionToBlock([defender.position[0], defender.position[1]])[0]].isPlantOn = False
                        defenders.remove(defender)
                        defender.die()
                        del defendersID[k]
                    for attacker in attackers:
                        k = attackers.index(attacker)
                        attackers.remove(attacker)
                        attacker.die()
                        del attackerPicOld[k]
                        del attackerDetectPicOld[k]
                        del attackerAttackPicOld[k]
                        del attackersID[k]
                    for defender in Defender.defenders:
                        defender.die()
                    for attacker in Attacker.attackers:
                        attacker.die()
                    initialMenu(screen, clock)
                    # here to get back to home

        # 填充背景和内容
        screen.blit(resultPad, padPos)
        screen.blit(title, titlePos)
        screen.blit(tryAgainButton, tryAgainButtonPos)
        screen.blit(returnHomeButton, returnHomeButtonPos)

        # 更新画面
        pygame.display.update()
        # 帧率
        clock.tick(40)
        if breakflag == 1:
            break
Exemple #15
0
def cardAreaDraw(x1, y1, x2, y2, selectedRolesList):
    cardBgFile = path('image/cardBg.jpg')
    cardBg_init = pygame.image.load(cardBgFile).convert()
    cardBg = pygame.transform.scale(cardBg_init, (x2 - x1, y2 - y1))
    screen.blit(cardBg, (x1, y1))
Exemple #16
0
#mapDisplay(map_test,screen)

#角色准备
attackers = []
deffenders = []
for i in range(3):
    attackers.append(
        AuraAttacker(controller,
                     [(9 + 0.5) * map_test.blockSize + map_test.xBegin,
                      (1 + 0.5) * map_test.blockSize + map_test.yBegin], 0))
    deffenders.append(
        CivilianDefender(controller,
                         [(i + 1 + 0.5) * map_test.blockSize + map_test.xBegin,
                          (1 + 0.5) * map_test.blockSize + map_test.yBegin],
                         0))
attackerFile = path("image/CvilianAttacker.jpg")
deffenderFile = path("image/CivilianDeffender.jpg")
attackerImage = pygame.image.load(attackerFile).convert()
deffenderImage = pygame.image.load(deffenderFile).convert()
attackerImage = pygame.transform.scale(attackerImage, (50, 50))
deffenderImage = pygame.transform.scale(deffenderImage, (50, 50))

#计时准备
COUNT = pygame.USEREVENT + 1
pygame.time.set_timer(COUNT, 33)  #每0.001秒发一次
counts = 0

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            # 接收到退出事件后退出程序
Exemple #17
0
import sys

app = QApplication(sys.argv)

from src import tracking_data, project, debug

debug.restore_io()

files = QFileDialog.getOpenFileNames(None, "Select files to merge", "",
                                     "CSV files (*.csv);;All files (*.*)")
if len(files) < 2:
    print "You need to select at least 2 files"
    sys.exit(2)

first_file = path(files[0])
data_dir = first_file.dirname()

data = [tracking_data.TrackingData(None, False, path(f)) for f in files]

whole = data[0]


def nb_points(d):
    return max([max(d.data[img].keys()) for img in d.data if d.data[img]]) + 1


print "Nb of point in first image: %d" % nb_points(whole)
print "Nb of cells in first image: %d" % len(whole.cells)

for d in data[1:]:
Exemple #18
0
QCoreApplication.setOrganizationDomain("barbierdereuille.net")
#QSettings.setDefaultFormat(QSettings.IniFormat)

import sys
app = QApplication(sys.argv)

from src import tracking_data, project, debug

debug.restore_io()

files = QFileDialog.getOpenFileNames(None, "Select files to merge", "", "CSV files (*.csv);;All files (*.*)")
if len(files) < 2:
  print "You need to select at least 2 files"
  sys.exit(2)

first_file = path(files[0])
data_dir = first_file.dirname()

data = [ tracking_data.TrackingData(None, False, path(f)) for f in files ]

whole = data[0]

def nb_points(d):
  return max([max(d.data[img].keys()) for img in d.data if d.data[img]])+1

print "Nb of point in first image: %d" % nb_points(whole)
print "Nb of cells in first image: %d" % len(whole.cells)

for d in data[1:]:
  print "Nb of point in next image: %d" % nb_points(d)
  print "Nb of cells in next image: %d" % len(d.cells)
def initialMenu(screen, clock):
    background = (255, 255, 255)
    breakflag = 0
    # playBgm(0)

    # 图片及位置
    background = pygame.image.load(path("res/bg/bg_main.png")).convert()  #背景图
    title = pygame.image.load(path("res/pic/title.png")).convert_alpha()  #标题
    titlePos = (340, 100)
    startButton = pygame.image.load(
        path("res/button/start.png")).convert_alpha()  #开始游戏
    startPos0 = (540, 345)
    startPos1 = (540, 340)
    handbookButton = pygame.image.load(
        path("res/button/handbook.png")).convert_alpha()  #图鉴
    handbookPos0 = (400, 445)
    handbookPos1 = (400, 440)
    helpButton = pygame.image.load(
        path("res/button/help.png")).convert_alpha()  #帮助文档
    helpPos0 = (400, 545)
    helpPos1 = (400, 540)
    settingButton = pygame.image.load(
        path("res/button/setting.png")).convert_alpha()  #设置
    settingPos0 = (680, 445)
    settingPos1 = (680, 440)
    quitButton = pygame.image.load(
        path("res/button/quit.png")).convert_alpha()  #退出游戏
    quitPos0 = (680, 545)
    quitPos1 = (680, 540)
    startPos = startPos0
    handbookPos = handbookPos0
    helpPos = helpPos0
    settingPos = settingPos0
    quitPos = quitPos0

    while True:

        for event in pygame.event.get():
            x, y = pygame.mouse.get_pos()
            #   按键位置移动
            if x > startPos0[0] and x < startPos0[0] + startButton.get_width() \
                    and y > startPos0[1] and y < startPos0[1] + startButton.get_height():
                startPos = startPos1
            else:
                startPos = startPos0

            if x > handbookPos0[0] and x < handbookPos0[0] + handbookButton.get_width() \
                    and y > handbookPos0[1] and y < handbookPos0[1] + handbookButton.get_height():
                handbookPos = handbookPos1
            else:
                handbookPos = handbookPos0

            if x > helpPos0[0] and x < helpPos0[0] + helpButton.get_width() \
                    and y > helpPos0[1] and y < helpPos0[1] + helpButton.get_height():
                helpPos = helpPos1
            else:
                helpPos = helpPos0

            if x > settingPos0[0] and x < settingPos0[0] + settingButton.get_width() \
                    and y > settingPos0[1] and y < settingPos0[1] + settingButton.get_height():
                settingPos = settingPos1
            else:
                settingPos = settingPos0

            if x > quitPos0[0] and x < quitPos0[0] + quitButton.get_width() \
                    and y > quitPos0[1] and y < quitPos0[1] + quitButton.get_height():
                quitPos = quitPos1
            else:
                quitPos = quitPos0

            #   退出游戏
            if event.type == pygame.QUIT:
                sys.exit()
                breakflag = 1

            if event.type == MOUSEBUTTONDOWN:
                if x > startPos0[0] and x < startPos0[0] + startButton.get_width() \
                        and y > startPos0[1] and y < startPos0[1] + startButton.get_height():
                    selectMode(screen, clock)
                    breakflag = 1
                    # here to start the game function

                if x > handbookPos0[0] and x < handbookPos0[0] + handbookButton.get_width() \
                        and y > handbookPos0[1] and y < handbookPos0[1] + handbookButton.get_height():
                    from src.handbook import handbook
                    handbook(screen, clock)
                    # here to the handbook function

                if x > helpPos0[0] and x < helpPos0[0] + helpButton.get_width() \
                        and y > helpPos0[1] and y < helpPos0[1] + helpButton.get_height():
                    from src.help import help
                    help(screen, clock)
                    # here to start the help function

                if x > settingPos0[0] and x < settingPos0[0] + settingButton.get_width() \
                        and y > settingPos0[1] and y < settingPos0[1] + settingButton.get_height():
                    from src.settings import settings
                    screen, isBgmOn = settings(screen, clock, False)
                    settings(screen, clock, True)
                    # here to the setting function

                elif x > quitPos0[0] and x < quitPos0[0] + quitButton.get_width() \
                        and y > quitPos0[1] and y < quitPos0[1] + quitButton.get_height():
                    # print('game ended!')
                    sys.exit()
        # 填充背景和内容
        screen.blit(background, (0, 0))
        screen.blit(title, titlePos)
        screen.blit(startButton, startPos)
        screen.blit(handbookButton, handbookPos)
        screen.blit(helpButton, helpPos)
        screen.blit(settingButton, settingPos)
        screen.blit(quitButton, quitPos)
        # 说明文字
        # screen.blit(font.render("用上下左右键来控制", True, (166, 100, 30)), (300, 50))
        # 更新画面
        pygame.display.update()
        # 帧率
        clock.tick(40)
        if breakflag == 1:
            break
def bgmPath(bgm):
    return path("res/bgm/"+ bgm +"bgm.mp3")
Exemple #21
0
def voyager1_original(ephem):
    earth = ephem.get_body('EARTH')
    jupiter = ephem.get_body('JUPITER')
    saturn = ephem.get_body('SATURN')
    sun = ephem.get_body('SUN')

    def convert(dateObj):
        return sp.str2et(dateObj.strftime("%Y %b %d %H:%M:%S").lower())

    voyst = lambda t: sp.spkezr('VOYAGER 1', convert(t), 'J2000', 'LT+S',
                                'SOLAR SYSTEM BARYCENTER')[0]

    #earth to jupiter
    D = 10
    tfE = datetime(1977, 9, 6, 14, 54)
    t0J = datetime(1979, 1, 16, 13, 54)
    tfJ = datetime(1979, 4, 22, 11, 7)
    t0S = datetime(1980, 10, 3, 1, 32)
    tfS = datetime(1980, 12, 24, 4, 35)
    timesE2J = []
    trajE2J = []
    for i in range(D):
        tE2J = (t0J - tfE) * i / D + tfE
        state = voyst(tE2J)
        timesE2J.append(tE2J)
        trajE2J.append(trajectory(sun, tE2J, state, tE2J + (t0J - tfE) / D))

    #swingby at jupiter
    trajByJ = trajectory(jupiter, t0J, voyst(t0J) - jupiter.state(t0J), tfJ)

    #jupiter to saturn
    timesJ2S = []
    trajJ2S = []
    for i in range(D):
        tJ2S = (t0S - tfJ) * i / D + tfJ
        state = voyst(tJ2S)
        timesJ2S.append(tJ2S)
        trajJ2S.append(trajectory(sun, tJ2S, state, tJ2S + (t0S - tfJ) / D))

    #swingby at saturn
    trajByS = trajectory(saturn, t0S, voyst(t0S) - saturn.state(t0S), tfS)

    #after saturn
    after = timedelta(days=1500)
    trajAftS = trajectory(sun, tfS, voyst(tfS), tfS + after)

    entranceTimes = []
    entranceTimes.extend(timesE2J)
    entranceTimes.append(t0J)
    entranceTimes.extend(timesJ2S)
    entranceTimes.append(t0S)
    entranceTimes.append(tfS)
    trajs = []
    trajs.extend(trajE2J)
    trajs.append(trajByJ)
    trajs.extend(trajJ2S)
    trajs.append(trajByS)
    trajs.append(trajAftS)

    voyager = path(launchTime=tfE,
                   deltaV='Original',
                   duration=tfS - tfE + after,
                   entranceTimes=entranceTimes,
                   trajectories=trajs)
    return voyager
Exemple #22
0
import sys

sys.path.insert(0, ".")

from src import path

map = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]

p = path.path((10,10))
p.set_map(map)
for t in xrange(1000):
  q=p.get_path((0,0),0,(9,9))

for y in range(len(map)):
  for x in range(len(map[0])):
    if not map[x][y]: print "#",
    elif (x,y) in q: print "X",
    else: print " ",
  print
Exemple #23
0
def voyager1_recreated(ephem):
    earth = ephem.get_body('EARTH')
    jupiter = ephem.get_body('JUPITER')
    saturn = ephem.get_body('SATURN')
    sun = ephem.get_body('SUN')

    def convert(dateObj):
        return sp.str2et(dateObj.strftime("%Y %b %d %H:%M:%S").lower())

    voyst = lambda t: sp.spkezr('VOYAGER 1', convert(t), 'J2000', 'LT+S',
                                'SOLAR SYSTEM BARYCENTER')[0]

    #earth to jupiter
    D = 10
    tfE = datetime(1977, 9, 6, 14, 54)
    t0J = datetime(1979, 1, 16, 13, 54)
    tfJ = datetime(1979, 4, 22, 11, 7)
    t0S = datetime(1980, 10, 3, 1, 32)
    tfS = datetime(1980, 12, 24, 4, 35)
    timesE2J = []
    trajE2J = []
    for i in range(D):
        tE2J = (t0J - tfE) * i / D + tfE
        state = voyst(tE2J)
        timesE2J.append(tE2J)
        trajE2J.append(trajectory(sun, tE2J, state, tE2J + (t0J - tfE) / D))

    #swingby at jupiter
    st0J = voyst(t0J) - jupiter.state(t0J)
    stfJ = voyst(tfJ) - jupiter.state(tfJ)
    GMJ = jupiter.const('GM', 1)[0]

    def dVJ(th1, th2):
        enpt = entrance(Rsoi['JUPITER'], st0J[3:], th1, th2)
        exst = swingby(Rsoi['JUPITER'], np.concatenate((enpt, st0J[3:])), GMJ)
        return np.linalg.norm(stfJ[3:] - exst[3:])

    th1J, th2J = decaying_descent(dVJ, [[-np.pi, np.pi], [-np.pi, np.pi]],
                                  [0.2, 0.2], [np.pi / 20, 0],
                                  None,
                                  iters=5,
                                  decay_factor=5)
    enptJ = entrance(Rsoi['JUPITER'], st0J[3:], th1J, th2J)
    sIntoJ = np.concatenate((enptJ, st0J[3:]))
    trajByJ = trajectory(jupiter, t0J, sIntoJ, tfJ)

    #jupiter to saturn
    timesJ2S = []
    trajJ2S = []
    for i in range(D):
        tJ2S = (t0S - tfJ) * i / D + tfJ
        state = voyst(tJ2S)
        timesJ2S.append(tJ2S)
        trajJ2S.append(trajectory(sun, tJ2S, state, tJ2S + (t0S - tfJ) / D))

    #swingby at saturn
    st0S = voyst(t0S) - saturn.state(t0S)
    stfS = voyst(tfS) - saturn.state(tfS)
    GMS = saturn.const('GM', 1)[0]

    def dVS(th1, th2):
        enpt = entrance(Rsoi['SATURN'], st0S[3:], th1, th2)
        exst = swingby(Rsoi['SATURN'], np.concatenate((enpt, st0S[3:])), GMS)
        return np.linalg.norm(stfS[3:] - exst[3:])

    th1S, th2S = decaying_descent(dVS, [[-np.pi, np.pi], [-np.pi, np.pi]],
                                  [0.2, 0.2], [np.pi / 20, 0],
                                  None,
                                  iters=5,
                                  decay_factor=5)
    enptS = entrance(Rsoi['SATURN'], st0S[3:], th1S, th2S)
    sIntoS = np.concatenate((enptS, st0S[3:]))
    trajByS = trajectory(saturn, t0S, sIntoS, tfS)

    #after saturn
    after = timedelta(days=1500)
    trajAftS = trajectory(sun, tfS, voyst(tfS), tfS + after)

    entranceTimes = []
    entranceTimes.extend(timesE2J)
    entranceTimes.append(t0J)
    entranceTimes.extend(timesJ2S)
    entranceTimes.append(t0S)
    entranceTimes.append(tfS)
    trajs = []
    trajs.extend(trajE2J)
    trajs.append(trajByJ)
    trajs.extend(trajJ2S)
    trajs.append(trajByS)
    trajs.append(trajAftS)

    voyager = path(launchTime=tfE,
                   deltaV='Recreated',
                   duration=tfS - tfE + after,
                   entranceTimes=entranceTimes,
                   trajectories=trajs)
    return voyager
Exemple #24
0
def handbook(screen, clock):
    breakflag = 0
    showSurvivorOrZombie = 0    # 0 for survivor and 1 for zombie
    charID = 0      # from 0 to totalNum-1
    totalNum = 7    #可选中角色总数
    characterPicb = [] # 存储人类的列表
    characterPicr = [] # 存储僵尸图片的列表
    characterStoryb = []
    characterStoryr = []
    characterInfob = []
    characterInfor = []

    background = pygame.image.load(path("res/bg/bg_main.png")).convert()    #背景图
    title = pygame.image.load(path("res/pic/handbookTitle.png")).convert_alpha()    #标题
    titlePos = (340, 20)
    backButton = pygame.image.load(path("res/button/back.png")).convert_alpha()
    backPos = (0, 0)
    homeButton = pygame.image.load(path("res/button/home.png")).convert_alpha()
    homePos = (150, 0)

    survivorButton = pygame.image.load(path("res/button/survivor.png")).convert_alpha()     #生存者
    survivorPos0 = (0, 245)
    survivorPos1 = (0, 240)
    zombieButton = pygame.image.load(path("res/button/zombie.png")).convert_alpha()         #感染者
    zombiePos0 = (200, 245)
    zombiePos1 = (200, 240)
    leftButton = pygame.image.load(path("res/button/left.png")).convert_alpha()     #左箭头
    leftPos0 = (55, 415)
    leftPos1 = (55, 410)
    rightButton = pygame.image.load(path("res/button/right.png")).convert_alpha()         #右箭头
    rightPos0 = (275, 415)
    rightPos1 = (275, 410)

    charbg = pygame.image.load(path("res/character/charflame.png")).convert_alpha()
    charbgPos = (150, 350)
    charPos = charbgPos
    storyPos = (440, 250)
    infoPos = (1020, 100)

    side = 'b'
    characterPicb.append(pygame.image.load(path("res/character/pingmin{}.png").format(side)))
    characterPicb.append(pygame.image.load(path("res/character/gongtou{}.png").format(side)))
    characterPicb.append(pygame.image.load(path("res/character/gansidui{}.png").format(side)))
    characterPicb.append(pygame.image.load(path("res/character/pangdun{}.png").format(side)))
    characterPicb.append(pygame.image.load(path("res/character/yaojishi{}.png").format(side)))
    characterPicb.append(pygame.image.load(path("res/character/bomb{}.png").format(side)))
    characterPicb.append(pygame.image.load(path("res/character/scientist{}.png").format(side)))
    side = 'r'
    characterPicr.append(pygame.image.load(path("res/character/pingmin{}.png").format(side)))
    characterPicr.append(pygame.image.load(path("res/character/gongtou{}.png").format(side)))
    characterPicr.append(pygame.image.load(path("res/character/gansidui{}.png").format(side)))
    characterPicr.append(pygame.image.load(path("res/character/pangdun{}.png").format(side)))
    characterPicr.append(pygame.image.load(path("res/character/yaojishi{}.png").format(side)))
    characterPicr.append(pygame.image.load(path("res/character/bomb{}.png").format(side)))
    characterPicr.append(pygame.image.load(path("res/character/scientist{}.png").format(side)))

    side = 'b'
    characterStoryb.append(pygame.image.load(path("res/characterStory/pingmin{}.png").format(side)))
    characterStoryb.append(pygame.image.load(path("res/characterStory/gongtou{}.png").format(side)))
    characterStoryb.append(pygame.image.load(path("res/characterStory/gansidui{}.png").format(side)))
    characterStoryb.append(pygame.image.load(path("res/characterStory/pangdun{}.png").format(side)))
    characterStoryb.append(pygame.image.load(path("res/characterStory/yaojishi{}.png").format(side)))
    characterStoryb.append(pygame.image.load(path("res/characterStory/bomb{}.png").format(side)))
    characterStoryb.append(pygame.image.load(path("res/characterStory/scientist{}.png").format(side)))
    side = 'r'
    characterStoryr.append(pygame.image.load(path("res/characterStory/pingmin{}.png").format(side)))
    characterStoryr.append(pygame.image.load(path("res/characterStory/gongtou{}.png").format(side)))
    characterStoryr.append(pygame.image.load(path("res/characterStory/gansidui{}.png").format(side)))
    characterStoryr.append(pygame.image.load(path("res/characterStory/pangdun{}.png").format(side)))
    characterStoryr.append(pygame.image.load(path("res/characterStory/yaojishi{}.png").format(side)))
    characterStoryr.append(pygame.image.load(path("res/characterStory/bomb{}.png").format(side)))
    characterStoryr.append(pygame.image.load(path("res/characterStory/scientist{}.png").format(side)))

    side = 'b'
    characterInfob.append(pygame.image.load(path("res/charinfo/pingmin{}.png").format(side)))
    characterInfob.append(pygame.image.load(path("res/charinfo/gongtou{}.png").format(side)))
    characterInfob.append(pygame.image.load(path("res/charinfo/gansidui{}.png").format(side)))
    characterInfob.append(pygame.image.load(path("res/charinfo/pangdun{}.png").format(side)))
    characterInfob.append(pygame.image.load(path("res/charinfo/yaojishi{}.png").format(side)))
    characterInfob.append(pygame.image.load(path("res/charinfo/bomb{}.png").format(side)))
    characterInfob.append(pygame.image.load(path("res/charinfo/scientist{}.png").format(side)))
    side = 'r'
    characterInfor.append(pygame.image.load(path("res/charinfo/pingmin{}.png").format(side)))
    characterInfor.append(pygame.image.load(path("res/charinfo/gongtou{}.png").format(side)))
    characterInfor.append(pygame.image.load(path("res/charinfo/gansidui{}.png").format(side)))
    characterInfor.append(pygame.image.load(path("res/charinfo/pangdun{}.png").format(side)))
    characterInfor.append(pygame.image.load(path("res/charinfo/yaojishi{}.png").format(side)))
    characterInfor.append(pygame.image.load(path("res/charinfo/bomb{}.png").format(side)))
    characterInfor.append(pygame.image.load(path("res/charinfo/scientist{}.png").format(side)))
    
    while True:
        for event in pygame.event.get():
            x, y = pygame.mouse.get_pos()

            # 浮动效果
            if x > survivorPos0[0] and x < survivorPos0[0] + survivorButton.get_width() \
                    and y > survivorPos0[1] and y < survivorPos0[1] + survivorButton.get_height():
                survivorPos = survivorPos1
            else:
                survivorPos = survivorPos0

            if x > zombiePos0[0] and x < zombiePos0[0] + zombieButton.get_width() \
                    and y > zombiePos0[1] and y < zombiePos0[1] + zombieButton.get_height():
                zombiePos = zombiePos1
            else:
                zombiePos = zombiePos0

            if x > leftPos0[0] and x < leftPos0[0] + leftButton.get_width() \
                    and y > leftPos0[1] and y < leftPos0[1] + leftButton.get_height():
                leftPos = leftPos1
            else:
                leftPos = leftPos0

            if x > rightPos0[0] and x < rightPos0[0] + rightButton.get_width() \
                    and y > rightPos0[1] and y < rightPos0[1] + rightButton.get_height():
                rightPos = rightPos1
            else:
                rightPos = rightPos0

            
            if event.type == pygame.QUIT:
                sys.exit()
                breakflag = 1

            if event.type == MOUSEBUTTONDOWN:
                if x > backPos[0] and x < backPos[0] + backButton.get_width() \
                        and y > backPos[1] and y < backPos[1] + backButton.get_height():
                    breakflag = 1
                    # here to come back

                if x > homePos[0] and x < homePos[0] + homeButton.get_width() \
                        and y > homePos[1] and y < homePos[1] + homeButton.get_height():
                    breakflag = 1
                    # here to come back home

                # touch logic
                if x > survivorPos0[0] and x < survivorPos0[0] + survivorButton.get_width() \
                    and y > survivorPos0[1] and y < survivorPos0[1] + survivorButton.get_height():
                    showSurvivorOrZombie = 0
                
                if x > zombiePos0[0] and x < zombiePos0[0] + zombieButton.get_width() \
                    and y > zombiePos0[1] and y < zombiePos0[1] + zombieButton.get_height():
                    showSurvivorOrZombie = 1
                
                if x > leftPos0[0] and x < leftPos0[0] + leftButton.get_width() \
                    and y > leftPos0[1] and y < leftPos0[1] + leftButton.get_height():
                    charID = charID - 1
                    if charID < 0:
                        charID = charID + totalNum
                
                if x > rightPos0[0] and x < rightPos0[0] + rightButton.get_width() \
                    and y > rightPos0[1] and y < rightPos0[1] + rightButton.get_height():
                    charID = charID + 1
                    if charID == totalNum:
                        charID = 0

        # 更新显示内容    
        if showSurvivorOrZombie == 0:
            CharList = characterPicb
            StoryList = characterStoryb
            InfoList = characterInfob
        else:
            CharList = characterPicr
            StoryList = characterStoryr
            InfoList = characterInfor
        
        charPic = CharList[charID]
        storyPic = StoryList[charID]
        infoPic = InfoList[charID]

        # 填充背景和内容
        screen.blit(background, (0, 0))
        screen.blit(title, titlePos)
        screen.blit(charbg, charbgPos)
        screen.blit(backButton, backPos)
        screen.blit(homeButton, homePos)
        screen.blit(survivorButton, survivorPos)
        screen.blit(zombieButton, zombiePos)
        screen.blit(leftButton, leftPos)
        screen.blit(rightButton, rightPos)
        screen.blit(charPic, charPos)
        screen.blit(storyPic, storyPos)
        screen.blit(infoPic, infoPos)

        # 更新画面
        pygame.display.update()
        # 帧率
        clock.tick(40)
        if breakflag == 1:
            break
Exemple #25
0
def voyager2_recreated(ephem):
    earth = ephem.get_body('EARTH')
    jupiter = ephem.get_body('JUPITER')
    saturn = ephem.get_body('SATURN')
    uranus = ephem.get_body('URANUS')
    neptune = ephem.get_body('NEPTUNE')
    sun = ephem.get_body('SUN')

    def convert(dateObj):
        return sp.str2et(dateObj.strftime("%Y %b %d %H:%M:%S").lower())

    voyst2 = lambda t: sp.spkezr('VOYAGER 2', convert(t), 'J2000', 'LT+S',
                                 'SOLAR SYSTEM BARYCENTER')[0]

    D = 10
    tfE = datetime(1977, 8, 21, 16, 40)
    t0J = datetime(1979, 5, 6, 15, 33)
    tfJ = datetime(1979, 9, 12, 22, 19)
    t0S = datetime(1981, 6, 29, 17, 20)
    tfS = datetime(1981, 10, 22, 18, 26)
    t0U = datetime(1985, 12, 15, 5, 6)
    tfU = datetime(1986, 3, 6, 13, 52)
    t0N = datetime(1989, 6, 26, 12, 6)
    tfN = datetime(1989, 10, 24, 7, 6)

    timesE2J = []
    trajE2J = []
    for i in range(D):
        tE2J = (t0J - tfE) * i / D + tfE
        state = voyst2(tE2J)
        timesE2J.append(tE2J)
        trajE2J.append(trajectory(sun, tE2J, state, tE2J + (t0J - tfE) / D))

    #swingby at jupiter
    st0J = voyst2(t0J) - jupiter.state(t0J)
    stfJ = voyst2(tfJ) - jupiter.state(tfJ)
    GMJ = jupiter.const('GM', 1)[0]

    def dVJ(th1, th2):
        enpt = entrance(Rsoi['JUPITER'], st0J[3:], th1, th2)
        exst = swingby(Rsoi['JUPITER'], np.concatenate((enpt, st0J[3:])), GMJ)
        return np.linalg.norm(stfJ[3:] - exst[3:])

    th1J, th2J = decaying_descent(dVJ, [[-np.pi, np.pi], [-np.pi, np.pi]],
                                  [0.2, 0.2], [np.pi / 20, 0],
                                  None,
                                  iters=5,
                                  decay_factor=5)
    enptJ = entrance(Rsoi['JUPITER'], st0J[3:], th1J, th2J)
    sIntoJ = np.concatenate((enptJ, st0J[3:]))
    trajByJ = trajectory(jupiter, t0J, sIntoJ, tfJ)

    #jupiter to saturn
    timesJ2S = []
    trajJ2S = []
    for i in range(D):
        tJ2S = (t0S - tfJ) * i / D + tfJ
        state = voyst2(tJ2S)
        timesJ2S.append(tJ2S)
        trajJ2S.append(trajectory(sun, tJ2S, state, tJ2S + (t0S - tfJ) / D))

    #swingby at saturn
    st0S = voyst2(t0S) - saturn.state(t0S)
    stfS = voyst2(tfS) - saturn.state(tfS)
    GMS = saturn.const('GM', 1)[0]

    def dVS(th1, th2):
        enpt = entrance(Rsoi['SATURN'], st0S[3:], th1, th2)
        exst = swingby(Rsoi['SATURN'], np.concatenate((enpt, st0S[3:])), GMS)
        return np.linalg.norm(stfS[3:] - exst[3:])

    th1S, th2S = decaying_descent(dVS, [[-np.pi, np.pi], [-np.pi, np.pi]],
                                  [0.2, 0.2], [np.pi / 20, 0],
                                  None,
                                  iters=5,
                                  decay_factor=5)
    enptS = entrance(Rsoi['SATURN'], st0S[3:], th1S, th2S)
    sIntoS = np.concatenate((enptS, st0S[3:]))
    trajByS = trajectory(saturn, t0S, sIntoS, tfS)

    #saturn to uranus
    timesS2U = []
    trajS2U = []
    for i in range(D):
        tS2U = (t0U - tfS) * i / D + tfS
        state = voyst2(tS2U)
        timesS2U.append(tS2U)
        trajS2U.append(trajectory(sun, tS2U, state, tS2U + (t0U - tfS) / D))

    #swingby at uranus
    st0U = voyst2(t0U) - uranus.state(t0U)
    stfU = voyst2(tfU) - uranus.state(tfU)
    GMU = uranus.const('GM', 1)[0]

    def dVU(th1, th2):
        enpt = entrance(Rsoi['URANUS'], st0U[3:], th1, th2)
        exst = swingby(Rsoi['URANUS'], np.concatenate((enpt, st0U[3:])), GMU)
        return np.linalg.norm(stfU[3:] - exst[3:])

    th1U, th2U = decaying_descent(dVU, [[-np.pi, np.pi], [-np.pi, np.pi]],
                                  [0.2, 0.2], [np.pi / 20, 0],
                                  None,
                                  iters=5,
                                  decay_factor=5)
    enptU = entrance(Rsoi['URANUS'], st0U[3:], th1U, th2U)
    sIntoU = np.concatenate((enptU, st0U[3:]))
    trajByU = trajectory(uranus, t0U, sIntoU, tfU)

    #uranus to neptune
    timesU2N = []
    trajU2N = []
    for i in range(D):
        tU2N = (t0N - tfU) * i / D + tfU
        state = voyst2(tU2N)
        timesU2N.append(tU2N)
        trajU2N.append(trajectory(sun, tU2N, state, tU2N + (t0N - tfU) / D))

    #swingby at neptune
    st0N = voyst2(t0N) - neptune.state(t0N)
    stfN = voyst2(tfN) - neptune.state(tfN)
    GMN = neptune.const('GM', 1)[0]

    def dVN(th1, th2):
        enpt = entrance(Rsoi['NEPTUNE'], st0N[3:], th1, th2)
        exst = swingby(Rsoi['NEPTUNE'], np.concatenate((enpt, st0N[3:])), GMN)
        return np.linalg.norm(stfN[3:] - exst[3:])

    th1N, th2N = decaying_descent(dVN, [[-np.pi, np.pi], [-np.pi, np.pi]],
                                  [0.2, 0.2], [np.pi / 20, 0],
                                  None,
                                  iters=5,
                                  decay_factor=5)
    enptN = entrance(Rsoi['NEPTUNE'], st0N[3:], th1N, th2N)
    sIntoN = np.concatenate((enptN, st0N[3:]))
    trajByN = trajectory(neptune, t0N, sIntoN, tfN)

    #after neptune
    after = timedelta(days=1500)
    trajAftN = trajectory(sun, tfN, voyst2(tfN), tfN + after)

    entranceTimes = []
    entranceTimes.extend(timesE2J)
    entranceTimes.append(t0J)
    entranceTimes.extend(timesJ2S)
    entranceTimes.append(t0S)
    entranceTimes.extend(timesS2U)
    entranceTimes.append(t0U)
    entranceTimes.extend(timesU2N)
    entranceTimes.append(t0N)
    entranceTimes.append(tfN)
    trajs = []
    trajs.extend(trajE2J)
    trajs.append(trajByJ)
    trajs.extend(trajJ2S)
    trajs.append(trajByS)
    trajs.extend(trajS2U)
    trajs.append(trajByU)
    trajs.extend(trajU2N)
    trajs.append(trajByN)
    trajs.append(trajAftN)

    voyager = path(launchTime=tfE,
                   deltaV='Recreated',
                   duration=tfN - tfE + after,
                   entranceTimes=entranceTimes,
                   trajectories=trajs)
    return voyager
Exemple #26
0
def costAreaDraw(x1, y1, x2, y2):
    costFrameFile = path('image/costFrameBg.jpg')
    costFrame_init = pygame.image.load(costFrameFile).convert()
    costFrameImage = pygame.transform.scale(costFrame_init, (x2 - x1, y2 - y1))
    screen.blit(costFrameImage, (x1, y1))
Exemple #27
0
def voyager2_original(ephem):
    earth = ephem.get_body('EARTH')
    jupiter = ephem.get_body('JUPITER')
    saturn = ephem.get_body('SATURN')
    uranus = ephem.get_body('URANUS')
    neptune = ephem.get_body('NEPTUNE')
    sun = ephem.get_body('SUN')

    def convert(dateObj):
        return sp.str2et(dateObj.strftime("%Y %b %d %H:%M:%S").lower())

    voyst2 = lambda t: sp.spkezr('VOYAGER 2', convert(t), 'J2000', 'LT+S',
                                 'SOLAR SYSTEM BARYCENTER')[0]

    D = 10
    tfE = datetime(1977, 8, 21, 16, 40)
    t0J = datetime(1979, 5, 6, 15, 33)
    tfJ = datetime(1979, 9, 12, 22, 19)
    t0S = datetime(1981, 6, 29, 17, 20)
    tfS = datetime(1981, 10, 22, 18, 26)
    t0U = datetime(1985, 12, 15, 5, 6)
    tfU = datetime(1986, 3, 6, 13, 52)
    t0N = datetime(1989, 6, 26, 12, 6)
    tfN = datetime(1989, 10, 24, 7, 6)

    timesE2J = []
    trajE2J = []
    for i in range(D):
        tE2J = (t0J - tfE) * i / D + tfE
        state = voyst2(tE2J)
        timesE2J.append(tE2J)
        trajE2J.append(trajectory(sun, tE2J, state, tE2J + (t0J - tfE) / D))

    #swingby at jupiter
    trajByJ = trajectory(jupiter, t0J, voyst2(t0J) - jupiter.state(t0J), tfJ)

    #jupiter to saturn
    timesJ2S = []
    trajJ2S = []
    for i in range(D):
        tJ2S = (t0S - tfJ) * i / D + tfJ
        state = voyst2(tJ2S)
        timesJ2S.append(tJ2S)
        trajJ2S.append(trajectory(sun, tJ2S, state, tJ2S + (t0S - tfJ) / D))

    #swingby at saturn
    trajByS = trajectory(saturn, t0S, voyst2(t0S) - saturn.state(t0S), tfS)

    #saturn to uranus
    timesS2U = []
    trajS2U = []
    for i in range(D):
        tS2U = (t0U - tfS) * i / D + tfS
        state = voyst2(tS2U)
        timesS2U.append(tS2U)
        trajS2U.append(trajectory(sun, tS2U, state, tS2U + (t0U - tfS) / D))

    #swingby at uranus
    trajByU = trajectory(uranus, t0U, voyst2(t0U) - uranus.state(t0U), tfU)

    #uranus to neptune
    timesU2N = []
    trajU2N = []
    for i in range(D):
        tU2N = (t0N - tfU) * i / D + tfU
        state = voyst2(tU2N)
        timesU2N.append(tU2N)
        trajU2N.append(trajectory(sun, tU2N, state, tU2N + (t0N - tfU) / D))

    #swingby at neptune
    trajByN = trajectory(neptune, t0N, voyst2(t0N) - neptune.state(t0N), tfN)

    #after neptune
    after = timedelta(days=1500)
    trajAftN = trajectory(sun, tfN, voyst2(tfN), tfN + after)

    entranceTimes = []
    entranceTimes.extend(timesE2J)
    entranceTimes.append(t0J)
    entranceTimes.extend(timesJ2S)
    entranceTimes.append(t0S)
    entranceTimes.extend(timesS2U)
    entranceTimes.append(t0U)
    entranceTimes.extend(timesU2N)
    entranceTimes.append(t0N)
    entranceTimes.append(tfN)
    trajs = []
    trajs.extend(trajE2J)
    trajs.append(trajByJ)
    trajs.extend(trajJ2S)
    trajs.append(trajByS)
    trajs.extend(trajS2U)
    trajs.append(trajByU)
    trajs.extend(trajU2N)
    trajs.append(trajByN)
    trajs.append(trajAftN)

    voyager = path(launchTime=tfE,
                   deltaV='Original',
                   duration=tfN - tfE + after,
                   entranceTimes=entranceTimes,
                   trajectories=trajs)
    return voyager
Exemple #28
0
def toolAreaDraw(x1, y1, x2, y2, toolsList):
    toolBgFile = path('image/toolBg.jpg')
    toolBg_init = pygame.image.load(toolBgFile).convert()
    toolBg = pygame.transform.scale(toolBg_init, (x2 - x1, y2 - y1))
    screen.blit(toolBg, (x1, y1))
def mapDisplayInitial(map, screen):
    #图像的名称转换,包含6种不同的状态
    homeImageFile = path("res/mapblock/home.png")
    bornPointImageFile = path("res/mapblock/born.png")
    zeroImageFile = path("res/mapblock/4.jpg")
    oneImageFile = path("res/mapblock/1.jpg")
    twoImageFile = path("res/mapblock/3.jpg")
    threeImageFile = path("res/mapblock/2.jpg")
    sixImageFile = path("res/mapblock/6.png")
    arrowImageFile = [
        path("res/mapblock/arrow0.png"),
        path("res/mapblock/arrow1.png"),
        path("res/mapblock/arrow2.png"),
        path("res/mapblock/arrow3.png")
    ]

    #加载并转换图像
    homeImage_init = pygame.image.load(homeImageFile).convert_alpha()
    bornPointImage_init = pygame.image.load(bornPointImageFile).convert_alpha()
    zeroImage_init = pygame.image.load(zeroImageFile).convert()
    oneImage_init = pygame.image.load(oneImageFile).convert()
    twoImage_init = pygame.image.load(twoImageFile).convert()
    threeImage_init = pygame.image.load(threeImageFile).convert()
    sixImage_init = pygame.image.load(sixImageFile).convert()
    arrowImage_init = []
    for image in arrowImageFile:
        arrowImage_init.append(pygame.image.load(image).convert_alpha())
    #backGround = pygame.image.load(backGroundFile).convert()

    #地图中用于填充格子的图像的大小
    imageSize = map.blockSize

    #图像放缩,若图像大小给定,则此部分可以省去
    homeImage = pygame.transform.scale(homeImage_init, (imageSize, imageSize))
    bornPointImage = pygame.transform.scale(bornPointImage_init,
                                            (imageSize, imageSize))
    zeroImage = pygame.transform.scale(zeroImage_init, (imageSize, imageSize))
    oneImage = pygame.transform.scale(oneImage_init, (imageSize, imageSize))
    twoImage = pygame.transform.scale(twoImage_init, (imageSize, imageSize))
    threeImage = pygame.transform.scale(threeImage_init,
                                        (imageSize, imageSize))
    sixImage = pygame.transform.scale(sixImage_init, (imageSize, imageSize))
    arrowImage = []
    for image_init in arrowImage_init:
        arrowImage.append(
            pygame.transform.scale(image_init, (imageSize, imageSize)))
    #backGround = pygame.transform.scale(backGround,(750,500))
    mapImage = (homeImage, bornPointImage, zeroImage, oneImage, twoImage,
                threeImage, sixImage, arrowImage)
    return mapImage