Exemplo n.º 1
0
def get_relations(vocative_function,sentences=joined_family_sentences):
    relations = []
    found=[]
    for sentence in sentences:
        #Find target of sentence
        speaker = re.search("(?<=[\.?!] )([\w\s]+)(?= said to )",sentence)
        target = re.search("(?<=said to )([\w\s]+)(?=\.)",sentence)
        
        if speaker and target:
            speaker = speaker.group(0)
            target = target.group(0)
            found = found  + patterns.pattern_recognizer(sentence,speaker,target,family_words)
            #rel = pattern_recognizer(sentence,speaker,target)
            #if rel:
                #relations.append(rel)
            #else:
            characters = [classes.Character(speaker),classes.Character(target)]
            #Find Vocative
                    
            rel = vocative_function(sentence)
    
            if rel:
                characters[0].set_relation(characters[1],rel)
                relations.append([characters[1].name , characters[0].name , rel,sentence])
    return relations
Exemplo n.º 2
0
 def startup_end(self):
     name = self.levelgain['Character Name?']
     cl = self.levelgain['Class to gain a level in?']
     path = 'character/' + h.clean(name) + '.character'
     if (os.path.exists(iface.JSONInterface.OBJECTSPATH + path)):
         self.record = iface.JSONInterface(path)
     else:
         gui.ErrorMessage('A character with that name was not found.')
     clpath = 'class/' + h.clean(cl) + '.class'
     if (not os.path.exists(iface.JSONInterface.OBJECTSPATH + path)):
         gui.ErrorMessage('A class with that name was not found.')
     self.character = c.Character(self.record)
     pattern = r'\s*([a-zA-Z\']+)\s*(\(([a-zA-Z\'\s]+)\))?'
     desc_ = re.match(pattern, cl).groups()
     desc = [str(item) for item in desc_ if item is not None]
     # desc should be a class and possibly a subclass name
     (rec, level) = self.character.classes.level_up(*desc)
     self.core = FeaturesAtLevel(self.f, rec.record, level)
     # Set new number of hit dice
     size = rec.hit_dice
     hdpath = '/HP/HD/' + size + '/maxnumber'
     hdn = self.character.get(hdpath)
     self.character.set(hdpath, hdn + 1)
     # Set new number of hit points
     conmod = h.modifier(self.character.get('/abilities/Constitution'))
     if (self.levelgain['Average or roll for HP?'] == 'average'):
         gain = r.roll(size, 'average') + .5
     elif (self.levelgain['Average or roll for HP?'] == 'roll'):
         gain = r.roll(size)
     current = self.character.get('/HP/max')
     self.character.set('/HP/max', current + gain + conmod)
     self.draw_static()
     self.container.deiconify()
Exemplo n.º 3
0
 def startup_end(self):
     name = self.charactername['Character Name?']
     path = 'character/' + name + '.character'
     if (os.path.exists(iface.JSONInterface.OBJECTSPATH + path)):
         self.record = iface.JSONInterface(path)
     else:
         raise FileNotFoundError
     self.character = c.Character(self.record)
     self.core = FeaturesDisplay(self.f, self.character)
     self.draw_static()
     self.container.deiconify()
Exemplo n.º 4
0
 def startup_end(self):
     name = self.charactername['Character Name?']
     path = 'character/' + h.clean(name) + '.character'
     if (os.path.exists(iface.JSONInterface.OBJECTSPATH + path)):
         self.record = iface.JSONInterface(path)
     else:
         gui.ErrorMessage('A character with that name was not found.')
     self.character = c.Character(self.record)
     self.core = ConditionsDisplay(self.f, self.character)
     self.draw_static()
     self.container.deiconify()
Exemplo n.º 5
0
 def startup_end(self):
     name = self.charactername['Character Name?']
     path = iface.JSONInterface.OBJECTSPATH + 'character/' + name + '.character'
     if (os.path.exists(path)):
         jf = iface.JSONInterface('character/' + name + '.character')
     else:
         raise FileNotFoundError
     character = c.Character(jf)
     self.core = Attacks(self.f, character)
     self.draw_static()
     self.container.deiconify()
Exemplo n.º 6
0
def main():
    """ Init everything, look for event and quit at the end. """

    file = classes.File('maze')
    file.read()

    loot = classes.Loot()
    loot.random_list()

    character = classes.Character(loot)

    maze = classes.Maze(character, loot)

    cartridge = classes.Cartridge(character)

    pygame.key.set_repeat(150, 200)

    loop = 1
    while loop:
        for event in pygame.event.get():
            # Look for close event
            if event.type == pygame.QUIT:
                loop = 0
            # Look for keyboard event
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    character.move('up')
                if event.key == pygame.K_DOWN:
                    character.move('down')
                if event.key == pygame.K_RIGHT:
                    character.move('right')
                if event.key == pygame.K_LEFT:
                    character.move('left')

            # Create the base maze
            maze.create()
            # Add item, character and guard to the maze
            maze.additional()
            # Check if inventory item += 1
            character.item()
            # Display text
            cartridge.display()

            pygame.display.flip()

            # If character is at the end, pause program and quit.
            if character.x == file.GUARD_X and character.y == file.GUARD_Y:
                pygame.time.wait(2000)
                loop = 0
