示例#1
0
    def __init__(self,
                 width=WINDOW_WIDTH,
                 height=WINDOW_HEIGHT,
                 monsters_count=5,
                 asteroids_count=3,
                 goal=10,
                 max_lost=10,
                 life_count=3):
        self.width = width
        self.height = height

        # Display
        self.window = display.set_mode((width, height))
        display.set_caption("Шутер")
        self.background = transform.scale(image.load(BACKGROUND_IMG_PATH),
                                          (width, height))

        # Fonts and final messages
        font.init()
        self.final_message_font = font.SysFont('Arial', 36)
        self.params_font = font.SysFont('Arial', 36)
        self.win = self.final_message_font.render('YOU WIN', True,
                                                  (255, 255, 255))
        self.lose = self.final_message_font.render('YOU LOSE', True,
                                                   (180, 0, 0))

        # Sprites
        self.player = Player(self.window, PLAYER_IMG_PATH, 5, height - 80, 80,
                             100, 4)
        self.monsters = sprite.Group(
            *(Enemy(self.window, MONSTER_IMG_PATH, randint(5, width - 5), 0,
                    80, 50, randint(2, 5)) for _ in range(monsters_count)))
        self.asteroids = sprite.Group(
            *(Asteroid(self.window, ASTEROID_IMG_PATH, randint(5, width - 5),
                       0, 80, 50, randint(2, 5))
              for _ in range(asteroids_count)))

        # Music
        mixer.init()
        mixer.music.load(SPACE_MUSIC)
        mixer.music.play()
        self.fire_sound = mixer.Sound(FIRE_MUSIC)

        # Base game vars
        self.game = True
        self.rel_time = False
        self.finish = False
        self.goal = goal
        self.max_lost = max_lost
        self.life_count = life_count
        self.num_fire = 0
        self.score = 0
        self.lost = 0
示例#2
0
 def spawn_enemies(self, pop=1):
     """
     Creates pop number of enemies
     Enemies spawn in the 1st quadrant of the game display
     :param pop: population
     :return:
     """
     for enemy in range(pop):
         # Draw positions from top left corner
         pos = (random.random() * self.W_WIDTH / 2,
                random.random() * self.W_HEIGHT / 2)
         Enemy(pos, self.background)
示例#3
0
def enter():
    global mario, map, enemy, object
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 2)
    game_world.add_object(enemy, 3)
    pass
示例#4
0
    def __init__(self, win, velocity, height):
        self.proj = Enemy(velocity=55, height=550)
        self.marker = Image(Point(-100, 550), 'car_right.gif')
        self.marker.draw(win)

        #second car:
        self.proj2 = Enemy(velocity=67, height=500)
        self.marker2 = Image(Point(-100, 500), 'car_right.gif')
        self.marker2.draw(win)

        self.proj3 = Enemy(velocity=53, height=115)
        self.marker3 = Image(Point(-100, 115), 'wood.gif')
        self.marker3.draw(win)

        self.proj4 = Enemy(velocity=67, height=150)
        self.marker4 = Image(Point(-100, 150), 'wood.gif')
        self.marker4.draw(win)

        self.proj5 = Enemy(velocity=60, height=450)
        self.marker5 = Image(Point(-100, 450), 'car_right.gif')
        self.marker5.draw(win)
示例#5
0
    def _create_enemy(self, row_number: int, column_number: int) -> Enemy:
        """Creates a new enemy"""
        enemy = Enemy(self)
        enemy.width = enemy.rect.width
        enemy.height = enemy.rect.height

        enemy.rect.x += column_number * (2*enemy.width)
        enemy.rect.y += row_number * (2*enemy.height)
        if self.settings.full_screen_mode:
            enemy.rect.x += 4.5*enemy.width

        return enemy
示例#6
0
def create_enemy():
    while True:
        rand = random.randint(0, 4)
        if rand == 1:
            distance = random.randint(-50, 50)
            enemy = Enemy(enemyImg, display_width, (display_height/2) + distance)
            enemy_list.append(enemy)
        elif rand == 2:
            distance = random.randint(-50, 50)
            enemy = Enemy(enemyImg, 0, (display_height/2) + distance)
            enemy_list.append(enemy)
        elif rand == 3:
            distance = random.randint(-50, 50)
            enemy = Enemy(enemyImg, (display_width/2) + distance, display_height)
            enemy_list.append(enemy)
        elif rand == 4:
            distance = random.randint(-50, 50)
            enemy = Enemy(enemyImg, (display_width/2) + distance, 0)
            enemy_list.append(enemy)

        time.sleep(game_tick*100)
