-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
83 lines (64 loc) · 2.43 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from card import PURPLE_CARD, YELLOW_CARD
HEADER = "---《{text}》---\n"
def display_name(user):
""" Get the current players name including their username, if possible """
user_name = user.first_name
if user.username:
user_name += "(@" + user.username + ")"
return user_name
def make_other_players_notif(game) -> str:
"""Make the notification message without current player"""
players = game.players
players.remove(game.current_player)
text = HEADER.format(text="黃牌")
for p in players:
text += display_name(p.user) + "\n"
text += f"請依序打出 {game.board.purple.space} 張 {YELLOW_CARD}!"
return text
def make_current_settlement(game) -> str:
text = HEADER.format(text="分數")
for p in game.players:
text += display_name(p.user) + f"({-p.score} 張 {YELLOW_CARD})\n"
return text.rstrip()
def make_settlement(game) -> str:
text = HEADER.format(text="結束")
players = game.players
highest, lowest = float("-inf"), 0
for p in players:
if p.score > highest:
highest = p.score
if p.score < lowest:
lowest = p.score
for p in players:
# prepend emoji to player
if p.score == highest:
text += "🏆 "
elif p.score == lowest:
text += "👎 "
else:
text += "👍 "
text += f"{display_name(p.user)}({-p.score} 張 {YELLOW_CARD})\n"
return text.rstrip()
def make_card_players(game, num: int) -> str:
text = HEADER.format(text="裁決")
text += f"{display_name(game.current_player.user)}選的是 {num}\n"
for idx, p in game.board.get_players():
text += f"{idx}:{display_name(p.user)}\n"
return text.rstrip()
def make_game_start(game) -> str:
text = HEADER.format(text="開始")
text += display_name(game.current_player.user) + f"請打一張 {PURPLE_CARD}"
return text
def make_loser_discard(game) -> str:
text = HEADER.format(text="換牌")
text += display_name(game.board.loser.user) + "你剛剛輸了\n"
text += "你可以選擇換 1 至 2 張牌,或不換牌\n"
return text
def make_room_info(game) -> str:
text = HEADER.format(text="房間")
others = [p.user for p in game.players]
others.remove(game.starter)
text += f"房主:{display_name(game.starter)}\n"
for u in others:
text += display_name(u) + "\n"
return text.rstrip()