Skip to content

Tairitsu.NPCs

NPCs in the game.

NPCs

Classes

DialogNPC

DialogNPC(x, y, name, dialog)

Bases: NPC

Source code in Tairitsu/NPCs.py
56
57
58
59
def __init__(self, x, y, name, dialog):
    super().__init__(x, y, name)
    self.name = name
    self.dialog = dialog(self.skinPath, self.name)
Attributes
actualRect instance-attribute
actualRect = self.rect.copy()
dialog instance-attribute
dialog = dialog(self.skinPath, self.name)
direction instance-attribute
direction = 1
image instance-attribute
image = pygame.transform.scale(self.image, (NPCSettings.npcWidth, NPCSettings.npcHeight))
initialPosition instance-attribute
initialPosition = x
name instance-attribute
name = name
patrollingRange instance-attribute
patrollingRange = 70
rect instance-attribute
rect = self.image.get_rect()
skinPath instance-attribute
skinPath = GamePath.npc
speed instance-attribute
speed = NPCSettings.npcSpeed
talkCD instance-attribute
talkCD = 0
talking instance-attribute
talking = False
Functions
can_talk
can_talk()
Source code in Tairitsu/NPCs.py
48
49
def can_talk(self):
    return self.talkCD == 0
draw
draw(window, dx=0, dy=0)
Source code in Tairitsu/NPCs.py
51
52
def draw(self, window, dx=0, dy=0):
    window.blit(self.image, (self.rect.x, self.rect.y))
reset_talkCD
reset_talkCD()
Source code in Tairitsu/NPCs.py
45
46
def reset_talkCD(self):
    self.talkCD = NPCSettings.talkCD 
update
update()
Source code in Tairitsu/NPCs.py
34
35
36
37
38
39
40
41
42
43
def update(self):
    # raise NotImplementedError

    if not self.talking:
        self.actualRect.x += self.speed * self.direction
        if abs(self.actualRect.x - self.initialPosition) > self.patrollingRange:
            self.direction *= -1  # 反转方向
            self.image = pygame.transform.flip(self.image, True, False)
        if self.talkCD > 0:
            self.talkCD -= 1

Monster

Monster(x, y, path: str = GamePath.monster, HP=MonsterSettings.monsterHP, Attack=MonsterSettings.monsterAttack, Defence=MonsterSettings.monsterDefence, coin=15)

Bases: pygame.sprite.Sprite

Source code in Tairitsu/NPCs.py
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
def __init__(self, x, y, 
             path: str = GamePath.monster,
             HP = MonsterSettings.monsterHP, 
             Attack = MonsterSettings.monsterAttack, 
             Defence = MonsterSettings.monsterDefence, coin = 15):
    super().__init__()
    self.image = pygame.image.load(path)
    self.image = pygame.transform.scale(self.image, 
    (MonsterSettings.monsterWidth, MonsterSettings.monsterHeight))
    self.rect = self.image.get_rect()
    self.rect.topleft = (x, y)
    self.actualRect = self.rect.copy()

    self.HP = HP
    self.attack = Attack
    self.defence = Defence
    self.coin = coin

    self.image = pygame.transform.flip(self.image, True, False)
Attributes
HP instance-attribute
HP = HP
actualRect instance-attribute
actualRect = self.rect.copy()
attack instance-attribute
attack = Attack
coin instance-attribute
coin = coin
defence instance-attribute
defence = Defence
image instance-attribute
image = pygame.transform.flip(self.image, True, False)
rect instance-attribute
rect = self.image.get_rect()
Functions
draw
draw(window, dx=0, dy=0)
Source code in Tairitsu/NPCs.py
88
89
def draw(self, window, dx=0, dy=0):
    window.blit(self.image, (self.rect.x + dx, self.rect.y + dy))

NPC

NPC(x, y, name)

Bases: pygame.sprite.Sprite, Collidable

NPC