Exemplo n.º 7
0
 def begin_end(self):
     name = self.charactername['Character name?']
     filename = 'character/{}.character'.format(h.clean(name))
     self.record = iface.JSONInterface(filename)
     self.character = c.Character(self.record)
     self.numbers = NumberDisplay(self.f, self.character)
     self.handler = SpellSection(self.f, self.record, self.character,
                                 self.numbers, self.effects)
     self.prepare = tk.Button(self.excessblock,
                              text='Prepare a spell',
                              command=self.detail.prepare_start)
     self.unprepare = tk.Button(self.excessblock,
                                text='Unprepare a spell',
                                command=self.detail.unprepare_start)
     self.container.deiconify()
     self.draw_static()
Exemplo n.º 8
0
 def startup_end(self):
     name = self.charactername['Character Name?']
     path = 'character/' + h.clean(name) + '.character'
     if (os.path.exists(iface.JSONInterface.OBJECTSPATH + path)):
         self.record = iface.JSONInterface(path)
     else:
         gui.ErrorMessage('A character with that name was not found.')
         print(iface.JSONInterface.OBJECTSPATH + path)
         raise FileNotFoundError
     self.character = c.Character(self.record)
     self.container.title(str(self.character))
     self.settingmenu = Settings(self.container, self.character)
     self.container.config(menu=self.settingmenu.core)
     ######
     # Front page
     self.info = Information(self.frontpage, self.character)
     self.HP = hp.module(self.frontpage, self.character)
     self.roller = dice.module(self.frontpage, self.character)
     self.abils = abilities.module(self.frontpage, self.character)
     ######
     # Attacks
     self.attacktop = tk.Frame(self.attackpage)
     self.attacks = attacks.module(self.attacktop, self.character)
     self.conditions = conditions.module(self.attacktop, self.character)
     self.equipment = equipment.module(self.attackpage, self.character)
     ######
     # Features
     self.features = features.module(self.featurespage, self.character)
     self.resources = resources.module(self.featurespage, self.character)
     self.featureroller = dice.module(self.featurespage, self.character)
     ######
     # Inventory
     self.inventory = inventory.module(self.inventorypage, self.character)
     ######
     # Spells
     self.spells = spells.module(self.spellspage, self.character)
     ######
     self.container.deiconify()
     self.draw_static()
Exemplo n.º 9
0
    def load_characters(self, data, nicknames):
        unique_characters = list(
            set(np.concatenate([data['character1'], data['character2']])))
        character_dict = []

        for character in unique_characters:
            alias_l = list(
                nicknames[nicknames['character'] == character].values[:, 1])
            character_e = classes.Character(character, alias_l)
            character_dict.append((character, character_e))
            for alias in alias_l:
                character_dict.append((alias, character_e))
        character_dict = dict(character_dict)

        #Insert relations in character objects
        for row in data.values:
            char1 = character_dict[row[0]]
            char2 = character_dict[row[1]]
            rel = row[2]
            char1.set_relation(char2, rel)
            character_dict[row[0]] = char1

        return character_dict
