const engines = {
empires: require("./empires").Game,
tictactoe: require("./tictactoe").Game,
- scribe: require("./scribe").Game
+ scribe: require("./scribe").Game,
+ empathy: require("./empathy").Game
};
class LMNO {
}
generate_id() {
- return Array(4).fill(null).map(() => LMNO.letters.charAt(Math.floor(Math.random() * LMNO.letters.length))).join('');
+ /* Note: The copy from Array(4) to [...Array(4)] is necessary so
+ * that map() will actually work, (which it doesn't on an array
+ * from Array(N) which is in this strange state of having "empty"
+ * items rather than "undefined" as we get after [...Array(4)] */
+ return [...Array(4)].map(() => LMNO.letters.charAt(Math.floor(Math.random() * LMNO.letters.length))).join('');
}
create_game(engine_name) {
* 1. Vowels (AEIOU) to avoid accidentally spelling an unfortunate word
* 2. Lowercase letters (replace with corresponding capital on input)
* 3. N (replace with M on input)
- * 4. P (replace with B on input)
- * 5. S (replace with F on input)
+ * 4. B (replace with P on input)
+ * 5. F,X (replace with S on input)
*/
-LMNO.letters = "BCDFGHJKLMQRTVWXYZ";
+LMNO.letters = "CCDDDGGGHHJKLLLLMMMMPPPPQRRRSSSTTTVVWWYYZ";
const lmno = new LMNO();
/* Replace unused letters with nearest phonetic match. */
id = id.replace(/N/g, 'M');
- id = id.replace(/P/g, 'B');
- id = id.replace(/S/g, 'F');
+ id = id.replace(/B/g, 'P');
+ id = id.replace(/F/g, 'S');
+ id = id.replace(/X/g, 'S');
/* Replace unused numbers nearest visual match. */
id = id.replace(/0/g, 'O');