Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71372f2f50 | ||
|
|
936a9213ba | ||
|
|
12020e3770 | ||
| 79d0280c66 | |||
| 925b8602e8 | |||
| d1832a9937 | |||
| a7ec44ca8c | |||
| a093d3d04b | |||
| d287525c3d |
6
0000
6
0000
@@ -1,5 +1,5 @@
|
||||
Привет
|
||||
Раскладка Маджонга | Mahjong layout
|
||||
1.0.0
|
||||
https://git.opengamestudio.org/mahjong/mahjong-raskladka-layout
|
||||
|
||||
/привет.череда
|
||||
x /привет.js
|
||||
x /раскладка-layout-kmahjongg.js
|
||||
@@ -1,5 +0,0 @@
|
||||
ПоприветствоватьМир = function()
|
||||
{
|
||||
console.log("Привет, мир!");
|
||||
document.body.innerHTML = "<h1>Привет, мир!</h1>";
|
||||
};
|
||||
@@ -1,2 +0,0 @@
|
||||
пуск
|
||||
поприветствовать мир
|
||||
106
раскладка-layout-kmahjongg.js
Normal file
106
раскладка-layout-kmahjongg.js
Normal file
@@ -0,0 +1,106 @@
|
||||
разобратьРаскладкуKMahjongg = function(содержимое)
|
||||
{
|
||||
this.__преобразоватьСодержимоеВСтроки = () =>
|
||||
{
|
||||
var строки = содержимое.split(/\n/);
|
||||
this.строки = [];
|
||||
for (var номер in строки)
|
||||
{
|
||||
var строка = строки[номер].trim();
|
||||
// Пропускаем комментарии и пустые строки.
|
||||
if (строка.startsWith("#") || !строка.length)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
this.строки.push(строка);
|
||||
}
|
||||
};
|
||||
|
||||
this.__разобратьПараметры = () =>
|
||||
{
|
||||
var параметры = {
|
||||
"ширина": 32,
|
||||
"высота": 16,
|
||||
"глубина": 0,
|
||||
"версия": "1.0",
|
||||
};
|
||||
|
||||
var префиксы = {
|
||||
"версия": "kmahjongg-layout-v",
|
||||
"глубина": "d",
|
||||
"ширина": "w",
|
||||
"высота": "h",
|
||||
};
|
||||
|
||||
var удалитьЭлементов = 0;
|
||||
var строки = this.строки;
|
||||
for (var номер in строки)
|
||||
{
|
||||
var строка = строки[номер];
|
||||
// Версия.
|
||||
if (строка.startsWith(префиксы.версия))
|
||||
{
|
||||
параметры.версия = строка.substring(префиксы.версия.length);
|
||||
}
|
||||
// Глубина.
|
||||
else if (строка.startsWith(префиксы.глубина))
|
||||
{
|
||||
параметры.глубина = строка.substring(префиксы.глубина.length);
|
||||
}
|
||||
// Ширина.
|
||||
else if (строка.startsWith(префиксы.ширина))
|
||||
{
|
||||
параметры.ширина = строка.substring(префиксы.ширина.length);
|
||||
}
|
||||
// Высота.
|
||||
else if (строка.startsWith(префиксы.высота))
|
||||
{
|
||||
параметры.высота = строка.substring(префиксы.высота.length);
|
||||
}
|
||||
else
|
||||
{
|
||||
удалитьЭлементов = номер;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this.строки.splice(0, удалитьЭлементов);
|
||||
if (параметры.глубина == 0)
|
||||
{
|
||||
параметры.глубина = this.строки.length / параметры.высота;
|
||||
}
|
||||
this.параметры = параметры;
|
||||
};
|
||||
|
||||
this.__разобратьПозиции = () =>
|
||||
{
|
||||
const параметры = this.параметры;
|
||||
const строки = this.строки;
|
||||
var позиции = [];
|
||||
for (var номерСлоя = 0; номерСлоя < параметры.глубина; ++номерСлоя)
|
||||
{
|
||||
for (var ряд = 0; ряд < параметры.высота - 1; ++ряд)
|
||||
{
|
||||
for (var столбец = 0; столбец < параметры.ширина - 1; ++столбец)
|
||||
{
|
||||
const рядСлоя = ряд + (номерСлоя * параметры.высота);
|
||||
if (
|
||||
(строки[рядСлоя][столбец] == '1') &&
|
||||
(строки[рядСлоя][столбец + 1] == '2') &&
|
||||
(строки[рядСлоя + 1][столбец] == '4') &&
|
||||
(строки[рядСлоя + 1][столбец + 1] == '3')
|
||||
) {
|
||||
позиции.push([номерСлоя, ряд, столбец]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.позиции = позиции;
|
||||
};
|
||||
|
||||
// Исполняем.
|
||||
this.__преобразоватьСодержимоеВСтроки();
|
||||
this.__разобратьПараметры();
|
||||
this.__разобратьПозиции();
|
||||
return this.позиции;
|
||||
};
|
||||
Reference in New Issue
Block a user