Exemple #1
0
def play():
    """Main game function. Runs game"""
    name = input('Enter your name: ')
    while True:
        option = input('Enter start if you are not a loser: ')
        if option == START:
            player = Player(name)
            level = 1
            enemy = Enemy(level)
            while True:
                try:
                    player.attack(enemy)
                    player.defence(enemy)
                except EnemyDown:
                    level += 1
                    enemy = Enemy(level)
                    player.score += 5
        elif option == SHOW_SCORES:
            with open('scores.txt', 'r') as score:
                print(score.read())
        elif option == EXIT:
            raise KeyboardInterrupt
        elif option == HELP:
            print('Option list:')
            print("\n".join(OPTIONS))
        else:
            print('You mist. Type "help" if you need help')
def init_db():

    with open("smb.json", "r") as file:
        data = json.loads(file.read())
    game = Game(name=data[0].get("table_data").get("Game"))
    game.save()

    for row in data:
        enemies = []
        for elem in row["enemies"]:
            amount = elem["amount"] if isinstance(elem["amount"], int) else 1
            enemy = Enemy(name=elem["name"], amount=amount)
            enemy.save()
            enemies.append(enemy)

        powerups = []
        for elem in row["statistics"]:
            powerup = Powerup(name=elem["name"], amount=elem["amount"])
            powerup.save()
            powerups.append(powerup)

        level = Level(
            description=row.get("description"),
            name=jsonpath(row, "table_data.World-Level")[0],
            world=jsonpath(row, "table_data.World")[0],
            time_limit=jsonpath(row, "table_data.Time limit")[0].split(" ")[0],
            boss=row.get("table_data").get("Boss"),
            enemies=enemies,
            game=game,
            powerups=powerups,
        )

        level.save()
Exemple #3
0
def main():

    try:

        name = input("Enter your name: \n").strip()

        if " " in name:
            name = name.replace(' ', '_')
            print(name)

        while True:
            command = input(
                "Enter start, exit, show scores or help\n").strip().lower()

            if command == 'start':

                user = Player(name, settings.HP, settings.SCORE,
                              settings.ALLOWED_ATTACK)
                enemy = Enemy(settings.ENEMY_LEVEL)

                print(f'Enemy level is {settings.ENEMY_LEVEL}\n')

                while True:
                    try:
                        if user.allowed_attack:
                            user.attack(enemy)
                            user.allowed_attack = 0
                        else:
                            user.allowed_attack = 1
                            user.defense(enemy)
                    except EnemyDown as err:
                        print("Creating new enemy")
                        settings.ENEMY_LEVEL += 1
                        enemy = Enemy(settings.ENEMY_LEVEL)
                        print(f'Enemy level is {settings.ENEMY_LEVEL}\n')
                        user.allowed_attack = 1
                        user.score += 5
                        print(err)

            elif command == 'show scores':
                with open('scores.txt', 'r') as file:
                    for line in file:
                        print(line, end='')
                        print('-' * 10)

            elif command == 'help':
                for key in settings.COMMS.keys():
                    print(f'command {key} {settings.COMMS[key]}')

            elif command == 'exit':
                raise KeyboardInterrupt

            else:
                print(f'unknown commad {command}')

    except GameOver as err:
        err.write_score(user)

    finally:
        print('goodbye')
Exemple #4
0
def play():
    level = 1
    player_name = input('Enter your name Player! \n')
    print(f"Welcome to The Hunger Games. And may luck always be on your side! {player_name}\n")
    player = Player(player_name)
    enemy_name = 'Enemy monster'
    enemy = Enemy(enemy_name, level)

    while True:
        command = input(
            f"{player_name}, Please enter \"START\" to start the game\n"
            f"or enter \"HELP\" to enter setup\n")  # .lower()

        if command == "start":
            print(f'Your enemy name is {enemy_name}!')
            while True:

                try:

                    player.allowed_attack = input('Please make a choice for attack: '
                                                  '\'1\' - Wizard, \'2\' - Warrior,'
                                                  ' \'3\' - Rogue \n')
                    player.attack(enemy)
                    print(f'Your lives: {player.lives} | {enemy_name} lives: {enemy.lives}\n')
                    player.allowed_attack = input('Please make a choice for defence: '
                                                  '\'1\' - Wizard, \'2\' - Warrior,'
                                                  ' \'3\' - Rogue \n')
                    player.defence(enemy)
                    print(f'Your lives: {player.lives} | {enemy_name} lives: {enemy.lives}\n')
                except EnemyDown:
                    player.score += 5
                    player.level += 1
                    level += 1
                    print(f'\n---------------------------------------------------------\n'
                          f' You killed {enemy_name}. Your score: '
                          f'{player.score}. Level: {player.level}.\n'
                          f'---------------------------------------------------------\n')  # format(self.enemy_name, ))
                    enemy_name = 'goga'
                    enemy = Enemy(enemy_name, level)
                    print(f'\nYour enemy name is {enemy_name}!\n')
                except InvalidLiteral:
                    print('\nONLY 3 classes of fighters!!! 1-2-3\n')

        elif command == "help":
            settings.show_commands()

        elif command == "show scores":
            print('\n')
            Scores.show_score()
            print('\n')

        elif command == "exit":
            raise KeyboardInterrupt