示例#7
0
    def previous_lvl(self):
        self.player.add_money(self.enemy.get_money())
        if self.enemy:
            del self.enemy

        if self.lvl <= 1:
            self.lvl = 1
        else:
            self.lvl -= 1

        self.enemy = Enemy(self.lvl, self.lvl)
        pygame.display.update()
示例#8
0
 def explore(self):
   if self.state != 'normal':
     print ("%s is too busy right now!" % self.name)
     self.enemy_attacks()
   else:
     print ("%s explores a twisty passage." % self.name)
     if randint(0, 1):
       self.enemy = Enemy(self)
       print ("%s encounters %s!" % (self.name, self.enemy.name))
       self.state = 'fight'
     else:
       if randint(0, 1): self.tired()
示例#9
0
    def __init__(self):
        self.world = World()

        self.current_tm = 0

        self.tm_offsetX = 16
        self.tm_offsetY = 0

        self.world.push(Player(30, 30, 8, 8))
        self.world.push(Enemy(30, 110, 8, 8, 5))

        self.push_the_objects()
    def test_with_weapon_should_attack_by_weapon(self):
        h = Hero(name="Bron",
                 title="Dragonslayer",
                 health=100,
                 mana=100,
                 mana_regeneration_rate=2)
        h.equip(Weapon(name="The Axe of Destiny", damage=20))
        e = Enemy()

        Fight(h, e)

        self.assertEqual(h.attacking, PLAYER_ATTACK_BY_WEAPON_STRING)
示例#11
0
 def sendEnemiesEndless(self):
     if self.waveCalled:
         if len(self.enemies) != 0:
             if self.enemies[-1].distance >= self.enemiesToGo["delay"]:
                 self.enemies.append(
                     Enemy(self.road, self.enemiesToGo["HP"] * self.wave,
                           self.enemiesToGo["color"], self))
                 self.enemiesToGo["units"] -= 1
             if self.enemiesToGo["units"] == 0:
                 if not (self.parent.parent.parent.menuboard.autoSendingBtn.
                         isChecked()):
                     self.waveCalled = False
                 self.wave += 1
                 self.enemiesToGo["units"] += self.wave
         else:
             self.enemies.append(
                 Enemy(self.road, self.enemiesToGo["HP"] * self.wave,
                       self.enemiesToGo["color"], self))
             self.enemiesToGo["units"] -= 1
     if len(self.enemies) == 0 and self.wave != 1:
         self.waveCalled = True
示例#12
0
    def init_model(self):
        # 创建实例对象
        # 地图背景实例
        self.background = Background(0, 0, self.window, self.bg_image_path)
        # 敌机对象实例
        self.enemy1 = Enemy(random.randint(120,
                                           WINDOW_WIDTH - 120), 0, self.window,
                            "res/img-plane_%d.png" % random.randint(1, 7))
        self.enemy2 = Enemy(random.randint(120, WINDOW_WIDTH - 120),
                            random.randint(0, WINDOW_HEIGHT - 68), self.window,
                            "res/img-plane_%d.png" % random.randint(1, 7))
        self.enemy3 = Enemy(random.randint(120, WINDOW_WIDTH - 120),
                            random.randint(0, WINDOW_HEIGHT - 68), self.window,
                            "res/img-plane_%d.png" % random.randint(1, 7))
        self.enemy4 = Enemy(random.randint(120, WINDOW_WIDTH - 120),
                            random.randint(0, WINDOW_HEIGHT - 68), self.window,
                            "res/img-plane_%d.png" % random.randint(1, 7))
        self.enemy5 = Enemy(random.randint(120, WINDOW_WIDTH - 120),
                            random.randint(0, WINDOW_HEIGHT - 68), self.window,
                            "res/img-plane_%d.png" % random.randint(1, 7))
        self.enemy6 = Enemy(random.randint(120, WINDOW_WIDTH - 120),
                            random.randint(0, WINDOW_HEIGHT - 68), self.window,
                            "res/img-plane_%d.png" % random.randint(1, 7))
        global enemy_lis
        enemy_lis = [
            self.enemy1, self.enemy2, self.enemy3, self.enemy4, self.enemy5,
            self.enemy6
        ]
        self.enemy_lis = enemy_lis

        # 玩家飞机实例
        self.player = Plane(196, 660, self.window, self.hero_image_path,
                            self.enemy_lis)