Exemplo n.º 10
0
def main():
    pygame.init()
    screen = pygame.display.set_mode(disp_SIZE)

    clock = pygame.time.Clock()

    # background
    bg = fc.backGround("Resources/images/cut/bg.png", (disp_SIZE), (0, 0))
    screen.fill((255, 255, 255))
    screen.blit(bg.image, bg.rect)

    # instructions
    myfont = pygame.font.SysFont("Arial", 12)

    # sprite size
    swidth = 43
    sheight = 46

    # default spawn position
    dx = display_width / 2
    dy = 100

    # Declaring characters
    cs = fc.Character("Crystal Snail", (dx + 80, 30), (0, 128, 255), "left")
    mm = fc.Character("Megaman_dummy", (dx - 80, dy), (50, 96, 166), "left")

    # Declaring states for Crystal Snail
    alist = cs.getStates()

    cs.addState("Stand", True, "Resources/images/cut/stand.png",
                (swidth, sheight))
    sprites = cs.findState("Stand").getSprites()
    for i in range(2):
        sprites[i].setMFT(6)

    cs.addState("Intro", False, "Resources/images/cut/intro.png",
                (swidth, sheight), cs.findState("Stand"))
    sprites = cs.findState("Intro").getSprites()
    for i in range(11):
        sprites[i].setMFT(5)
    sprites[11].setMFT(18)

    cs.addState("intro_bounce", False, "Resources/images/cut/intro_bounce.png",
                (40, 37))
    sprites = cs.findState("intro_bounce").getSprites()
    l = len(sprites)
    print(f"the Roll state have {l} frames")
    sprites[0].setMFT(1)

    cs.addState("intro_roll2", False, "Resources/images/cut/roll_straight.png",
                (swidth, 43), cs.findState("intro_bounce"))
    sprites = cs.findState("intro_roll2").getSprites()
    l = len(sprites)
    print(f"the Roll state have {l} frames")
    for i in range(30):
        sprites[i].setMFT(1)
    for i in range(30, 40):
        sprites[i].setMFT(2)

    cs.addState("intro_roll1", False, "Resources/images/cut/roll_straight.png",
                (swidth, 43), cs.findState("intro_roll2"))
    sprites = cs.findState("intro_roll1").getSprites()
    cs.updateState(cs.findState("intro_roll1"))
    l = len(sprites)
    print(f"the Roll state have {l} frames")
    for i in range(40):
        sprites[i].setMFT(1)

    cs.addState("Take_cover", False, "Resources/images/cut/take_cover.png",
                (swidth, sheight))
    sprites = cs.findState("Take_cover").getSprites()
    for i in range(4):
        sprites[i].setMFT(2)

    cs.addState("Trans_open_cover", False,
                "Resources/images/cut/open_cover.png", (swidth, sheight),
                cs.findState("Stand"))
    sprites = cs.findState("Trans_open_cover").getSprites()
    for i in range(4):
        sprites[i].setMFT(2)

    cs.addState("Roll", True, "Resources/images/cut/roll_straight.png",
                (swidth, 43))
    sprites = cs.findState("Roll").getSprites()
    l = len(sprites)
    print(f"the Roll state have {l} frames")
    for i in range(40):
        sprites[i].setMFT(1)

    cs.addState("Launch_upwards", False, "Resources/images/cut/launch.png",
                (swidth, 76), cs.findState("Roll"))
    sprites = cs.findState("Launch_upwards").getSprites()
    l = len(sprites)
    print(f"the Launch_upwards state have {l} frames")
    for i in range(3):
        sprites[i].setMFT(10)

    cs.addState("Throw", False, "Resources/images/cut/throw.png",
                (42, sheight), cs.findState("Stand"))
    sprites = cs.findState("Throw").getSprites()
    sprites[0].setMFT(12)

    cs.addState("Shoot_projectile", False,
                "Resources/images/cut/shooting_projectile_2.png",
                (swidth, sheight), cs.findState("Throw"))
    sprites = cs.findState("Shoot_projectile").getSprites()
    l = len(sprites)
    print(f"the Shoot_projectile state have {l} frames")
    for i in range(3):
        sprites[i].setMFT(12)

    cs.addState("Landing", False, "Resources/images/cut/landing.png", (44, 48))
    sprites = cs.findState("Landing").getSprites()
    l = len(sprites)
    print(f"the Landing state have {l} frames")
    for i in range(4):
        sprites[i].setMFT(3)

    cs.addState("Reroll_Charge_antennae", False,
                "Resources/images/cut/reroll_antennae.png", (44, 52),
                cs.findState("Roll"))
    sprites = cs.findState("Reroll_Charge_antennae").getSprites()
    l = len(sprites)
    print(f"the Charge_antennae state have {l} frames")
    for i in range(6):
        sprites[i].setMFT(2)

    cs.addState("Charge_antennae", False,
                "Resources/images/cut/charge_antennae.png", (44, 52),
                cs.findState("Reroll_Charge_antennae"))
    sprites = cs.findState("Charge_antennae").getSprites()
    l = len(sprites)
    print(f"the Charge_antennae state have {l} frames")
    for i in range(6):
        sprites[i].setMFT(3)

    cs.addState("Launch_towards_target", False,
                "Resources/images/cut/launch.png", (swidth, 76),
                cs.findState("Roll"))
    sprites = cs.findState("Launch_towards_target").getSprites()
    l = len(sprites)
    print(f"The Launch_towards_target state have {l} frames")
    for i in range(3):
        sprites[i].setMFT(10)

    cs.addState("Staggered", True, "Resources/images/cut/staggered.png",
                (swidth, 47))
    sprites = cs.findState("Staggered").getSprites()
    sprites[0].setMFT(12)

    for item in alist:
        print(item.getName())

    # Declaring states for megaman dummy
    mm.addState("Run", True, "Resources/images/cut/megaman/cut_run.png",
                (34, 35))
    sprites = mm.findState("Run").getSprites()
    l = len(sprites)
    print(f"The Run state have {l} frames")
    for i in range(11):
        sprites[i].setMFT(3)

    mm.addState("Intro", False, "Resources/images/cut/megaman/cut_intro.png",
                (30, 48), mm.findState("Run"))
    sprites = mm.findState("Intro").getSprites()
    l = len(sprites)
    print(f"The Run state have {l} frames")
    for i in range(12):
        sprites[i].setMFT(6)
    sprites[12].setMFT(18)

    mm.addState("Die", True, "Resources/images/cut/megaman/cut_hitordie.png",
                (26, 36))
    sprites = mm.findState("Die").getSprites()
    for i in range(2):
        sprites[i].setMFT(12)

    mm.addState("Dead", False, "Resources/images/cut/megaman/cut_hitordie.png",
                (26, 36))
    sprites = mm.findState("Die").getSprites()
    for i in range(2):
        sprites[i].setMFT(1)

    mm.addState("Frozen", True,
                "Resources/images/cut/megaman/cut_hitordie.png", (26, 36))
    sprites = mm.findState("Frozen").getSprites()
    for i in range(2):
        sprites[i].setMFT(2)

    # Declaring Floors & Walls
    # bot = 0-255, 191
    # left = 16, 0-223
    # top = 0-255, 14
    # right = 241, 0-223
    floor = fc.obstruction(0, display_height - (44), display_width,
                           display_height)
    left_wall = fc.obstruction(0, 0, 22, display_height)
    right_wall = fc.obstruction(display_width - 21, 0, display_width,
                                display_height)
    ceiling = fc.obstruction(0, 0, display_width, 21)

    # Declaring crystal projectile with default attributes
    # 45 deg
    projectile1 = fc.projectile(0, 0, 16, 16,
                                "Resources/images/cut/projectiles.png",
                                (0, 128, 255))
    sprites = projectile1.getSprites()
    print(len(sprites))
    for i in range(2):
        sprites[i].setMFT(6)

    # 60 deg
    projectile2 = fc.projectile(0, 0, 16, 16,
                                "Resources/images/cut/projectiles.png",
                                (0, 128, 255))
    sprites = projectile2.getSprites()
    print(len(sprites))
    for i in range(2):
        sprites[i].setMFT(6)

    # horizontal
    projectile3 = fc.projectile(0, 0, 16, 16,
                                "Resources/images/cut/projectiles.png",
                                (0, 128, 255))
    sprites = projectile3.getSprites()
    print(len(sprites))
    for i in range(2):
        sprites[i].setMFT(6)

    # For continuous movement
    move_right = move_left = False
    gravity = True
    mmgravity = True

    # For drawing projectile
    throwable1 = False
    throwable2 = False
    throwable3 = False
    ctr = 0

    # Die animation loop counter for MM
    dctr = 0

    # Stagger animation loop counter for CS
    sctr = 0

    # Bounce counter for intro bounce for CS
    bctr = 0
    bounce = False

    # Freeze counter for MM
    fctr = 0

    # Slow down time bool
    slowmo = False
    smctr = 0

    # Main loop
    while True:
        # Event triggers
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_1:
                    cs.updateState(cs.findState("Intro"))
                elif event.key == pygame.K_RIGHT:
                    cs.setFacing("right")
                elif event.key == pygame.K_LEFT:
                    cs.setFacing("left")
                elif event.key == pygame.K_UP:
                    pass
                elif event.key == pygame.K_DOWN:
                    if (cs.getState().getName() == "Take_cover"):
                        cs_curr_sprite.resetIndex()
                        cs.updateState(cs.findState("Trans_open_cover"))
                    else:
                        if cs.getState().getName() == "Stand":
                            cs.updateState(cs.findState("Take_cover"))
                elif event.key == pygame.K_r:
                    if cs.getState().getName() == "Take_cover":
                        cs.updateState(cs.findState("Launch_upwards"))
                elif event.key == pygame.K_z:
                    cs.move((100, 100))
                elif event.key == pygame.K_l:
                    if cs.getState().getName() == "Roll":
                        cs.findState("Take_cover").resetIndex()
                        cs.findState("Landing").resetIndex()
                        x, y = cs.getLoc()
                        cs.updateState(cs.findState("Landing"))
                        cs.move((x, y))
                elif event.key == pygame.K_c:
                    if cs.getState().getName() == "Roll":
                        cs.findState("Take_cover").resetIndex()
                        cs.findState("Charge_antennae").resetIndex()
                        cs.updateState(cs.findState("Charge_antennae"))
                elif event.key == pygame.K_s:
                    if cs.getState().getName() == "Stand":
                        cs.findState("Shoot_projectile").resetIndex()
                        x, y, w, h = cs.getState().getRect()
                        a = math.floor(x + (w / 2))
                        b = y
                        # projectile1.setSpawn((a, b))
                        # projectile2.setSpawn((a, b))
                        # projectile3.setSpawn((a, b))
                        projectile1.move((a, b))
                        projectile2.move((a, b))
                        projectile3.move((a, b))
                        cs.updateState(cs.findState("Shoot_projectile"))
                elif event.key == pygame.K_d:
                    if cs.getState().getName() == "Launch_upwards":
                        pass
                    else:
                        mm.updateState(mm.findState("Dead"))

            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_RIGHT:
                    pass
                elif event.key == pygame.K_LEFT:
                    pass
                elif event.key == pygame.K_UP:
                    pass
                elif event.key == pygame.K_DOWN:
                    pass

            # event.button can equal several integer values:
            # 1 - left click
            # 2 - middle click
            # 3 - right click
            # 4 - scroll up
            # 5 - scroll down
            elif event.type == pygame.MOUSEBUTTONUP and event.button == 1:
                pos = pygame.mouse.get_pos()
                if cs.getState().getName() == "Roll":
                    a, b, c, d = cs.getState().getRect()

                    # line1 mengarah ke kanan
                    line1 = (a + (c / 2), b + (d / 2)), (a + c, b + (d / 2))
                    line2 = (a + (c / 2), b + (d / 2)), pos
                    # print(ang(line1, line2))
                    angle = calcAngle(line1, line2)

                    cs.updateState(cs.findState("Launch_towards_target"))

        # Display Text
        disp_txt1 = ""
        disp_txt2 = ""
        disp_txt3 = ""
        disp_txt4 = ""

        # Left and right movement, will be deleted
        cs_rect = cs.getState().getRect()
        if (move_right):
            rw_rect = right_wall.getRect()
            if (col_check(cs_rect, rw_rect)):
                cs.setVel((0, 0))
            else:
                cs.setVel((5, 0))
        elif (move_left):
            lw_rect = left_wall.getRect()
            if (col_check(cs_rect, lw_rect)):
                cs.setVel((0, 0))
            else:
                cs.setVel((-5, 0))

        # Sprite grouping
        # Crystal Snail
        cs_curr_sprite = cs.getState()
        cs_group = pygame.sprite.Group(cs_curr_sprite)

        # Megaman dummy
        mm_curr_sprite = mm.getState()
        if mm_curr_sprite == None:
            pass
        else:
            mm_group = pygame.sprite.Group(mm_curr_sprite)

        # Obstructions (walls, floor, and ceiling)
        obs_group = pygame.sprite.Group(floor, left_wall, right_wall, ceiling)

        # Projectile group
        pr_group1 = pygame.sprite.Group(projectile1)
        pr_group2 = pygame.sprite.Group(projectile2)
        pr_group3 = pygame.sprite.Group(projectile3)

        # State loop
        if (cs.getState().getLoop()):
            cs_curr_sprite.loop()
        elif (not cs.getState().getLoop()):
            done = cs_curr_sprite.play()
            if (done):
                nextState = cs.getState().getnextState()
                if nextState == None:
                    pass
                else:
                    cs_curr_sprite.resetIndex()
                    cs.updateState(nextState)

        if mm_curr_sprite == None:
            pass
        else:
            if (mm.getState().getLoop()):
                mm_curr_sprite.loop()
            elif (not mm.getState().getLoop()):
                done = mm_curr_sprite.play()
                if (done):
                    nextState = mm.getState().getnextState()
                    if nextState == None:
                        pass
                    else:
                        mm_curr_sprite.resetIndex()
                        mm.updateState(nextState)

        projectile1.loop()
        projectile2.loop()
        projectile3.loop()

        # Special event trigger for Crystal Snail
        # Intro
        if cs.getState().getName() == "intro_roll1":
            gravity = True
            x, y, w, h = cs.getState().getRect()
            if y >= 170:
                gravity = False
                cs.setVel((0, 0))

        if cs.getState().getName() == "intro_roll2":
            gravity = True
            x, y, w, h = cs.getState().getRect()
            if y >= 170:
                gravity = False
                cs.setVel((0, 0))

        if cs.getState().getName() == "intro_bounce":
            gravity = True
            if bctr >= 60:
                cs.updateState(cs.findState("Intro"))
                x, y, w, h = cs_rect
                cs.move((x, y - 11))

            if bctr == 15:
                bounce = True
            elif bctr == 25:
                bounce = False
            elif bctr == 35:
                bounce = True
            elif bctr == 40:
                bounce = False
            elif bctr == 45:
                bounce = True
            elif bctr == 48:
                bounce = False

            bctr += 1

        if cs.getState().getName() == "Intro":
            bctr = 0  # reset bounce counter
            gravity = True

        # Stand
        if cs.getState().getName() == "Stand":
            gravity = False
            ctr = 0  # reset shoot projectile counter
            sctr = 0  # reset staggered loop counter
            disp_txt1 = "Press 'ARROW DOWN' to Take Cover"
            disp_txt2 = "Press 'S' to Shoot Crystal"
            disp_txt4 = "Press 'D' to Summon Dummy"

        # Take cover
        if cs.getState().getName() == "Take_cover":
            disp_txt1 = "Press 'ARROW DOWN' to Open Cover"
            disp_txt2 = "Press 'R' to Launch"

        # Launch upwards
        nm = cs.getState().getName()
        holder_obs = floor
        x0, y0, xy0, xy0 = floor.getRect()
        if (nm == "Launch_upwards"):
            tmp_floor = fc.obstruction(0, 0, 0, 0)
            floor = tmp_floor
            gravity = False
            x1, y1 = cs.getLoc()
            if y1 <= (y0 - 250):
                cs.setVel((0, 0))
            else:
                cs.setVel((0, -5))

        # Launch towards target
        if cs.getState().getName() == "Launch_towards_target":
            gravity = False
            cs.getState().rotateImg(angle - 90)  # adjustments
            x, y = cs.getLoc()  # CS position
            a, b, c, d = cs.getState().getRect()
            # getting the center of sprite
            x = x + c / 2
            y = y + 15
            x = math.floor(x)
            y = math.floor(y)
            x1, y1 = pos  # mouse position
            x1 = math.floor(x1)
            y1 = math.floor(y1)
            if x1 > x and y1 > y:
                cs.setVel((3, 3))
            elif x1 < x and y1 < y:
                cs.setVel((-3, -3))
            elif x1 > x and y1 < y:
                cs.setVel((3, -3))
            elif x1 < x and y1 > y:
                cs.setVel((-3, 3))
            elif y1 > y and x1 == x:
                cs.setVel((0, 3))
            elif y1 < y and x1 == x:
                cs.setVel((0, -3))
            elif x1 > x and y1 == y:
                cs.setVel((3, 0))
            elif x1 < x and y1 == y:
                cs.setVel((-3, 0))
            elif x1 == x and y1 == y:
                cs.setVel((0, 0))
                cs.move((x1 - (c / 2), y1 - 15))

        # Roll
        if cs.getState().getName() == "Roll":
            gravity = False
            cs.setVel((0, 0))
            disp_txt1 = "Press 'L' to Land"
            disp_txt2 = "Press 'C' to Charge Antennae"
            disp_txt3 = "Click with mouse to launch to destination"

        # Landing
        if cs.getState().getName() == "Landing":
            cs.findState("Charge_antennae").resetIndex()
            gravity = True
            if col_check(cs_rect, floor_rect):
                vx, vy = cs.getVel()
                cs.setVel((vx, 0))
                cs.updateState(cs.findState("Stand"))

        # Charge antennae
        if cs.getState().getName() == "Charge_antennae":
            gravity = False

        # Slowmo
        if cs.getState().getName() == "Reroll_Charge_antennae":
            gravity = False
            slowmo = True

        if slowmo:
            if smctr >= 300:
                slowmo = False
                smctr = 0
            smctr += 1

        # Shoot projectile
        if throwable1:
            # gravity for projectile 1
            vx, vy = projectile1.getVel()
            vy += 0.5
            projectile1.setVel((vx, vy))
            # projectile 1 hitting obs
            if col_check(projectile1.getRect(), floor.getRect()):
                projectile1.setVel((0, 0))
                throwable1 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile1.move((0, 0))
            elif col_check(projectile1.getRect(), left_wall.getRect()):
                projectile1.setVel((0, 0))
                throwable1 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile1.move((0, 0))
            elif col_check(projectile1.getRect(), right_wall.getRect()):
                projectile1.setVel((0, 0))
                throwable1 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile1.move((0, 0))
            elif col_check(projectile1.getRect(), ceiling.getRect()):
                projectile1.setVel((0, 0))
                throwable1 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile1.move((0, 0))

        if throwable2:
            # gravity for projectile 2
            vx, vy = projectile2.getVel()
            vy += 0.5
            projectile2.setVel((vx, vy))
            # projectile 2 hitting obs
            if col_check(projectile2.getRect(), floor.getRect()):
                projectile2.setVel((0, 0))
                throwable2 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile2.move((0, 0))
            elif col_check(projectile2.getRect(), left_wall.getRect()):
                projectile2.setVel((0, 0))
                throwable2 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile2.move((0, 0))
            elif col_check(projectile2.getRect(), right_wall.getRect()):
                projectile2.setVel((0, 0))
                throwable2 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile2.move((0, 0))
            elif col_check(projectile2.getRect(), ceiling.getRect()):
                projectile2.setVel((0, 0))
                throwable2 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile2.move((0, 0))

        if throwable3:
            # gravity for projectile 3
            vx, vy = projectile3.getVel()
            vy += 0
            projectile3.setVel((vx, vy))
            # projectile 3 hitting obs
            if col_check(projectile3.getRect(), floor.getRect()):
                projectile3.setVel((0, 0))
                throwable3 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile3.move((0, 0))
            elif col_check(projectile3.getRect(), left_wall.getRect()):
                projectile3.setVel((0, 0))
                throwable3 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile3.move((0, 0))
            elif col_check(projectile3.getRect(), right_wall.getRect()):
                projectile3.setVel((0, 0))
                throwable3 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile3.move((0, 0))
            elif col_check(projectile3.getRect(), ceiling.getRect()):
                projectile3.setVel((0, 0))
                throwable3 = False
                # move the projectiles out of the way eventhough not drawn on screen
                projectile3.move((0, 0))

        if cs.getState().getName() == "Shoot_projectile":
            gravity = False

        # Throw transition state for shoot projectile
        if cs.getState().getName() == "Throw":
            gravity = False
            if ctr == 0:
                # projectile 1 = 45 deg
                # projectile 2 = 60 deg
                # projectile 3 = horizontal
                if cs.getFacing() == "right":
                    projectile1.setVel((5, -8))
                    projectile2.setVel((3, -12))
                    projectile3.setVel((6, 0))
                elif cs.getFacing() == "left":
                    projectile1.setVel((-5, -8))
                    projectile2.setVel((-3, -12))
                    projectile3.setVel((-6, 0))

                throwable1 = True
                throwable2 = True
                throwable3 = True
                ctr += 1

        # Staggered
        if cs.getState().getName() == "Staggered":
            gravity = True
            x, y = cs.getLoc()
            cs.move((x, y - 2))
            if sctr >= 24:
                cs.updateState(cs.findState("Stand"))
            sctr += 1

        # Special event trigger for Megaman Dummy
        if mm_curr_sprite == None:
            pass
        else:
            # Intro
            if mm.getState().getName() == "Intro":
                dctr = 0
                mmgravity = True

            # Run
            # the facing of megaman is twisted (left = right and right = left), it's my fault lol
            # because the sprite sheet is facing the other way around
            if mm.getState().getName() == "Run":
                fctr = 0
                speed = 3  # running speed
                if cs.getState().getName() == "Launch_upwards":
                    vx, vy = mm.getVel()
                    mm.setVel((vx, 0))
                    mmgravity = False
                else:
                    mmgravity = True
                if mm.getFacing() == "right":
                    vx, vy = mm.getVel()
                    mm.setVel((-speed, vy))
                elif mm.getFacing() == "left":
                    vx, vy = mm.getVel()
                    mm.setVel((speed, vy))

            # Die
            if mm.getState().getName() == "Die":
                x, y = mm.getLoc()
                mm.move((x, y - 1))
                mmgravity = True
                mm.setVel((0, 0))
                if dctr >= 24:
                    mm.updateState(mm.findState("Dead"))
                dctr += 1

            # Dead & Respawn
            if mm.getState().getName() == "Dead":
                mmgravity = True
                mm.setVel((0, 0))
                dctr = 0  # reset loop counter
                # respawn x between 17 until 240 excluding cs position
                x, y, w, h = cs.getState().getRect()
                k, l, m, n = mm.findState("Intro").getRect()
                r = randRangeExcept(x, w, m, 33, display_width - (14 * 2) - 1)
                xval = random.choice(r)
                mm.move((xval, 50))
                mm.findState("Run").move((xval, 50))  # Fixed the respawn bug
                mm.updateState(mm.findState("Intro"))

            # Frozen
            if mm.getState().getName() == "Frozen":
                mmgravity = False
                mm.setVel((0, 0))
                if fctr >= 50:
                    mm.updateState(mm.findState("Run"))
                fctr += 1

        # Check functions
        # print(cs.getState().getName())
        # print(pygame.mouse.get_pos())

        # If CS collides with obstructions / collision detection
        cs_rect = cs.getState().getRect()
        floor_rect = floor.getRect()
        rw_rect = right_wall.getRect()
        lw_rect = left_wall.getRect()
        ceil_rect = ceiling.getRect()

        # CS with floor
        if (col_check(cs_rect, floor_rect)):
            gravity = False
            vx, vy = cs.getVel()
            cs.setVel((vx, 0))

        # CS with ceiling
        if (col_check(cs_rect, ceil_rect)):
            cs.setVel((0, 0))

        # CS with right wall
        if col_check(cs_rect, rw_rect):
            cs.setVel((0, 0))

        # CS with left wall
        if col_check(cs_rect, lw_rect):
            cs.setVel((0, 0))

        # If MM dummy collides with obstructions / collision detection
        if mm_curr_sprite == None:
            pass
        else:
            mm_rect = mm.getState().getRect()

            # MM with floor
            if col_check(mm_rect, floor_rect):
                mmgravity = False
                vx, vy = mm.getVel()
                mm.setVel((vx, 0))

            # MM with right wall
            if col_check(mm_rect, rw_rect):
                # this facing direction is also due to the incorrect megaman spritesheet
                mm.setFacing("right")

            # MM with left wall
            if col_check(mm_rect, lw_rect):
                # this facing direction is also due to the incorrect megaman spritesheet
                mm.setFacing("left")

            # MM with ceiling
            if col_check(mm_rect, ceil_rect):
                mm.setVel((0, 0))

            # MM got hit by projectile
            pr1_rect = projectile1.getRect()
            pr2_rect = projectile2.getRect()
            pr3_rect = projectile3.getRect()
            if col_check(pr1_rect, mm_rect):
                mm.updateState(mm.findState("Frozen"))
                # move the projectiles out of the way eventhough not drawn on screen
                projectile1.move((0, 0))
            elif col_check(pr2_rect, mm_rect):
                mm.updateState(mm.findState("Frozen"))
                # move the projectiles out of the way eventhough not drawn on screen
                projectile2.move((0, 0))
            elif col_check(pr3_rect, mm_rect):
                mm.updateState(mm.findState("Frozen"))
                # move the projectiles out of the way eventhough not drawn on screen
                projectile3.move((0, 0))

            # MM and CS collide
            if cs.getState().getName() == "Stand" and mm.getState().getName(
            ) == "Run":
                if col_check(mm_rect, cs_rect):
                    cs.updateState(cs.findState("Staggered"))
            elif cs.getState().getName() == "Shoot_projectile" and mm.getState(
            ).getName() == "Run":
                if col_check(mm_rect, cs_rect):
                    cs.updateState(cs.findState("Staggered"))
            elif cs.getState().getName() == "Take_cover" and mm.getState(
            ).getName() == "Run":
                if col_check(mm_rect, cs_rect):
                    mm.updateState(mm.findState("Die"))
            elif cs.getState().getName(
            ) == "Launch_towards_target" and mm.getState().getName() == "Run":
                if col_check(mm_rect, cs_rect):
                    mm.updateState(mm.findState("Die"))

        # Special event trigger cont'd
        floor = holder_obs

        # applies gravity
        if bounce:
            vx, vy = cs.getVel()
            cs.setVel((vx, -5))
        else:
            if gravity:
                vx, vy = cs.getVel()
                cs.setVel((vx, 5))

        if mmgravity:
            vx, vy = mm.getVel()
            mm.setVel((vx, 5))

        # Movement based on speed
        vx, vy = cs.getVel()
        x, y = cs.getLoc()
        x += vx
        y += vy
        cs.move((x, y))

        vx, vy = mm.getVel()
        x, y = mm.getLoc()
        if slowmo:
            x += vx / 2
            y += vy / 2
        else:
            x += vx
            y += vy
        if mm_curr_sprite == None:
            pass
        else:
            mm.move((x, y))

        vx, vy = projectile1.getVel()
        x, y = projectile1.getLoc()
        x += vx
        y += vy
        projectile1.move((x, y))

        vx, vy = projectile2.getVel()
        x, y = projectile2.getLoc()
        x += vx
        y += vy
        projectile2.move((x, y))

        vx, vy = projectile3.getVel()
        x, y = projectile3.getLoc()
        x += vx
        y += vy
        projectile3.move((x, y))

        # Make sure next sprite is in correct direction
        cs_curr_sprite.changeDirection(cs.getFacing())
        projectile1.changeDirection(cs.getFacing())
        projectile2.changeDirection(cs.getFacing())
        projectile3.changeDirection(cs.getFacing())
        if mm_curr_sprite == None:
            pass
        else:
            mm_curr_sprite.changeDirection(mm.getFacing())

        # Update screen
        screen.fill((255, 255, 255))
        if cs.getState().getName() == "Reroll_Charge_antennae":
            bg_rippled = fc.backGround("Resources/images/cut/bg_ripple.png",
                                       (disp_SIZE), (0, 0))
            screen.blit(bg_rippled.image, bg.rect)
        else:
            screen.blit(bg.image, bg.rect)
        cs_group.draw(screen)
        # To check whether megaman is dead or not
        if mm_curr_sprite == None:
            pass
        else:
            if mm.getState().getName() == "Dead":
                pass
            else:
                mm_group.draw(screen)
        # To draw projectile
        if throwable1:
            pr_group1.draw(screen)
        if throwable2:
            pr_group2.draw(screen)
        if throwable3:
            pr_group3.draw(screen)
        label1 = myfont.render(disp_txt1, 1, (255, 255, 0))  # yellow
        label2 = myfont.render(disp_txt2, 1, (255, 255, 0))  # yellow
        label3 = myfont.render(disp_txt3, 1, (255, 255, 0))  # yellow
        label4 = myfont.render(disp_txt4, 1, (255, 255, 0))  # yellow
        screen.blit(label1, (13, 291))
        screen.blit(label2, (13, 301))
        screen.blit(label3, (170, 291))
        screen.blit(label4, (170, 301))
        pygame.display.update()

        # FPS
        clock.tick(FPS)