Exemple #5
0
def play():
    """
    method play. :)
    """
    pl_name = input("Enter your name : ")
    player = Player(pl_name)
    level = 1
    enemy = Enemy(1)
    while True:
        try:
            player.attack(enemy)
            player.defence(enemy)
        except EnemyDown:
            level += 1
            player.score += 5
            enemy = Enemy(level)
Exemple #6
0
def play():
    """Main function"""
    print('Hello in my AWESOME GAME!!!')
    name = input('Tell me yor NAME, my brave player: ')
    player = Player(name)
    enemy = Enemy()
    score = Score('scores.txt')
    while True:
        print('_' * 50)
        print('{}, make your choice!'.format(player.name))
        print('For start the GAME type "START"')
        print('For help about GAME type "HELP"')
        print('For view the scores of game type "SCORE"')
        print('For exit from GAME type "EXIT"')
        choice = input('>>>  ').lower()
        while choice not in ALLOWED_COMMANDS:
            choice = input('You are funny one))))\n' 'Try one more time: ')
        if choice == 'start':
            start(player, enemy)
        elif choice == 'help':
            _help()
        elif choice == 'score':
            score.print_score()
        else:
            raise KeyboardInterrupt
def enemiesTable(monster, session):
    hpmod = int(
        int(monster['hit_dice'].split('d')[0]) * int(
            ((int(monster['constitution']) - 10) / 2)))
    enemy = Enemy(
        name=monster['name'],
        size=monster['size'],
        type=monster['type'],
        alignment=monster['alignment'],
        ac=monster['armor_class'],
        armorType='natural armor',  #not showing up
        hp=f"{monster['hit_dice']}+{hpmod}",
        speed=monster['speed'],
        STR=monster['strength'],
        DEX=monster['dexterity'],
        CON=monster['constitution'],
        INT=monster['intelligence'],
        WIS=monster['wisdom'],
        CHA=monster.get('charisma', None),
        challenge=monster['challenge_rating'],
        senses=monster['senses'],
        languages=monster['languages'],
        damage_vulnerabilities=monster['damage_vulnerabilities'],
        damage_resistances=monster['damage_resistances'],
        damage_immunities=monster['damage_immunities'],
        condition_immunities=monster['condition_immunities'])

    session.add(enemy)
Exemple #8
0
 def create_enemies(self):
     for i in range(len(self.lines)):
         for j in range(len(self.lines[i])):
             if self.lines[i][j] == 'E':
                 enemy_hp = randint(50 * self.hero.level,
                                    100 * self.hero.level)
                 enemy_mana = randint(50 * self.hero.level,
                                      100 * self.hero.level)
                 enemy_dmg = randint(5 * self.hero.level,
                                     10 * self.hero.level)
                 enemy = Enemy(health=enemy_hp,
                               mana=enemy_mana,
                               damage=enemy_dmg)
                 enemy.position = [i, j]
                 # Here we can add a chance to equip weapon or learn a spell
                 self.enemies.append(enemy)
Exemple #9
0
def play():
    print('Enter your name: ')
    name = input()
    player = Player(name)
    level = 1
    enemy = Enemy(level)
    while player.lives > 0:
        try:
            player.attack(enemy)
            player.defence(enemy)
            print(player.score)
            print(player.lives)
        except exeptions.EnemyDown:
            level += 1
            player.score += 5
            enemy = Enemy(level)
