예제 #1
0
def load_map():  # Загрузка карты
    for y in range(len(map_txt)):
        for x in range(len(map_txt[y])):
            platform = map_txt[y][x]
            if platform == '#':
                platform = '#-'

                key = up_or_down(x, y, platform)
                key += ' ' + right_or_left(x, y, platform)

                if key == ' ' and map_txt[y][x + 1] in platform and map_txt[y - 1][x] in platform \
                        and map_txt[y - 1][x + 1] not in platform:
                    key = 'descent'

                Sprite(platforms[KEY_PLATFORM[key.strip(' ')]],
                       Transform((x * 100, y * 100)), borders_group)

            elif platform == '-':
                key = 'bridge '
                key += right_or_left(x, y, platform)
                Sprite(platforms[KEY_PLATFORM[key.strip(' ')]],
                       Transform((x * 100, y * 100)), borders_group)

            elif platform == '=':
                key = 'iron '
                key += right_or_left(x, y, platform)
                Sprite(irons[KEY_PLATFORM[key.strip(' ')]],
                       Transform((x * 100, y * 100)), borders_group)
                if 'left' in key:
                    Sprite(load_image('Tros.png'),
                           Transform((x * 100 + 40, y * 100 - 2000)))
                elif 'right' in key:
                    Sprite(load_image('Tros.png'),
                           Transform((x * 100 + 50, y * 100 - 2000)))

            elif platform == '|':
                for i in range(20):
                    Sprite(load_image('rope.png'),
                           Transform((x * 100, y * 100 - 100 * i)),
                           ropes_group)
            elif platform == 'f':
                Sprite(load_image('flag.png'), Transform((x * 100, y * 100)))
            elif platform == 'b':
                Bandages(load_image('bandages.png'),
                         Transform((x * 100, y * 100)))

    # Добавление врагов после прогрузки карты для того, что бы плаформы не были на врагах
    for y in range(len(map_txt)):
        for x in range(len(map_txt[y])):
            platform = map_txt[y][x]
            if platform == '1':
                Enemy(0, Transform((x * 100, y * 100)))
            elif platform == '2':
                Enemy(1, Transform((x * 100, y * 100)))
            elif platform == '3':
                Enemy(2, Transform((x * 100, y * 100)))
            elif platform == '4':
                Enemy(3, Transform((x * 100, y * 100)))
            elif platform == '5':
                Enemy(4, Transform((x * 100, y * 100)))
예제 #2
0
def stage_check(screen, playerammos, enemies, enemyammos, stages, imgs):
    """Define the process of setting up each in-game stage."""

    if stage_clear(enemies):
        try:
            line_up = next(stages)
            time.sleep(0.5)
        except StopIteration:
            return True
        else:
            playerammos.empty()
            enemyammos.empty()
            enemies.empty()

            # spawn new enemies for next stage.
            global current_stage
            current_stage = line_up.id[0]
            for type, amount in enumerate(line_up[1:-1], 1):
                if amount != 0:
                    for new_enemy in range(amount):
                        enemies.add(Enemy(screen, type))

            # spawn the upgrade pack.
            if line_up.upgrade:
                enemies.add(Enemy(screen, 0))

    # display the stage background images.
    if current_stage == '1':
        screen.blit(imgs[0], (0, 0))
    elif current_stage == '2':
        screen.blit(imgs[1], (0, 0))
    elif current_stage == '3':
        screen.blit(imgs[2], (0, 0))

    return False
예제 #3
0
 def __init__(self):
     self.__arena = Arena()
     self.__player = Mando(self.__arena.board)
     self.__enemy = Enemy(self.__arena.board)
     self.__score = 0
     self.__start = time.time()
     self.__frame = 0
     self.__framerate = 2
예제 #4
0
    def create_foe(self, foe_type):
        """ Создание противника заданного типа

        :param foe_type: Тип создаваемого противника
        :return:
        """
        self.foe = Enemy(foe_type)
예제 #5
0
 def add_enemy(cronies, objectList):
     # Go through the array above and add platforms
     for crony in cronies:
         obj = Enemy(x=crony[0],
                     y=crony[1],
                     width=crony[2],
                     height=crony[3],
                     end=crony[4])
         objectList.add(obj)
예제 #6
0
def update_enemies(screen, enemies, key_actions):
    """Control all enemy ship objects."""

    if '++1' in key_actions:
        enemies.add(Enemy(screen, 1))
    if '++2' in key_actions:
        enemies.add(Enemy(screen, 2))
    if '++3' in key_actions:
        enemies.add(Enemy(screen, 3))
    if '++4' in key_actions:
        enemies.add(Enemy(screen, 4))
    if '++0' in key_actions:
        enemies.add(Enemy(screen, 0))
    if 'NXT' in key_actions:
        enemies.empty()

    for enemy in enemies:
        if enemy.check_dead():
            enemy.kill()
        else:
            screen.blit(enemy.image, enemy.rect)
            enemy.update()
예제 #7
0
    def obj_maker(self):
        """Makes all the Objects in the Game"""
        for i in self.coords:
            if i[2] == "brick":
                self.walls.append(Wall(i[0], i[1]))
            elif i[2] == "unknown":
                self.unknowns.append(Unknown(i[0], i[1]))

        for i in self.pipe_coords:
            self.pipes.append(Pipe(i[0], i[1]))

        for i in self.enemy_coords:
            self.enemies.append(Enemy(i[0], i[1], i[2]))

        self.flag.append(Flag(config.FLAG_X, config.FLAG_Y))