示例#13
0
def init_game():
    pygame.init()

    game_settings = Settings()

    screen = pygame.display.set_mode(
        (game_settings.screen_width, game_settings.screen_height),
        pygame.FULLSCREEN)
    # screen = pygame.display.set_mode((game_settings.screen_width, game_settings.screen_height))
    ship = Ship(screen)
    stats = GameStats(game_settings)
    friend = Friend(screen)

    enemy = Enemy(screen)
    enemy_2 = Enemy_2(screen)
    enemy_3 = Enemy_3(screen)
    enemy_4 = Enemy_4(screen)
    enemy_5 = Enemy_5(screen)
    enemy_6 = Enemy_6(screen)
    enemy_7 = Enemy_7(screen)
    enemy_8 = Enemy_8(screen)
    enemy_9 = Enemy_9(screen)

    hook = Hook(screen)
    background = Background(screen)
    pygame.display.set_caption("Peter Pan")

    bullets = Group()
    enemies = Group()
    enemies.add(enemy, enemy_2, enemy_3, enemy_4, enemy_5, enemy_6, enemy_7,
                enemy_8, enemy_9, hook)
    friends = Group()
    friends.add(friend)
    ships = Group()
    ships.add(ship)
    #g_f.create_fleet(game_settings, screen, ship)
    button = Button(screen, game_settings, "Play")
    sb = Scoreboard(game_settings, screen, stats)

    while True:
        g_f.chek_events(game_settings, ship, screen, bullets, button, stats,
                        enemies, sb)
        g_f.update_screen(background, ships, bullets, enemies, screen, button,
                          friends, stats, sb)

        if stats.game_active:
            g_f.update_bullets(bullets, enemies, ships, friends, hook, stats,
                               sb, screen)
            g_f.aliens_move(enemies, screen, friends, ships, bullets, ship)

            ship.update()
            ship.blitme()
示例#14
0
def spawn_enemy():
    ran_spawn = random.randrange(1, 3)
    if ran_spawn == 1:
        enemy_list = [Enemy(1955, 1230), Enemy(2350, 1230), Enemy(1650, 1050)]
    elif ran_spawn == 2:
        enemy_list = [
            Enemy(1140, 1290),
            Enemy(1290, 750),
            Enemy(1955, 1230),
        ]
    elif ran_spawn == 3:
        enemy_list = [
            Enemy(2350, 1230),
            Enemy(1290, 750),
            Enemy(1650, 1050),
        ]
    enemies = enemy_list
    return enemies
示例#15
0
def create_fleet(ai_settings, screen, enemies):
    enemy_x = [0, 240, 480]
    numpy.random.shuffle(enemy_x)
    rand_int = random.randint(1, 3)
    if len(enemies) + rand_int > ai_settings.enemies_allowed:
        count = ai_settings.enemies_allowed - len(enemies)
    else:
        count = rand_int
    for x in enemy_x[0:count]:
        enemy = Enemy(ai_settings, screen)
        enemy.x = x
        enemy.rect.x = enemy.x
        enemies.add(enemy)
示例#16
0
    def add(self, x, y, e_type="a"):
        """
        create and add new enemy
        """
        enemy = Enemy(self._surf)
        enemy.init(e_type)

        enemy.x = x
        enemy.y = y

        self._enemies.append(enemy)

        return enemy
示例#17
0
def create_random_enemies(Number_of_enemies, wall_list, enemies_list, all_sprite_list, level):

    numberOfEnemies = 0
    while numberOfEnemies < Number_of_enemies:
        x1 = randint(0, 14)
        y1 = randint(0, 12)
        if level[y1][x1] == 0:
            level[y1][x1] = 3
            enemy = Enemy(60 * x1, 60 * y1)
            enemies_list.add(enemy)
            enemy.walls = wall_list
            all_sprite_list.add(enemy)
            numberOfEnemies += 1
示例#18
0
def GenerateTrainingData() -> List[Tuple[Action, Action, Result]]:
    classificationData = []

    badGuy: Enemy = Enemy()
    combatResultDeterminator: Determinator = Determinator()
    for trainingData in range(10000):
        playerAction: Action = GetPlayerAction()
        enemyResponse: Action = badGuy.Response(playerAction)
        result: Result = combatResultDeterminator.DetermineResult(
            enemyResponse)
        classificationData.append((playerAction, enemyResponse, result))

    return classificationData
示例#19
0
    def test_with_given_spell_and_not_enough_enemy_mana_raises_LogicError(
            self):
        enemy = Enemy(health=100, mana=20, damage=20)
        s = Spell(name="Fireball", damage=30, mana_cost=50, cast_range=2)
        enemy.learn(s)
        err = None
        try:
            enemy.attack(by='magic')
        except Exception as exc:
            err = exc

        self.assertIsNotNone(err)
        self.assertEqual(str(err), 'No mana!')