Exemple #10
0
def create(event, context):
    logger.debug(f'Event received: {json.dumps(event)}')
    data = _get_body(event)

    try:
        characters = data['characters']

        character_list = [
            Character(id=x['id'],
                      attack_speed=x['attack_speed'],
                      crit_chance=x['crit_chance'],
                      curr_hp=x['curr_hp'],
                      prev_hp=x['curr_hp'],
                      base_hp=x['curr_hp'],
                      min_damage=x['min_damage'],
                      max_damage=x['max_damage']) for x in characters
        ]

        fight = FightModel(id=str(uuid4()),
                           created_at=datetime.utcnow(),
                           characters=character_list,
                           connectionId=data.get('connectionId', ''))

        enemy_data = data['enemy']
        enemy = Enemy(id=enemy_data['id'],
                      can_block=enemy_data['can_block'],
                      can_dodge=enemy_data['can_dodge'],
                      block_amt=enemy_data['block_amt'],
                      block_pct=enemy_data['block_pct'],
                      dodge_pct=enemy_data['dodge_pct'],
                      base_hp=enemy_data['hit_points'],
                      curr_hp=enemy_data['hit_points'],
                      prev_hp=enemy_data['hit_points'],
                      min_damage=enemy_data.get('min_damage', 0),
                      max_damage=enemy_data.get('max_damage', 0),
                      can_crit=enemy_data.get('can_crit', False),
                      crit_chance=enemy_data.get('crit_chance', 0),
                      attack_speed=enemy_data.get('attack_speed', 0))

        fight.enemy = enemy

        fight.save()

        for char in fight.characters:
            char_fight = CharacterFightModel(char_id=char.id,
                                             fight_id=fight.id,
                                             enemy_id=fight.enemy.id)
            char_fight.save()

        response = _get_response(200, json.dumps(fight, cls=ModelEncoder))

        logger.debug(f'Response: {json.dumps(response)}')

        return response
    except Exception as ex:
        logger.error(f'Could not create fight: {ex}')
        response = _get_response(500, 'Could not create a fight')

        return response
Exemple #11
0
def play():
    """ Method to start the game"""
    name = input("Enter your name : ")
    player = Player(name)
    start = input("Enter 'start' when you are ready for battle: ")
    if start == 'start':
        print('Get ready')
    else:
        play()
    level = 1
    enemy = Enemy(1)
    while True:
        try:
            player.attack(enemy)
            player.defense(enemy)
        except EnemyDown:
            level += 1
            player.score += 5
            enemy = Enemy(level)
Exemple #12
0
 def test_spawn_enemy_not_herro(self):
     exp = None
     c = "levels_and_treasures/level1.txt"
     d = Dungeon(c)
     e = Enemy(health=100, mana=20, damage=10)
     try:
         d.spawn(e)
     except TypeError as error:
         exp = error
     self.assertIsNotNone(exp)
Exemple #13
0
def play():
    """Start game, input Player, attack and defense """
    player_name = input("Lets play!\nPlease enter your name:\n > ")
    while not player_name.isalpha():
        if not player_name.isalpha():
            player_name = input("You entered wrong name")
        return player_name
    player = Player(player_name)
    enemy = Enemy(1)
    print(f'score table {Score.check_scores()}')
    while True:
        try:
            print(player.attack(enemy))
            print(player.defense(enemy))
            print(f'You have {player.lives} lives')
            print(f'Enemy has {enemy.lives} lives')
        except EnemyDown:
            enemy = Enemy(enemy.level + 1)
            print(
                f'!!! ENEMY DOWN !!!\nAnother enemy appears! (level {enemy.level}).'
            )
            player.score += 5
def play():
    """
    - Entering the player's name
    - Creating a player object - level = 1
    - Creating an enemy object
    - calls the attack and defense
      methods of the player object in an endless loop
    - when an exception occurs, EnemyDown raises the game level,
      creates a new Enemy object with a new level,
      adds +5 points to the player."""
    level = 1
    player = Player(Inputs.input_player_name(), LIVES)
    Inputs.input_start()
    enemy = Enemy(level)

    while True:
        try:
            player.attack(enemy)
            player.defence(enemy)

        except EnemyDown:
            level += 1
            enemy = Enemy(level)
            player.score += ENEMY_DOWN_SCORE
            print(cli_color(f'{ENEMY_DOWN_STRING} {player.score}', 'c'))
            print(LIVES_STRING, player.lives)

        except GameOver:
            scores = Scores()
            # read scores from file
            try:
                scores.read_from_file(SCORE_FILE)
            except FileNotFoundError:
                pass
            # write score to scores file
            scores.new_result(player, SCORE_FILE)
            raise GameOver
Exemple #15
0
def encounter():
    form = HeroStats()
    if form.validate_on_submit():
        hstam = int(form.hstam.data)
        hskill = int(form.hskill.data)
        hluck = int(form.hluck.data)
        estam = int(form.estam.data)
        eskill = int(form.eskill.data)
        print load_user
        hstats = Hero(hstam=hstam, hskill=hskill, hluck=hluck, user_id=load_user)
        estats = Enemy(estam=estam, eskill=eskill, user_id=load_user)
        db.session.add(hstats)
        db.session.add(estats)
        db.session.commit()

        return redirect(url_for('fight'))
    return render_template('encounter.html', form=form)
