Пример #1
0
class TestSwordMethods(unittest.TestCase):
    def setUp(self):
        self.sword = Sword()

    def test_get_name(self):
        self.assertEqual(self.sword.name, 'Sword')

    def test_get_damage(self):
        self.assertEqual(self.sword.damage, 10)

    def test_set_damage(self):
        self.sword.damage = 20
        self.assertEqual(self.sword.damage, 20)

    def test_get_durability(self):
        self.assertEqual(self.sword.durability, 1)

    def test_set_durability(self):
        self.sword.wearout()
        self.assertEqual(self.sword.durability, 0.9)

    def test_attack(self):
        self.assertEqual(self.sword.attack(), 10)

    def test_set_durability_after_attack(self):
        self.assertIn(self.sword.durability, [0.9, 1])

    def test_le(self):
        b = Sword(damage=20)
        self.assertEqual(self.sword <= b, True)

    def test_str(self):
        string = 'Название: Sword; Урон: 10'
        self.assertEqual(str(self.sword), string)
Пример #2
0
class Player(Character):
    def __init__(self, world, x, y, width, height, speed=5):
        super().__init__(world, x, y, width, height)
        self.world = world
        self.health = 10
        self.image = pygame.image.load('assets/chessman-knight.png')
        self.my_sword = Sword('Excalibur', 10, 'assets/Small_Sword_icon.png',
                              self.x - 18, self.y + 14)
        self.speed = speed
        self.attacking = False

    def update(self):  # moves the Player
        event = pygame.event.poll()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                self.y -= self.speed
                self.my_sword.update_y(-self.speed)
            if event.key == pygame.K_s:
                self.y += self.speed
                self.my_sword.update_y(+self.speed)
            if event.key == pygame.K_a:
                self.x -= self.speed
                self.my_sword.update_x(-self.speed)
            if event.key == pygame.K_d:
                self.x += self.speed
                self.my_sword.update_x(+self.speed)
            if event.key == pygame.K_e:
                # Allow 1 attack per key pressed
                if self.attacking is False:
                    self.attack()
                    self.attacking = True

        elif event.type == pygame.KEYUP:
            if self.attacking:
                self.release()
                self.attacking = False

        self.check_boundary()

    def attack(self):
        self_right_side = self.x + self.width + 25
        self_left_side = self.x + self.width
        self_top_side = self.y
        self_bottom_side = self.height + self.y
        self.my_sword.attack()

        for enemy in self.world.enemy_list:
            if self.is_touching_rectangle(right=self_right_side,
                                          left=self_left_side,
                                          top=self_top_side,
                                          bottom=self_bottom_side,
                                          other_character=enemy):
                enemy.died()

    def release(self):
        self.my_sword.release()

    def draw(self, world_surface):
        world_surface.blit(self.image, (self.x, self.y))
        self.draw_health(0, 0)
        pygame.display.flip()
        self.my_sword.draw(world_surface)