This repository has been archived by the owner on Apr 12, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
test.html
85 lines (71 loc) · 3.68 KB
/
test.html
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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<h3>test</h3>
<script type="text/javascript">
var output = "\u001b[1;37mХрамовая площадь\u001b[0m\u001b[0;37m\n Ты стоишь на Храмовой площади. На севере огромные каменные ступени ведут\nвверх к воротам храма. На западе - вход в гильдию Монахов. На востоке -\nгостиница \"Хрюкающий Кабан\". Рыночная площадь - центр Мидгаарда,\nрасположена на юге.\n\n\u001b[1;36m[Выходы: north east south west up]\u001b[0m\u001b[0;37m\n \u001b[1;32mУдобный стул (chair) стоит прямо в фонтане.\u001b[0m\u001b[0;37m\n \u001b[1;32mНебольшой фонтан (fountain), сложенный из белого мрамора, установлен здесь.\n\u001b[0m\u001b[0;37m\n\u001b[1;33mСтражник (guard) стоит тут.\n\u001b[0m\u001b[0;37m\u001b[1;33mСферический фиолетовый конь в магентовых яблоках парит над землей.\n\u001b[0m\u001b[0;37m\u001b[1;33mРусалка (Mermaid) сидит на краю фонтана, раздавая задания (quests).\n\u001b[0m\u001b[0;37m\n\r[367\u001b[1;30m/\u001b[0m\u001b[0;37m367\u001b[1;30m/\u001b[0m\u001b[0;37m\u001b[1;37m100%\u001b[0m\u001b[0;37m 238\u001b[1;30m/\u001b[0m\u001b[0;37m238 180\u001b[1;30m/\u001b[0m\u001b[0;37m181 \u001b[1;30m1107\u001b[0m\u001b[0;37m \u001b[1;32m0\u001b[0m\u001b[0;37m][\u001b[0;33mХрамовая площадь\u001b[0m\u001b[0;37m][\u001b[1;33mNESWU\u001b[0m\u001b[0;37m]";
console.log(output)
var exits = getExits (output)
console.log(exits)
var roomName = getRoomName (output)
console.log(roomName)
var info = getRoomInfo (output)
console.log(info)
var directions = parseSpeedRun ('n2e3w4u5d')
console.log(directions)
function getRoomInfo (output) {
var mobs = []
var items = []
var line = output.split('\u001b[0m\u001b[0;37m\n\r')[0].split('\u001b[0;37m\n')
var step = 0
for (var i = 2; i < line.length; i++) {
if (line[i].indexOf('\u001b[1;32m') !== -1) {
line[i].split('[1;32m').forEach(function(item) {
if (item.indexOf('\u001b[0m') !== -1) {
items.push(item.split('\\u')[0].replace(/\u001b\[0m/, '').replace(/\n/, ''))
}
})
step++
} else if (step > 0 && line[i].indexOf('\u001b[1;33m') !== -1) {
line[i].replace(/\u001b/, '').split('[1;33m').forEach(function(mob) {
if (mob.indexOf('\n') !== -1) {
mobs.push(mob.split('\n')[0].replace(/\n/, ''))
}
})
}
}
return {items, mobs}
}
function getRoomName (output) {
return output.split('\u001b')[1].substr(6)
}
function getExits (output) {
var arr = /\[Выходы: (.*)\]/.exec(output)
return arr[1].split(' ')
}
function parseSpeedRun (text) {
var isSpeedRun = /^(\d*[neswud])*$/.test(text)
if (!isSpeedRun) return null
var pathDirections = text.split(/(\d*[neswud])/).filter(function(v) {
return v !== ''
})
var paths = []
pathDirections.forEach(function(path) {
var pathEntry = path.match(/^(\d)+([neswud])$/)
if (pathEntry !== null) {
for (var i = 0; i < parseInt(pathEntry[1]); i++) {
paths.push(pathEntry[2])
}
} else {
paths.push(path)
}
})
return paths
}
</script>
</body>
</html>