Exemplo n.º 11
0
iface.JSONInterface.OBJECTSPATH = '../objects/'

cleric = iface.JSONInterface('class/Cleric.class')
all = iface.JSONInterface('class/ALL.super.class')
caster = iface.JSONInterface('class/CASTER.super.class')

combined = all + caster + cleric

print(combined.get('ALL/proficiency/0/0'))
print(combined.get('/proficiency/0/0'))
print(combined.get('CASTER/slots/full/12'))
print(combined.get('/slots/full/12'))

jf = iface.JSONInterface('character/Calan.character')
classes = cm.ClassMap(jf.get('/level'))
print(classes.sum())

for n, cl, lv in classes:
    print(cl)

Calan = c.Character(jf)

print(Calan.proficiency)
print(Calan.caster_level)
print(Calan.max_slots)

Berndus = c.Character(iface.JSONInterface('character/Berndus.character'))
print(Berndus.proficiency)
print(Berndus.caster_level)
def createCharacters(nCharacters):
    characters = {}
    for c in range(nCharacters):
        character = classes.Character('elf', 'druid', 1)
        characters.update({str(c): character})
    return characters
Exemplo n.º 13
0
def play(level):
    """
    takes a file level as a string, initiates all the objects, wait for keybord inputs,
    replaces the items collected and append them to character items list. 
    tests for winning conditions when character has reached guard position
    """
    maze = cl.Maze(level)
    maze.load_level()
    gyver = cl.Character(maze.sprites)
    maze.display_maze(gyver.location, gyver.item_carried)
    son = pygame.mixer.Sound(ct.SOUNDS["begin"])
    i = 1
    son.play()
    son.fadeout(10000)
    while i:
        pygame.time.Clock().tick(30)
        for event in pygame.event.get():
            if event.type == QUIT:
                son.stop()
                return 0
            if event.type == KEYDOWN:
                # key detection via real values (locals doesn't seems to be taken into account in dict)
                switcher = {273: "up", 274: "down", 276: "left", 275: "right"}
                type = switcher.get(event.key)
                # If value not within switcher dont use method
                if type != None:
                    gyver.move(switcher.get(event.key))
                    # update of colected items +sprite + update of the carried-items
                    for item in ct.ITEMS_TO_COLLECT:
                        if item == maze.sprites[gyver.location]:
                            gyver.item_carried.append(
                                maze.sprites[gyver.location])
                            maze.sprites[gyver.location] = ""
                    maze.display_maze(gyver.location, gyver.item_carried)
        # test of winning/loosing conditions
        if (gyver.location == maze.sprites.index("guard")) and (len(
                gyver.item_carried) == len(ct.ITEMS_TO_COLLECT)):
            son.stop()
            win = pygame.mixer.Sound(ct.SOUNDS["win"])
            win.play()
            main_window = pygame.display.set_mode(
                (ct.WINDOW_WIDTH, ct.WINDOW_HEIGHT))
            font = pygame.freetype.SysFont("Comic Sans MS", 40, 0)
            main_window.fill((0, 0, 0))
            font.render_to(main_window, (205, 270), "YOU WIN", (255, 255, 255))
            pygame.display.flip()
            time.sleep(4)
            win.stop()
            i = 0
        elif (gyver.location == maze.sprites.index("guard")) and (len(
                gyver.item_carried) != len(ct.ITEMS_TO_COLLECT)):
            son.stop()
            pygame.mixer.music.set_volume(0.1)
            pygame.mixer.music.load(ct.SOUNDS["loose"])
            pygame.mixer.music.play()
            main_window = pygame.display.set_mode(
                (ct.WINDOW_WIDTH, ct.WINDOW_HEIGHT))
            font = pygame.freetype.SysFont("Comic Sans MS", 40, 0)
            main_window.fill((0, 0, 0))
            font.render_to(main_window, (180, 270), "GAME OVER",
                           (255, 255, 255))
            pygame.display.flip()
            time.sleep(4)
            pygame.mixer.music.stop()
            i = 0
    return 1
