-
Notifications
You must be signed in to change notification settings - Fork 0
/
display.js
86 lines (77 loc) · 3.07 KB
/
display.js
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
84
85
86
export class Display {
constructor(speed, formatType = Display.#formatChars) {
this.speed = speed;
this.formatType = formatType;
}
async printComments(comments) {
const printComments = comments.split(this.formatType.partition);
printComments.forEach((comment, index) => {
setTimeout(() => {
this.formatType.print(comment);
}, index * this.speed);
});
await this.waitingTime(printComments.length * this.speed);
}
static #formatChars = {
partition: "",
print: (char) => {
process.stdout.write(char);
},
};
static formatLines = {
partition: "\n",
print: (line) => {
console.log(line);
},
};
waitingTime(time) {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, time);
});
}
static cancelProcess() {
const cancelDisplay = new Display();
console.log("\n今回はここまでにしましょう。");
cancelDisplay.frame(Display.cautionNote);
process.exit(1);
}
async frame(content) {
console.log(`
--------------------------------------------------------------------------------
${content}
--------------------------------------------------------------------------------
`);
await this.waitingTime(this.speed);
}
static instruction = `
ここは やさしい歯医者さん です
先生に お悩みを 話してみましょう
`;
static cautionNote = `
おつかれさまでした
先生の おはなしは 説明も 小言も
すべて 冗談ですので
気になさらないように してくださいね
お大事に なさってください
`;
static goDentalClinic = `
# # #
# # ############## # # ## # ###
# ###### # # ########## # ## # #
# # # # # # ## # # # #
# # # ######### # # # # # # #
################ # ## # # # ## ## # # #
# # # # ################ # # # # #
# # # # # # ########### # ## ## # #### # #
# # # # # # # # # ## ## # # # #
# ######## # # ## ## ######### ## # # # #
# # # # # # ### # ## # # # #
# ### # # ## ## ## # # ## # # # #
# # # # # # ## ## ######### ## ## # #
# # # ## # # # # ## # ###
# # ############## # #
############ #########
`;
}