示例#20
0
 def explore(self):
     if self.state != 'normal':
         print("%s is too busy right now!" % self.name)
         self.enemy_attacks()
     else:
         print("%s explores through the hallways." % self.name)
         if randint(0, 1):
             self.enemy = Enemy(self)
             print("%s comes face to face with %s!" %
                   (self.name, self.enemy.name))
             self.state = 'fight'
         else:
             if randint(0, 1): self.tired()
示例#21
0
    def set_level(self, level):  ## method for loading levels from files ##
        self.level = Level(level)

        self.grid_size = self.level.size
        self.aspect_x = self.grid_size[0] / self.grid_size[1]
        self.aspect_y = self.grid_size[1] / self.grid_size[0]

        self.grid = self.level.map
        for row in self.grid:
            for item in row:
                self.add_widget(item)

        self.enemy = Enemy('DEFAULT', self.level)
示例#22
0
    def test_enemy_take_damage_5(self):
        enemy = Enemy(hit_points=12, lives=5)
        enemy.take_damage(24)
        self.assertEqual(enemy.lives, 3)
        self.assertEqual(enemy.hit_points, 12)

        enemy.take_damage(24)
        self.assertEqual(enemy.lives, 1)
        self.assertEqual(enemy.hit_points, 12)

        enemy.take_damage(12)
        self.assertEqual(enemy.lives, 0)
        self.assertEqual(enemy.hit_points, 0)
示例#23
0
    def __init__(self):
        global WINDOW_HEIGHT, WINDOW_WIDTH, CAPTION, FPS, COLKEY
        pyxel.init(WINDOW_WIDTH, WINDOW_HEIGHT, caption=CAPTION, fps=FPS)

        # === Generate Instances ===
        self.player = Player()
        self.enemy = Enemy()
        self.backgnd = BackGround()
        # TODO: make game title
        self.player.beGameover()  # not good way ...

        pyxel.load("asset/asset.pyxel")
        pyxel.run(self.update, self.draw)
示例#24
0
    def next_lvl(self):
        self.player.add_money(self.enemy.get_money())
        if self.board:
            del self.board

        if self.enemy:
            del self.enemy

        self.lvl += 1
        self.board = Board(400, 50)
        self.enemy = Enemy(self.lvl, self.lvl)

        pygame.display.update()
    def test_with_weapon_and_spell_should_attack_by_higher_damage(self):
        h = Hero(name="Bron",
                 title="Dragonslayer",
                 health=100,
                 mana=100,
                 mana_regeneration_rate=2)
        h.learn(Spell(name="Fireball", damage=20, mana_cost=50, cast_range=2))
        h.equip(Weapon(name="The Axe of Destiny", damage=30))
        e = Enemy()

        Fight(h, e)

        self.assertEqual(h.attacking, PLAYER_ATTACK_BY_WEAPON_STRING)
    def test_init_fiht(self):
        h = Hero(name="Bron",
                 title="Dragonslayer",
                 health=100,
                 mana=100,
                 mana_regeneration_rate=2)
        e = Enemy()

        f = Fight(h, e)

        self.assertIsNotNone(f)
        self.assertIsNotNone(f.hero)
        self.assertIsNotNone(f.enemy)
示例#27
0
def enter():
    global mario, map, enemy, object, fire_ball
    mario = Mario()
    map = Map()
    enemy = Enemy()
    object = Object()
    fire_ball = Ball()

    game_world.add_object(map, 0)
    game_world.add_object(object, 1)
    game_world.add_object(mario, 0)
    game_world.add_object(enemy, 1)
    pass
    def test_with_given_enemy_and_invalid_by_as_argument_should_raise_exception(
            self):
        e = Enemy()
        by = None

        exc = None
        try:
            e.attack(by=by)
        except Exception as e:
            exc = e

        self.assertIsNotNone(exc)
        self.assertEqual(str(exc), 'Invalid item for attack given')
示例#29
0
    def __init__(self):
        self.command_registry = CommandRegistry(self)
        self.item_registry = ItemRegistry(self)

        self.player = Player("AAAAA")
        self.player.inventory.add_item(
            self.item_registry.get_item("Crude Bronze Shortsword"))

        enemy = Enemy("Dummy")

        self.current_encounter = Encounter(enemy)

        self.gameloop()
示例#30
0
 def rest(self):
   if self.state != 'normal': print( "%s can't rest now!" % self.name); self.enemy_attacks()
   else:
     print( "%s rests." % self.name)
     if randint(0, 1):
       self.enemy = Enemy(self)
       print ("%s is rudely awakened by %s!" % (self.name, self.enemy.name))
       self.state = 'fight'
       self.enemy_attacks()
     else:
       if self.health < self.health_max:
         self.health = self.health + 1
       else: print ("%s slept too much." % self.name); self.health = self.health - 1