Exemplo n.º 14
0
            # Quit game when closing window
            if event.type == QUIT:
                Menu = False
                Main = False
                Game = False
                Ending = False
                pygame.display.quit()

    # Maze creation
    Maze = maze.Maze()
    Maze.maze_content()
    # Object initialization
    obj1, obj2, obj3 = classes.init_items(Maze.maze)
    obj_count = 0
    # Player initialization
    player = classes.Character(Maze.maze)

    while Game:
        # Events
        for event in pygame.event.get():
            # Quit game when closing window
            if event.type == QUIT:
                Game = False
                Main = False
                Menu = False
                Ending = False
                pygame.display.quit()

            # Keyboard
            elif event.type == KEYDOWN:
                # Quit game when pressing key escape
Exemplo n.º 15
0
def initialize_player():
    player = classes.Character(const['SCREEN_WIDTH']/2 , const['SCREEN_HEIGHT']/2, '@', const['color_player'], blocks = True)
    return player
Exemplo n.º 16
0
import classes
import pymongo
import util
import operator

mongo = pymongo.MongoClient('localhost', 27017)
db = mongo.Graph

Actors = db.Actors.find({}, {"_id": 0})
Vertexs = []
for item in Actors:
    Vertexs.append(classes.Actor(item))

Characters = db.Characters.find({}, {"_id": 0})
for item in Characters:
    Vertexs.append(classes.Character(item))

Films = db.Films.find({}, {"_id": 0})
for item in Films:
    Vertexs.append(classes.Film(item))

graph = classes.Graph(Vertexs)

f = open('csv_sources/filmsXactors.csv', 'rb')
filmsXactors = util.format_csv(f)
for item in filmsXactors:
    for j in range(1, len(item)):
        graph.addEgde(graph.getVertex('name', item[0]),
                      graph.getVertex('name', item[j]))

f = open('csv_sources/filmsXcharacters.csv', 'rb')