예제 #8
0
파일: fight.py 프로젝트: llrs/Game2
def Battle(prota):
    """Given a protagonist of the battle starts, or not, fighting"""
    import random as rdm
    a = rdm.randint(0, 5)
    if a == 0:
        prota.health = 100
        print(
            """This night was pacific, I didn't needed to fight, and I could take a break, but
I won't be so luky next time""")
    else:
        print("OH! what are this creatures??\nARGh!")
        a = rdm.randint(0, 5)
        for i in range(a):
            # Creates randomly which type of enemy he will fight
            r = rdm.randint(0, 5)
            if r == 0:
                goblin = Enemy(creature="Goblin",
                               damage=10,
                               defense=0,
                               life=10)
                fight(prota, goblin)
            elif r == 1:
                troll = Enemy(creature="Troll", damage=20, defense=0, life=30)
                fight(prota, troll)
            elif r == 2:
                supertroll = Enemy(creature="SuperTroll",
                                   damage=40,
                                   defense=0,
                                   life=50)
                fight(prota, supertroll)
            elif r == 3:
                urukhai = Enemy(creature="Uruk Hai",
                                damage=60,
                                defense=5,
                                life=70)
                fight(prota, urukhai)
            elif r == 4:
                nazgul = Enemy(creature="Nazgul",
                               damage=80,
                               defense=20,
                               life=100)
                fight(prota, nazgul)
            elif r == 5:
                sphanemperor = Enemy(creature="Stephan the Emperor",
                                     damage=100,
                                     defense=30,
                                     life=150)
                fight(prota, sphanemperor)
            else:
                print("Something is wrong creating the battle")
예제 #9
0
def main():
    my_hero = Hero(name='Wencakisa',
                   title='Kingslayer',
                   health=100,
                   mana=100,
                   mana_regeneration_rate=2)
    my_enemy = Enemy(health=100, mana=100, damage=10)
    my_weapon = Weapon(name='Windcutter', damage=10)
    my_spell = Spell(name='Fireball', damage=7, mana_cost=4, cast_range=1)
    my_hero.equip(my_weapon)
    my_hero.learn(my_spell)

    while my_hero.is_alive() and my_enemy.is_alive():
        print(my_enemy.attack(enemy=my_hero))
        my_enemy.take_healing(healing_points=40)
        print(my_hero.attack(by='spell', enemy=my_enemy))
        print(my_hero.attack(by='weapon', enemy=my_enemy))
예제 #10
0
from characters import Enemy
from characters import NPC
from roomList import Room

enemies = {
    'skeleton':
    Enemy('Skeleton', "village", 20, ['Rusty Sword'], ['Wooden Shield'])
}
예제 #11
0
class Engine:
    """Generating the backend of the game
    Each game will be an instance of the Engine
    """
    def __init__(self):
        self.__arena = Arena()
        self.__player = Mando(self.__arena.board)
        self.__enemy = Enemy(self.__arena.board)
        self.__score = 0
        self.__start = time.time()
        self.__frame = 0
        self.__framerate = 2

    def transition(self, key):
        status = 0
        self.__framerate = self.__player.frate()
        if self.__frame < WIDTH - ENEMY_OFFSET:
            for i in range(self.__framerate):
                self.__frame += 1
                status += self.__player.move_relative(self.__arena.board,
                                                      self.__frame)
        self.__player.checkmag(self.__arena.board, self.__frame)
        status += self.__player.move(self.__arena.board, key, self.__frame)
        self.__player.upd_att(self.__arena.board, key, self.__frame)
        self.__enemy.move(self.__arena.board, self.__player.location)
        if int(time.time() - self.__start) % 3 == 0:
            self.__enemy.shoot(self.__arena.board)
        self.__enemy.move_ice(self.__arena.board)
        self.__score += status
        if self.__score > 10:
            self.__player.activate_dragon()
        self.__player.render_tail(self.__arena.board)

    def repaint(self):
        # sys.stdout.flush()
        # sys.stdout.write("\x1bc")
        print("\x1bc")
        self.__arena.render(self.__frame, self.__enemy.location)
        print(
            f"Score: {self.__score}\t Lives: {self.__player.lives}\t Time Left: {int(GAME_TIME - (time.time() - self.__start))}secs\t Enemy Lives: {self.__enemy.lives}\n"
        )

    def game_over(self):
        # sys.stdout.write("\x1bc")
        print("GAME OVER!!")
        print(f"Final Score: {self.__score}")

    def win(self):
        print(f"You Win!\nFinal Score: {self.__score}")

    def play(self):
        KEYS = NBInput()
        KEYS.nb_term()
        while time.time() - self.__start < GAME_TIME:
            self.repaint()
            time.sleep(0.08)
            INPUT = ""
            if KEYS.kb_hit():
                INPUT = KEYS.get_ch()
            self.transition(INPUT)
            KEYS.flush()
            if self.__enemy.lives <= 0:
                self.win()
                break
            if self.__player.lives <= 0:
                self.game_over()
                break
예제 #12
0
# player -
p1 = Player(x=PLAYER_X,
            y=PLAYER_Y,
            screen=screen,
            image_path="./images/space-invaders.png")

# list of enemies -
enemies = list()
# make 2 rows
for j in range(2):
    # of 10 enemies each
    for i in range(10):
        enemy = Enemy(x=((PAGE_WIDTH - 2 * PAGE_BORDER) // 11) * (i + 1),
                      y=ENEMY_Y + j * ENEMY_START_HEIGHT,
                      screen=screen,
                      image_path="./images/spaceship.png",
                      respawn_status=False)
        enemies.append(enemy)

# bullet -
b = Bullet(x=BULLET_X,
           y=BULLET_Y,
           screen=screen,
           image_path="./images/bullet.png")


# main function -
def main():
    # score variable
    score = 0