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
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()
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()
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()
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()
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
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()
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()
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
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)
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
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
# 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
def initialize_player(): player = classes.Character(const['SCREEN_WIDTH']/2 , const['SCREEN_HEIGHT']/2, '@', const['color_player'], blocks = True) return player
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')