Source code in Tairitsu/NPCs.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def __init__(self, x, y, name):
    """
    NPC
    """
    # Initialize father classes
    pygame.sprite.Sprite.__init__(self)
    Collidable.__init__(self)

    self.skinPath = GamePath.npc
    self.image = pygame.image.load(GamePath.npc)
    self.image = pygame.transform.scale(self.image, (NPCSettings.npcWidth, NPCSettings.npcHeight))
    self.rect = self.image.get_rect()
    self.rect.topleft = (x, y)
    self.actualRect = self.rect.copy()
    self.name = name

    self.initialPosition = x  # 记录初始位置
    self.speed = NPCSettings.npcSpeed
    self.direction = 1
    self.patrollingRange = 70  # 巡逻范围

    self.talking = False
    self.talkCD = 0 # cooldown of talk
Attributes
actualRect instance-attribute
actualRect = self.rect.copy()
direction instance-attribute
direction = 1
image instance-attribute
image = pygame.transform.scale(self.image, (NPCSettings.npcWidth, NPCSettings.npcHeight))
initialPosition instance-attribute
initialPosition = x
name instance-attribute
name = name
patrollingRange instance-attribute
patrollingRange = 70
rect instance-attribute
rect = self.image.get_rect()
skinPath instance-attribute
skinPath = GamePath.npc
speed instance-attribute
speed = NPCSettings.npcSpeed
talkCD instance-attribute
talkCD = 0
talking instance-attribute
talking = False
Functions
can_talk
can_talk()
Source code in Tairitsu/NPCs.py
48
49
def can_talk(self):
    return self.talkCD == 0
draw
draw(window, dx=0, dy=0)
Source code in Tairitsu/NPCs.py
51
52
def draw(self, window, dx=0, dy=0):
    window.blit(self.image, (self.rect.x, self.rect.y))
reset_talkCD
reset_talkCD()
Source code in Tairitsu/NPCs.py
45
46
def reset_talkCD(self):
    self.talkCD = NPCSettings.talkCD 
update
update()
Source code in Tairitsu/NPCs.py
34
35
36
37
38
39
40
41
42
43
def update(self):
    # raise NotImplementedError

    if not self.talking:
        self.actualRect.x += self.speed * self.direction
        if abs(self.actualRect.x - self.initialPosition) > self.patrollingRange:
            self.direction *= -1  # 反转方向
            self.image = pygame.transform.flip(self.image, True, False)
        if self.talkCD > 0:
            self.talkCD -= 1

ShopNPC

ShopNPC(x, y, name, dialog)

Bases: NPC

Source code in Tairitsu/NPCs.py
62
63
64
def __init__(self, x, y, name, dialog):
    super().__init__(x, y, name)
    self.dialog = dialog(self.skinPath, self.name)
Attributes
actualRect instance-attribute
actualRect = self.rect.copy()
dialog instance-attribute
dialog = dialog(self.skinPath, self.name)
direction instance-attribute
direction = 1
image instance-attribute
image = pygame.transform.scale(self.image, (NPCSettings.npcWidth, NPCSettings.npcHeight))
initialPosition instance-attribute
initialPosition = x
name instance-attribute
name = name
patrollingRange instance-attribute
patrollingRange = 70
rect instance-attribute
rect = self.image.get_rect()
skinPath instance-attribute
skinPath = GamePath.npc
speed instance-attribute
speed = NPCSettings.npcSpeed
talkCD instance-attribute
talkCD = 0
talking instance-attribute
talking = False
Functions
can_talk
can_talk()
Source code in Tairitsu/NPCs.py
48
49
def can_talk(self):
    return self.talkCD == 0
draw
draw(window, dx=0, dy=0)
Source code in Tairitsu/NPCs.py
51
52
def draw(self, window, dx=0, dy=0):
    window.blit(self.image, (self.rect.x, self.rect.y))
reset_talkCD
reset_talkCD()
Source code in Tairitsu/NPCs.py
45
46
def reset_talkCD(self):
    self.talkCD = NPCSettings.talkCD 
update
update()
Source code in Tairitsu/NPCs.py
34
35
36
37
38
39
40
41
42
43
def update(self):
    # raise NotImplementedError

    if not self.talking:
        self.actualRect.x += self.speed * self.direction
        if abs(self.actualRect.x - self.initialPosition) > self.patrollingRange:
            self.direction *= -1  # 反转方向
            self.image = pygame.transform.flip(self.image, True, False)
        if self.talkCD > 0:
            self.talkCD -= 1