Exemple #16
0
    def spawn_enemy(self, dt):
        def get_random_with_probability(prob_distr):
            assert prob_distr
            r = random.uniform(0, 1)
            s = 0
            for item in prob_distr:
                s += item[1]
                if s >= r:
                    return item[0]

        if len(self.enemies) < constants.MAX_ENEMIES and not self.game_ended:
            enemy_type = get_random_with_probability(
                [[0, 0.9], [constants.HEALTH_BONUS_TYPE, 0.05],
                 [constants.KILLALL_BONUS_TYPE, 0.05]])
            enemy = Enemy(
                self, (random.randint(30, self.width - 30), self.height + 50),
                bonus_type=enemy_type)
            self.enemies.append(enemy)
            self.add(enemy.sprite)
            self.event_manager.dispatch_event('on_enemy_spawn', self)
Exemple #17
0
def start(player, enemy):
    """Start fight"""
    while True:
        try:
            player.attack(enemy)
            player.defense(enemy)
            print('-' * 50)
            print('{}, you have {} lives and you score is {}'.format(
                player.name, player.lives, player.score))
            print('Start the NEXT ROUND! FIGHT!!!')
            print('-' * 50)
        except EnemyDown:
            player.score += 5
            enemy = Enemy()
            print('!' * 50)
            print('CONGRATULATIONS! {}, you WON this fight!'.format(
                player.name))
            print('{}, you score - {}'.format(player.name, player.score))
            print('!' * 50)
            print('Welcome to LEVEL {}! Let`s START to fight!'.format(
                enemy.level))
        except GameOver:
            print('#' * 50)
            print('ACHTUNG!!! {}, you DIED in this GAME!!!'.format(
                player.name))
            print('{}, you final score - {}'.format(player.name, player.score))
            for key, item in player.result.items():
                print('{}: {}'.format(key, item))
            print('#' * 50)
            score = Score('scores.txt')
            score.save_score(player)
            choice = input(
                '{}, did you want to START another GAME (Y/N)? '.format(
                    player.name)).lower()
            if choice != 'y':
                raise KeyboardInterrupt
            player = Player(player.name)
Exemple #18
0
def play(player):
    level = 1
    enemy = Enemy(level)
    while True:
        player.attack(enemy)
        player.defence(enemy)
Exemple #19
0
    if not AttackModel.exists():
        AttackModel.create_table(read_capacity_units=5,
                                 write_capacity_units=5,
                                 wait=True)

    if not CharacterFightModel.exists():
        CharacterFightModel.create_table(read_capacity_units=5, write_capacity_units=5, wait=True)

    for result in AttackModel.scan():
        print(json.dumps(result, cls=ModelEncoder))
    # print(AttackModel.scan())

    fight = FightModel(id=str(uuid4()))

    enemy = Enemy(id="1", can_block=True, can_dodge=True, block_pct=0.05,
                  block_amt=.54, dodge_pct=0.07, base_hp=2500, curr_hp=2500, prev_hp=2500)

    char1 = Character(id="1", attack_speed=1600, crit_chance=0.17,
                      curr_hp=1000, prev_hp=1500, min_damage=55, max_damage=128)
    char2 = Character(id="2", attack_speed=2700, crit_chance=0.27,
                      curr_hp=1250, prev_hp=3000, min_damage=65, max_damage=155)
    char3 = Character(id="3", attack_speed=1800, crit_chance=0.19,
                      curr_hp=1300, prev_hp=1800, min_damage=51, max_damage=132)
    char4 = Character(id="4", attack_speed=2100, crit_chance=0.21,
                      curr_hp=1199, prev_hp=3500, min_damage=35, max_damage=149)

    fight.enemy = enemy
    fight.characters = [char1, char2, char3, char4]

    fight.save()
Exemple #20
0
            save_score()
            menu_start()

        tick_timer += 1

        # босс появляется спустя 30 сек
        if float(time.time()) >= timer + 30:
            if not exists:
                enemies_with_boss_group.add(boss)
                all_sprites.add(boss)
                exists = True

        if tick_timer > 60:
            tick_timer = 0
            if random.random() < 0.4:
                new_enemy = Enemy()
                all_sprites.add(new_enemy)
                enemies_with_boss_group.add(new_enemy)
                enemy_group.add(new_enemy)

        if tick_timer == 0:
            for enemy in enemies_with_boss_group:
                if random.random() <= 0.5:
                    sound2.play()
                    enemy.shoot()
                    enemy_lasers.add(enemy.laser_group)
                    all_sprites.add(enemy.laser_group)

        all_sprites.update()

        hits = pygame.sprite.groupcollide(enemy_group, lasers, True, True)