From a8e42da6fdc03b5f1389ab9f3aeac50edce0e434 Mon Sep 17 00:00:00 2001 From: Leon Mika Date: Sat, 25 Jan 2025 11:30:04 +1100 Subject: [PATCH] Have got win and failures working --- cmd/prep-words/main.go | 48 ++++++- site/assets/data/shuffle_pattern.json | 1 + site/assets/scripts/controllers/keyboard.js | 10 ++ site/assets/scripts/controllers/overlay.js | 18 +++ site/assets/scripts/controllers/playfield.js | 42 +++++-- site/assets/scripts/main.js | 4 +- site/assets/scripts/models/gamecontroller.js | 5 + site/assets/scripts/models/words.js | 9 +- site/assets/styles/main.css | 125 ++++++++++++++++++- site/index.html | 21 +++- 10 files changed, 255 insertions(+), 28 deletions(-) create mode 100644 site/assets/data/shuffle_pattern.json create mode 100644 site/assets/scripts/controllers/overlay.js diff --git a/cmd/prep-words/main.go b/cmd/prep-words/main.go index 5e08f2b..d4417b9 100644 --- a/cmd/prep-words/main.go +++ b/cmd/prep-words/main.go @@ -2,21 +2,32 @@ package main import ( "bufio" + "bytes" "encoding/json" "flag" "log" + "math/rand/v2" "os" + "path/filepath" "sort" + "time" ) type wordList struct { Words map[int][]string `json:"words"` } +type shufflePattern struct { + Index map[int][]int `json:"index"` +} + func main() { - dictFile := flag.String("dict", "", "dictionary of word to prep") + dictFile := flag.String("dict", "./dict/en_GB.dic", "dictionary of word to prep") + outDir := flag.String("out", "./site/assets/data", "output directory") flag.Parse() + r := rand.New(rand.NewPCG(uint64(time.Now().UnixNano()), uint64(time.Now().UnixNano()))) + words := wordList{ Words: make(map[int][]string), } @@ -29,11 +40,42 @@ func main() { log.Fatal(err) } - for _, word := range words.Words { + for k, word := range words.Words { + log.Printf("Found %d words of length %v", len(word), k) sort.Strings(word) } - if err := json.NewEncoder(os.Stdout).Encode(words); err != nil { + var wordData bytes.Buffer + if err := json.NewEncoder(&wordData).Encode(words); err != nil { + log.Fatal(err) + } + if err := os.WriteFile(filepath.Join(*outDir, "words.json"), wordData.Bytes(), 0644); err != nil { + log.Fatal(err) + } + + // Generate a shuffle pattern + shp := shufflePattern{Index: make(map[int][]int)} + for k := range words.Words { + pattern := make([]int, len(words.Words[k])) + for i := range words.Words[k] { + pattern[i] = i + } + + for x := 4; x < r.IntN(8)+4; x++ { + r.Shuffle(len(pattern), func(i, j int) { + pattern[i], pattern[j] = pattern[j], pattern[i] + }) + } + + // TODO: shuffle + shp.Index[k] = pattern + } + + var patternData bytes.Buffer + if err := json.NewEncoder(&patternData).Encode(shp); err != nil { + log.Fatal(err) + } + if err := os.WriteFile(filepath.Join(*outDir, "shuffle_pattern.json"), patternData.Bytes(), 0644); err != nil { log.Fatal(err) } } diff --git a/site/assets/data/shuffle_pattern.json b/site/assets/data/shuffle_pattern.json new file mode 100644 index 0000000..12fd482 --- /dev/null +++ b/site/assets/data/shuffle_pattern.json @@ -0,0 +1 @@ +{"index":{"4":[146,171,73,1760,1637,1526,162,755,1131,1824,1376,1710,962,1299,347,1690,1115,1356,1652,35,514,1689,446,464,1864,1805,685,1402,879,1783,219,1447,1384,1531,918,375,1432,944,25,658,1876,1828,455,460,2017,423,837,1449,1340,1263,1423,1775,1368,821,914,418,878,682,1527,1601,635,1947,42,259,61,880,36,579,156,46,1386,1647,278,395,1754,1059,135,157,1579,1319,1077,211,1103,1440,1237,656,327,1913,319,1180,386,848,552,1332,1550,898,855,984,1599,321,900,424,597,110,1960,777,1205,2033,1407,590,609,34,1896,681,242,150,1030,862,1072,441,1471,1112,1529,1586,120,1767,859,718,222,1395,1780,724,224,1516,1269,421,798,723,775,9,320,1583,511,1685,1793,770,351,1242,1458,1243,15,905,19,894,1557,1869,68,1414,996,822,1986,665,1608,584,411,1472,1002,797,12,247,1174,444,834,1666,938,1462,1328,1866,1879,760,1855,1138,1835,2043,1435,1119,1463,1609,1153,48,281,1653,697,1482,1308,606,1199,1592,982,239,352,774,1523,1751,1372,1510,1962,858,1810,1074,1446,284,706,323,341,1313,2009,737,372,1141,1110,1406,1737,1691,1013,999,1058,1584,660,408,1890,1902,2049,1038,953,364,864,886,1121,808,107,2051,1744,566,276,1641,955,756,810,389,929,1577,831,695,1051,482,261,203,447,438,55,997,2014,1171,267,626,496,1820,1415,752,1657,1082,2059,2053,1305,131,1733,829,426,290,102,189,465,970,589,757,679,1836,1684,91,1225,289,842,671,600,1127,1644,215,187,684,634,1485,607,1218,197,846,69,30,896,1219,1388,1969,1029,1578,78,652,1158,767,1669,1300,1016,1347,608,1071,833,927,1988,1680,1981,558,1571,324,1672,1936,1721,1687,585,471,2040,2001,1425,1621,1333,1250,448,640,951,153,1589,580,1660,1359,1120,1125,1892,268,998,713,1575,1955,749,2056,1838,1738,555,1792,1258,557,312,1867,1646,1089,24,328,1316,1541,667,753,936,1930,1631,771,472,587,229,1380,1812,1140,1055,1399,209,1095,1035,1950,1409,1965,1786,817,904,1244,269,663,1338,740,1477,611,1822,391,272,1168,1964,1670,1341,751,926,51,1143,481,1839,547,545,379,1483,1102,495,1280,847,476,1295,1515,409,1768,1705,1067,943,1408,1456,227,93,1676,906,921,856,736,1717,329,487,1742,466,954,1450,40,619,213,1227,598,484,195,2028,888,488,925,306,1337,1753,337,99,1547,188,1566,1325,754,1444,1167,299,1977,2052,129,17,1147,592,1318,270,1124,1228,571,673,1096,1823,1050,1274,1567,134,1614,1403,1351,1935,380,1645,10,1335,628,912,1097,1585,1044,1722,1006,950,1648,1521,1078,722,1182,816,1094,1109,71,32,1948,690,1037,1039,931,1905,1558,605,124,825,565,307,1698,377,792,1757,509,1413,934,1235,1560,98,569,1743,217,1987,6,768,1431,1330,250,1387,1643,249,763,47,782,1085,935,346,336,1749,64,132,524,1770,1041,1506,1317,1248,1049,1561,2058,1883,1321,1176,109,1591,994,721,1505,788,1113,483,271,452,62,414,828,853,22,2035,599,178,709,1534,165,1075,1193,1091,1261,1412,779,490,1207,401,92,517,2037,1842,2034,475,1802,325,304,1090,1290,1214,889,1640,1553,702,748,458,1382,1144,216,716,1266,287,1818,811,194,258,1882,1036,1661,568,785,1980,1658,2007,322,1693,586,1241,1366,1100,836,1898,404,791,1256,655,1995,550,167,2048,119,623,1508,877,1065,1813,164,1929,621,123,1794,1172,948,233,1976,1895,683,1816,1539,96,2016,1166,1160,264,916,1706,1400,838,3,887,1897,313,1393,1360,1224,1677,412,1469,49,1803,759,429,86,1776,416,1860,1064,1396,305,425,647,717,563,1888,58,1312,1053,1159,863,510,462,1719,1493,1293,190,1789,1528,415,335,560,991,687,1420,1951,1850,368,382,1910,963,355,710,1949,1881,1251,689,595,74,1973,54,1517,27,1322,280,1692,1302,1999,987,1931,433,1390,531,765,866,802,371,1254,2031,1762,1240,508,1126,394,742,139,1123,1903,2060,63,1363,1636,1865,205,1833,871,1972,1129,639,492,1262,443,1772,789,523,1417,958,1061,1992,1499,1488,1956,1723,1323,1404,800,1139,1179,1779,701,1331,840,2030,1611,942,1375,1283,823,1682,591,2027,1022,633,556,1344,1580,387,463,442,311,1911,121,400,2044,1401,317,2026,1461,908,468,750,1422,505,937,1730,1554,583,266,360,18,1502,1122,874,978,477,1852,1596,1953,2032,1607,353,436,1686,210,493,688,459,1707,1848,1968,1185,1339,14,1289,920,1845,440,254,613,28,1165,728,95,1784,406,1785,762,1101,1383,1175,191,933,396,1046,1448,1582,1889,361,1093,1919,1630,1024,1310,1342,38,142,1543,246,1556,473,1083,1535,251,1576,1329,946,1668,214,1715,1362,2055,1486,596,1834,303,1301,286,2013,101,883,1625,1371,1801,1151,2029,1150,354,1739,1699,1546,852,1638,223,969,698,498,128,720,177,274,1983,1142,977,525,1714,915,899,1017,983,345,112,968,1442,114,1474,1032,676,588,1216,601,630,77,295,1470,1993,185,159,1612,870,1353,1821,1034,1688,1588,766,959,814,1424,1271,1457,804,1304,79,85,1765,1901,115,66,2021,731,1497,1238,2047,228,1192,1326,1942,1507,1952,1132,1480,917,182,147,1819,399,1979,292,1697,1870,1286,827,2005,502,615,1146,1759,1007,1777,362,1605,310,1511,678,1974,745,1107,1079,1490,1232,1019,773,1246,1829,7,1514,75,893,1177,869,1954,549,1320,186,1886,618,1656,644,398,849,703,2000,641,179,1355,136,1797,226,826,208,494,1066,1292,1945,318,2038,506,158,947,850,1334,1914,2050,1610,1729,1048,113,1938,220,1201,76,100,562,180,1764,2045,911,1906,743,225,183,824,1624,546,1795,1489,776,730,1941,231,1755,1681,1650,1841,677,1537,735,1790,1257,1620,1701,366,1808,1196,1711,1712,1735,1209,885,1899,350,1031,526,1909,340,1309,986,2015,1825,1806,666,967,680,851,1343,155,1212,0,1389,1915,378,1887,1137,1959,622,437,88,1990,422,1008,653,309,469,1010,1086,260,857,232,497,624,2,1233,1291,2024,1798,616,331,692,1563,1439,1925,1498,778,1114,479,1060,1726,1966,529,1088,504,1370,924,207,1758,262,1849,712,1809,31,1934,513,910,1695,450,397,799,1958,381,301,1940,734,638,542,478,1092,582,192,1600,1042,1642,1416,694,273,1473,1538,1975,1900,1108,431,163,80,1197,201,1394,930,1364,1476,1361,181,1720,1275,536,1619,1709,43,1194,1503,714,1056,1411,1277,1594,143,1267,1985,819,729,1187,1398,873,1245,1081,407,895,1663,1664,1872,919,1391,1932,392,941,1926,1369,1294,385,1276,1598,1500,1827,1570,872,1961,705,467,1367,221,140,553,844,342,1478,1509,820,1152,212,1522,1851,2020,298,235,1130,435,1665,1084,956,651,664,1099,103,832,965,1445,1871,241,1011,1683,1436,1397,1724,154,1377,1226,1429,1278,170,1265,72,2025,975,1613,1944,1763,1718,1014,876,1346,661,1878,338,758,913,559,365,1912,1223,1117,1374,1943,781,964,980,867,1118,1984,1306,1491,1740,707,117,787,144,1496,1773,699,82,1997,67,1253,841,957,390,1252,1622,138,33,578,316,643,903,456,499,65,662,1946,1437,149,675,1392,527,1745,614,1736,1800,780,1087,87,127,489,1581,617,1204,1027,890,902,434,168,1734,818,1203,1840,104,1155,784,973,1236,218,1324,1649,746,1239,1136,59,1844,1555,1602,1727,97,1787,1923,256,20,503,45,1875,564,1920,41,1279,516,339,1830,1161,2036,393,1750,1728,572,410,519,454,81,160,693,1533,1135,122,1804,990,1817,206,839,198,1774,1068,84,801,255,1874,16,1741,432,1426,648,554,769,813,1542,1195,439,1492,161,1908,794,1858,2010,130,486,1454,37,1336,461,1857,1045,520,1551,294,405,993,1206,570,747,1004,882,1796,1549,835,1884,1679,1215,200,1799,805,646,70,1880,1769,1568,966,1062,1907,1655,343,52,1373,1530,1247,868,1003,530,1105,1832,445,1421,1904,1678,1862,1378,1573,1771,1466,543,548,884,739,1348,1428,1272,1460,1704,1501,1633,236,1963,1843,1327,2046,1069,577,1487,1288,148,1379,575,1465,1296,892,1927,243,654,1047,538,257,602,1732,1924,1671,1358,1512,696,1933,733,2022,230,1451,1747,1873,133,1098,631,1859,1467,1504,1654,1190,2042,29,535,23,985,637,126,359,204,1623,809,169,923,349,1427,1028,1385,1307,625,39,1134,1893,1210,515,300,1434,108,1998,1703,961,1229,166,402,1314,1778,657,116,1766,111,952,1853,1519,285,282,174,1080,1189,291,253,50,541,485,491,1616,2054,551,1260,1731,248,141,1222,642,419,1520,1524,1365,53,1255,650,691,369,1635,1186,457,1716,1464,603,151,296,417,173,1659,1268,1831,1791,1885,1281,1419,1234,897,453,1569,522,357,533,700,1484,1133,1455,1128,1163,152,1807,534,374,283,1453,636,1264,1,1513,812,1170,89,939,974,252,1249,330,1311,1026,1349,726,2039,1202,2012,356,275,881,137,277,1590,302,1675,949,1837,1173,786,1574,1756,1297,945,1459,297,1674,1696,1606,1781,830,629,449,1157,1438,125,981,528,719,540,427,1587,989,1443,1479,363,561,1018,1814,1282,1188,1418,57,1552,1357,891,1604,106,1673,2004,348,1917,976,686,1545,1565,1354,367,1978,240,1846,732,2057,960,388,1033,184,1116,1548,1191,1287,1562,1615,1702,334,632,544,1005,118,861,1381,403,202,922,500,1148,474,1996,1788,992,420,237,627,1145,1559,979,1854,574,928,1811,2018,1632,2003,1410,1178,1856,1532,1000,8,1939,1430,988,1106,358,725,875,1922,1162,314,2041,972,238,1868,1015,1164,1052,11,704,145,1315,1564,909,172,501,1982,610,370,815,1303,1967,593,539,1725,1104,1156,1063,995,612,1198,2008,2006,1111,1270,1073,376,1694,796,332,845,741,176,521,1043,1603,1639,1826,649,1970,1352,1023,279,428,1025,90,1572,843,1285,901,1746,1298,672,175,1595,1040,1544,1525,1651,669,1916,308,512,1928,803,537,1863,263,940,430,507,1921,1597,727,793,604,1213,383,105,518,1540,1468,1259,1345,772,1076,1208,244,1020,265,1518,567,1405,373,783,2023,326,1700,532,576,1211,1937,384,807,1009,1021,1877,1001,1761,1200,865,1629,1495,1054,21,83,193,790,315,1220,413,573,56,1708,1713,333,344,1183,199,620,288,1441,1154,234,480,1070,1452,60,1634,26,711,2011,1230,1217,1667,1627,1284,659,971,4,1618,1617,1861,1991,245,1957,1971,1847,1181,1626,795,645,1628,1593,1169,1350,1273,2002,860,2019,1481,1149,1989,1057,1433,1894,470,1012,806,761,594,674,715,44,668,932,1536,1494,708,1815,670,907,1994,451,293,1184,1782,1752,13,854,1475,1891,738,5,581,1918,764,1662,94,1231,1748,196,744,1221],"5":[457,1391,809,1133,413,546,3013,800,893,1699,2667,932,657,2437,2506,768,891,2517,312,2858,1394,2014,2296,3017,283,918,1905,2966,2634,1158,1556,875,1987,2618,2202,1207,1290,934,559,512,1732,837,2212,2138,2421,2359,3148,2447,243,892,2347,1595,2243,692,1149,1709,2622,2127,3126,2599,2841,1360,2640,1277,860,784,1505,1749,2215,1436,2410,50,3109,884,1125,901,1111,2924,1099,2798,2698,1475,2871,2943,2838,1308,840,105,2291,2727,3030,1963,262,3042,2489,108,2514,2154,2632,2648,1303,2423,2163,69,3050,2159,1610,1104,2449,1422,2393,1910,2918,2960,2335,1714,212,1995,1144,1117,1246,1561,2637,1830,1682,1032,487,454,1693,1936,2336,1673,1642,2144,2189,2134,3123,342,489,1581,412,79,2957,2757,2611,941,1029,54,2701,1624,469,1630,1170,2606,2330,2582,1831,3015,968,696,983,195,2616,1583,5,2004,1242,972,1792,1213,700,831,2995,3041,2712,1870,653,1812,557,757,898,2715,2376,554,1904,78,119,689,1004,1429,3132,1316,2459,537,699,2422,2354,499,3018,1576,971,1198,164,661,2800,3048,1759,2731,2720,2710,1771,1802,67,127,2389,1126,2455,922,2662,248,2655,763,223,807,464,1466,2879,25,2679,1593,1834,2825,1310,1555,2644,1976,321,2281,1381,1859,848,1306,1107,2739,1586,756,2549,2010,1645,277,273,421,1152,427,1817,383,640,2761,154,703,121,2722,2983,3039,3012,293,2419,998,2666,2872,3,1723,1236,1727,1324,567,534,2001,1370,1093,226,1822,357,2741,2756,880,201,1656,40,2141,1525,2989,1325,49,1787,1488,2953,1660,2268,2328,1659,1609,2469,1267,271,211,1393,2863,1469,1880,1710,1215,387,1741,1113,916,2020,256,28,3061,2181,2089,2835,2039,2707,2990,1516,3065,723,709,332,1886,289,1661,2450,1118,2342,542,2197,2642,734,869,184,2624,1756,532,2171,2146,1084,1970,1909,2372,369,867,2463,2464,2280,1687,1684,3098,1171,1538,2063,2790,3154,2883,483,2854,2639,3095,2783,2901,1750,1694,1200,2030,1350,2361,1883,1245,3019,1077,1818,1526,1666,3037,663,789,1294,1136,254,2570,344,1578,2781,438,769,3157,1121,1691,458,2706,1040,1116,548,2888,2323,1935,2508,2848,515,456,818,1419,1423,2973,712,2728,2811,2415,1020,1255,2589,2986,1342,46,1428,1403,2623,104,504,1579,1251,2626,1376,521,1542,933,480,1930,200,2058,2653,1017,2194,1221,2162,488,97,2690,596,575,2954,1247,877,2247,1856,2214,3072,1063,426,2172,2914,2705,1139,2513,2,3147,1058,2195,1151,1776,343,1674,1095,2509,2116,209,949,2009,863,2723,2027,642,2340,940,1919,242,1665,2097,2332,405,30,1653,2926,1733,192,1494,1658,1922,2912,2120,1424,1082,1089,2492,666,1551,943,2842,2445,2358,2064,152,2927,618,3144,2309,2843,2522,1541,909,2782,1951,1274,1852,424,1434,1620,2864,1286,355,2546,1127,2396,1175,2112,2435,2495,1960,644,1815,2754,551,721,1479,430,2125,2017,3165,1208,2855,113,577,2208,323,1580,31,2834,667,1635,623,2371,2400,304,1484,1339,2111,1263,966,2258,2074,1451,1977,2298,1355,2533,1022,2407,144,1601,2000,3067,2910,2958,58,2908,695,1011,2177,309,41,2444,2025,2470,1853,2370,1866,556,2820,416,1123,301,2936,166,1345,1657,508,2424,290,2098,1940,2773,478,1438,66,2998,1705,2479,1188,904,1837,2537,1031,505,3016,1514,1978,2430,1253,26,3010,2084,2446,3008,2873,2023,3038,1442,3156,449,2086,681,2480,2692,2827,555,2221,347,3139,2201,1344,1535,1180,2561,1654,1388,820,1799,2042,965,1986,1590,591,2793,2747,979,1860,683,1464,391,2567,388,583,178,1256,2220,536,1531,444,2481,447,1532,980,2428,947,2713,315,305,775,2498,1577,1323,96,868,1185,2738,942,590,2538,1664,722,1689,498,1168,2697,1677,1924,1649,2654,1892,2844,368,1028,1832,2236,793,2395,690,765,804,1399,1685,2694,1521,1602,1911,726,2978,1009,1701,866,2984,1939,1467,3069,1785,2019,788,1522,1220,1504,1053,964,151,86,428,328,1196,586,950,1805,2643,2077,2190,2300,2241,2418,1412,1953,2452,1461,1758,2822,2729,1621,2938,181,1237,1320,1596,251,2555,3052,2575,207,335,303,1945,2082,1425,2588,1413,691,2724,1269,1623,1589,823,1411,1368,3111,461,1174,107,517,385,375,1546,484,2614,1778,189,994,116,686,1569,2279,2051,2628,1761,2375,467,2139,1025,1893,216,705,3097,2771,1789,2718,1999,76,2512,317,415,1544,635,2860,558,3099,928,2507,1788,2312,1283,2374,771,2344,664,2151,3092,1707,843,1276,776,235,2147,311,1903,125,1227,1109,2746,2164,2005,680,984,473,1548,2283,639,3021,451,1605,3141,1816,821,1747,624,1678,1233,4,2769,1201,2734,2386,1671,2471,638,1085,2454,2101,3112,24,77,1262,470,370,2887,363,1453,2876,2525,2434,2733,2451,228,188,2015,2970,2530,2477,2007,1828,1933,803,2174,1760,2615,806,2363,63,2704,459,2845,2955,531,2114,165,177,1212,772,143,528,2094,520,2057,2674,2956,1752,202,733,2308,1647,1489,1786,1858,814,677,1379,817,1465,1748,149,1430,3036,742,1779,2677,281,3140,1417,93,2305,2254,2420,3136,2476,1223,3082,1414,1230,1773,2758,218,2367,3025,1571,535,206,989,1361,606,2719,2409,1050,514,1078,2102,1289,1501,1861,2716,250,112,1735,42,1603,51,1030,2392,3145,2736,1612,339,1821,1317,2260,2814,3024,1435,2468,6,2708,217,671,2850,1437,145,1722,2900,1668,1927,2321,824,991,1416,349,2131,1997,1496,2413,3001,2026,1900,1867,697,133,1373,1848,2886,2663,2262,1949,2988,1474,574,3074,1829,2645,1753,855,1908,247,2150,1641,944,2693,2890,1382,2891,3028,1454,1367,711,2436,2391,1340,2700,2313,1984,1297,2627,300,2249,1643,3143,945,849,719,902,2191,2776,2931,182,1385,897,3110,308,2255,2072,717,513,951,3053,1143,1335,150,1409,649,1728,1238,2355,729,605,2244,410,2587,2170,562,2070,668,912,2345,1261,2744,1948,65,302,1738,647,1570,1326,2398,560,3120,2052,140,2130,436,1783,2176,1250,919,386,1519,98,2672,2126,2803,494,613,2337,1358,1183,1240,1814,1041,564,2941,2306,2519,2140,1533,1500,2465,1819,524,669,832,903,1843,956,1346,1780,3002,168,2979,1307,1597,2916,503,502,417,2067,2714,1216,1888,1259,2234,1033,2250,3116,2188,1604,1234,1734,732,2702,2804,2182,650,2483,3064,2581,237,1567,1708,2383,2399,1197,1374,1495,1351,854,159,1159,38,2161,584,3045,527,881,2680,453,878,2830,604,106,925,230,1145,2646,1372,2272,774,1740,1638,1616,1296,1719,598,3029,1270,2610,2494,526,2278,1129,2273,2853,1950,3054,1404,1865,2213,3066,1155,3000,1584,2073,822,977,987,2417,2885,173,55,1824,2828,2348,2878,1396,2922,2113,871,2797,233,617,2959,3107,1868,2149,2314,497,2155,2768,815,2232,1146,33,3129,2239,1292,2527,1851,163,1791,227,827,1047,2145,1873,1008,1959,1055,330,1066,1971,2360,1745,2385,1878,252,1347,1120,2425,2115,9,1092,2394,2945,2124,191,2669,1214,264,448,1809,2002,753,399,2649,1961,477,1363,2497,320,1003,2041,1486,2946,862,511,2601,1477,704,1071,2091,3150,1321,1564,2055,3027,1849,239,3073,573,2594,1045,1312,2218,1280,830,1458,2665,2158,2299,249,1993,345,1717,2906,3033,2438,874,1807,1334,2595,2505,2031,676,761,99,2909,403,1210,2066,229,2502,1958,612,3049,2257,1823,3127,1492,2934,2343,1899,418,1343,1194,62,1972,1293,1205,1545,762,2759,1793,2404,2767,2617,1049,791,393,852,2859,1315,872,486,1443,126,2048,1625,379,1774,1634,269,2849,2524,2865,1327,2024,1690,1543,2414,1191,679,1490,3075,1169,1206,2275,2384,3004,917,1897,1618,2263,1838,2994,1450,579,299,1202,626,2331,954,707,1137,3168,286,1106,739,471,1485,1565,1098,714,474,750,1980,460,2686,2284,2770,1820,2183,83,1336,1956,36,2196,1384,3044,68,2349,2775,790,2269,1964,3088,693,2684,637,798,2881,14,3022,533,1337,1313,2748,1854,3071,1931,1712,993,1869,411,3125,267,402,221,263,114,2695,759,2791,969,829,1173,1483,2229,1608,2539,120,148,2650,2991,802,1801,1534,2760,2688,538,84,1810,1615,1074,764,336,1088,616,2248,1730,507,465,1341,629,1021,2929,2948,2592,2516,364,180,1833,2338,2806,931,2207,2408,2403,1985,3131,396,1460,1042,749,2320,1209,18,475,1947,1311,268,2612,2852,266,1408,1898,1172,1648,316,2289,1487,580,2726,11,2625,2142,2875,715,1362,313,1052,183,1272,1380,1226,1163,2553,333,420,2904,570,326,1119,1711,976,2062,2137,2493,2889,3020,585,1704,2351,2794,2717,132,2861,348,2397,908,1075,3094,2809,2999,2382,1754,2826,879,70,3005,2580,1766,2381,2829,245,1879,1574,2325,334,813,1520,472,2166,2475,2378,298,961,1811,2817,2847,766,1057,1847,1607,501,2571,1626,1906,890,1051,2110,2184,1357,476,2851,1850,509,3105,2346,1318,2603,1164,2745,440,1926,2230,1035,1225,553,2406,1769,755,172,1798,1835,900,170,1529,1390,1631,2402,741,222,2753,2319,3167,162,3163,2022,859,401,57,1148,1147,1420,2259,3166,2301,743,1700,2225,2499,124,2590,455,2742,1491,2441,808,1080,1090,265,156,1507,785,2302,2426,1962,889,3086,2088,2036,839,1744,1232,1369,1996,492,2967,2785,1005,1550,437,865,1943,2647,1855,1675,731,3158,2977,2920,2129,1826,1217,1094,1981,1079,982,2596,2805,2605,2038,1591,682,1563,3060,1016,673,2500,1515,1557,2631,2732,833,190,1846,2185,1037,550,1944,414,419,3026,1862,2766,1128,819,2762,1973,1513,953,767,846,1827,1914,2668,1377,2387,720,1928,1156,2877,1322,738,2488,1891,408,565,812,2390,2652,1921,2297,1124,1268,435,2789,2657,1942,2952,1083,2950,1402,89,2427,2099,2135,2982,2167,285,887,1254,974,778,1481,244,770,2186,2271,1110,2899,2203,1902,373,847,1264,2752,1530,53,1184,2008,340,2227,748,231,1572,429,1103,3070,2993,174,1547,2813,2485,2180,2287,975,1912,2974,716,1739,2896,1392,636,1767,2703,2117,493,828,2947,2054,225,81,544,1407,3121,593,1655,450,921,1378,3135,794,2725,2691,1881,257,358,957,588,2160,1889,1142,425,576,2222,2324,329,3051,1512,1566,648,296,1632,1975,446,1667,241,2267,999,2573,2520,1937,1640,2256,1844,1383,3043,220,272,2583,2365,2472,353,1842,2200,2329,2980,376,1371,88,1806,2874,1840,2951,2598,587,2968,2529,52,2050,2565,2433,2737,366,2035,2228,462,2696,1724,3014,2750,2237,2143,1048,631,1644,1934,1193,929,600,2090,171,137,2510,1619,1511,1056,2944,337,1455,948,2556,2870,240,2997,2597,1952,718,1871,746,2380,1553,825,194,1614,1992,1332,3100,2078,1275,1884,1946,981,1426,1725,1637,1288,468,234,1875,1736,2118,362,1271,660,1480,2028,2779,2053,1019,2047,1813,727,1539,32,2604,146,1896,2682,609,992,1365,2523,131,1917,2388,1991,1476,325,374,1720,1457,443,2285,2559,20,2132,2670,619,1676,710,2021,2357,1560,2295,3134,1968,2541,2607,1558,2780,1177,2867,2971,452,885,1594,2226,2045,16,1162,441,552,1248,1432,2199,2187,3006,167,518,2930,2528,1258,2093,2591,155,1054,2884,1349,94,3169,2521,3023,1471,1969,2839,2818,632,566,1000,2095,1606,2416,1281,1925,2547,2898,1309,978,2687,996,2439,8,1599,1662,907,382,915,1916,1796,2209,306,359,432,2552,3090,698,3068,792,1295,1353,1895,3170,1768,327,2169,633,2037,434,238,1192,799,870,1923,2316,1524,2972,1573,3083,176,3040,3076,2440,197,2368,1683,3155,2976,1872,747,652,708,643,282,319,1257,2310,2032,261,656,1266,2362,2458,2511,2915,1431,1613,1034,2379,1001,2823,2016,2919,2049,858,2574,48,3003,1179,1967,1502,2318,232,1410,82,2238,490,2240,2071,3046,1762,3009,2453,2467,2515,47,1279,1328,356,193,324,3164,496,3079,445,2816,295,1375,115,946,1157,1181,914,61,236,2661,1731,1588,2156,2224,297,2482,1552,1112,620,1427,1015,896,360,1941,1389,10,2846,997,2431,2040,2709,431,995,2136,1954,2893,2373,610,2675,758,80,2755,519,3119,786,594,701,407,1108,2105,1278,169,307,1456,1190,246,2964,2092,1097,1462,2277,130,607,611,1499,2223,1199,2043,2253,582,1692,1482,2206,2460,781,1688,1790,924,2564,2033,599,2913,2600,899,3114,1517,2602,1134,654,780,3146,1064,1243,284,3031,2939,834,2491,2075,1252,1600,844,2562,2869,938,2011,1406,3081,1955,655,2807,2894,2282,2012,1176,2579,481,702,1770,318,208,1010,2175,2411,390,1639,2897,2109,3034,2087,2304,2975,1983,2264,1663,1982,1686,1348,1305,1536,1046,1929,2405,279,3162,2740,2204,1387,389,779,463,675,2462,1366,2560,1397,936,1100,2833,1228,404,2103,43,2585,641,3113,3077,851,2119,1043,2862,2496,141,1282,2245,651,2526,634,3085,2992,3055,2935,1974,2925,1966,1568,3035,1554,210,1354,2619,2123,2730,744,1915,2350,378,2837,479,2265,2824,630,135,179,2210,2788,15,1473,2940,985,923,1027,2778,1260,2942,2294,2569,1401,2711,2456,2962,1979,280,361,1998,1957,1901,3104,2566,658,2576,2369,2246,545,1506,2765,2353,19,2178,2233,3118,2152,1122,2401,2808,102,367,1105,1825,2128,22,2412,2270,3007,2543,1131,2635,2928,2518,2474,955,926,3089,1398,2656,2193,1091,1890,3106,1636,1166,60,3161,2786,958,1150,2501,3133,1167,2061,1062,371,439,118,1794,0,1219,1135,939,2613,161,1224,1718,1877,1448,2536,2216,826,920,2085,2937,253,2157,1421,129,7,678,2629,85,1132,3159,3152,203,665,2018,2083,2683,310,351,927,423,3138,1587,2671,1882,646,745,1472,754,561,1681,3078,1527,1627,687,725,122,1493,2969,1222,2173,913,2198,1523,1012,3153,1651,861,621,816,136,1395,2165,1575,12,735,2651,1715,730,3122,1441,110,1115,797,1990,75,111,2293,1433,2799,1989,608,400,3149,2122,134,1189,530,1913,72,90,2545,380,1845,1920,1763,1087,805,3091,1244,1447,2608,2784,581,45,2902,1331,1746,1319,659,1737,1721,1018,845,2577,1002,2911,2905,2205,1231,1101,2334,910,625,1076,214,571,1703,2231,1114,2333,674,2749,2432,2532,842,2056,260,740,2568,3084,3108,895,894,2630,1138,2108,2503,3032,810,1784,341,409,2443,352,543,2013,592,1405,888,2219,2504,3011,1841,1698,466,1140,398,103,1994,1024,2882,3137,2192,2787,1503,1165,2673,873,3080,1161,2364,1160,2307,2857,1439,1652,2044,2339,2572,2081,381,787,2678,2266,2558,95,1528,377,783,1235,883,662,2473,276,935,1775,3103,406,568,1203,549,1617,2179,3160,782,603,713,2286,2689,1764,2965,2777,160,2060,529,962,23,2923,1023,2743,1186,906,2819,751,2548,2322,2921,886,1874,1130,2880,569,2261,2046,205,1299,1218,911,291,2996,541,101,1598,3130,1777,1036,1938,2069,71,1876,1839,1751,2892,1154,970,1672,1195,1081,2801,2535,1562,1716,960,37,3117,1284,1518,1026,2251,3093,2659,2685,2836,1585,1894,3058,1072,1298,187,2636,365,2987,1386,1772,540,2457,2096,1697,3047,128,147,856,139,64,2796,56,2303,1463,737,602,2563,1291,198,258,1468,1452,2620,1628,1765,2034,736,2932,157,1301,1509,2907,354,2531,1013,3059,1808,1300,123,688,294,175,394,836,1141,959,1680,2290,495,1153,3063,196,525,73,219,29,1549,392,2292,384,864,346,259,1038,2856,2933,2466,2868,2810,2557,1304,2584,2831,2658,117,2542,1863,578,39,988,1537,1755,1073,1239,2735,2442,2578,1743,2211,2461,3151,1695,2895,1330,2949,100,882,1178,1329,2961,1249,2484,2832,615,838,2621,2478,857,433,595,2699,35,2327,3062,270,287,1039,2815,1014,622,1364,2315,572,2792,442,397,1086,292,2751,2217,338,142,1836,1633,1729,1887,1679,1885,1044,2903,1857,2802,224,500,1540,1182,1302,1,3101,1229,1918,2540,2676,2638,3102,2641,990,1800,2252,2490,372,2917,796,2235,3056,215,728,1988,2107,2812,288,523,1559,274,2076,777,185,2326,963,278,1061,2772,1007,1622,773,1498,2029,1726,539,1285,1478,2006,1352,3096,706,1187,937,350,1444,1273,1418,2168,835,795,1781,510,1611,2448,1646,2065,811,422,1864,2356,1803,670,2681,1592,314,2377,2795,1440,482,905,87,491,1400,2133,2080,2486,2003,1702,138,91,1446,199,724,1067,2774,485,3128,1415,1449,2840,3142,506,1356,1060,2274,1068,109,672,628,601,2821,853,645,2429,1650,973,2660,2963,627,2106,2985,204,547,1670,694,2148,2121,1508,1907,2866,2534,1795,1459,331,2276,1241,2544,1497,2609,2551,59,1965,2104,2763,563,1669,685,158,2487,1006,2981,2593,522,952,1445,684,3115,2352,1338,2059,21,1333,3057,153,1287,752,2664,1359,1265,2366,1065,2311,2586,34,614,597,255,1706,1070,275,2764,1096,967,986,1742,1582,1782,2554,13,1696,1211,2288,3124,322,2721,2317,27,1510,1804,1629,841,516,1713,186,3087,1204,801,1757,589,2242,760,2100,74,850,1069,92,17,2068,876,1314,1932,930,1797,1059,2341,1470,2550,44,2079,213,2633,2153,1102,395],"6":[0,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,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,2156,2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637,2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680,2681,2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697,2698,2699,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2729,2730,2731,2732,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822,2823,2824,2825,2826,2827,2828,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858,2859,2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875,2876,2877,2878,2879,2880,2881,2882,2883,2884,2885,2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901,2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2937,2938,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3166,3167,3168,3169,3170,3171,3172,3173,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3186,3187,3188,3189,3190,3191,3192,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3267,3268,3269,3270,3271,3272,3273,3274,3275,3276,3277,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3288,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3321,3322,3323,3324,3325,3326,3327,3328,3329,3330,3331,3332,3333,3334,3335,3336,3337,3338,3339,3340,3341,3342,3343,3344,3345,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3413,3414,3415,3416,3417,3418,3419,3420,3421,3422,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511,3512,3513,3514,3515,3516,3517,3518,3519,3520,3521,3522,3523,3524,3525,3526,3527,3528,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548,3549,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3581,3582,3583,3584,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,3643,3644,3645,3646,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713,3714,3715,3716,3717,3718,3719,3720,3721,3722,3723,3724,3725,3726,3727,3728,3729,3730,3731,3732,3733,3734,3735,3736,3737,3738,3739,3740,3741,3742,3743,3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3781,3782,3783,3784,3785,3786,3787,3788,3789,3790,3791,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3802,3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820,3821,3822,3823,3824,3825,3826,3827,3828,3829,3830,3831,3832,3833,3834,3835,3836,3837,3838,3839,3840,3841,3842,3843,3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,3870,3871,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895,3896,3897,3898,3899,3900,3901,3902,3903,3904,3905,3906,3907,3908,3909,3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3992,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4057,4058,4059,4060,4061,4062,4063,4064,4065,4066,4067,4068,4069,4070,4071,4072,4073,4074,4075,4076,4077,4078,4079,4080,4081,4082,4083,4084,4085,4086,4087,4088,4089,4090,4091,4092,4093,4094,4095,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254,4255,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4294,4295,4296,4297,4298,4299,4300,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4347,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404]}} diff --git a/site/assets/scripts/controllers/keyboard.js b/site/assets/scripts/controllers/keyboard.js index 8912158..075dc03 100644 --- a/site/assets/scripts/controllers/keyboard.js +++ b/site/assets/scripts/controllers/keyboard.js @@ -32,6 +32,16 @@ export default class extends Controller { let key = ev.target.dataset["key"]; this.playfieldOutlet.tappedKey(key); } + + tapEnter(ev) { + ev.preventDefault(); + this.playfieldOutlet.enterGuess(); + } + + tapBackspace(ev) { + ev.preventDefault(); + this.playfieldOutlet.tappedBackspace(); + } resetKeyColors(ev) { for (let keyElement of this.keyTargets) { diff --git a/site/assets/scripts/controllers/overlay.js b/site/assets/scripts/controllers/overlay.js new file mode 100644 index 0000000..4753a20 --- /dev/null +++ b/site/assets/scripts/controllers/overlay.js @@ -0,0 +1,18 @@ +import { Controller } from "https://unpkg.com/@hotwired/stimulus@v3.2.2/dist/stimulus.js" + +export default class extends Controller { + static targets = ["message"]; + + showMessage(msg) { + this.messageTarget.innerText = msg; + this.element.classList.add("show"); + + if (this._waitTimer) { + clearTimeout(this._waitTimer); + } + + this._waitTimer = setTimeout(() => { + this.element.classList.remove("show"); + }, 3000); + } +} \ No newline at end of file diff --git a/site/assets/scripts/controllers/playfield.js b/site/assets/scripts/controllers/playfield.js index 62b39df..855c915 100644 --- a/site/assets/scripts/controllers/playfield.js +++ b/site/assets/scripts/controllers/playfield.js @@ -5,7 +5,8 @@ import { WordSource } from "../models/words.js"; export default class extends Controller { - static targets = ["row"]; + static targets = ["row", "playfield", "topMessage", "nextPuzzleButton"]; + static outlets = ["overlay"]; async connect() { this._wordSource = new WordSource(); @@ -64,20 +65,30 @@ export default class extends Controller { switch (results.guessResult) { case GUESS_RESULT.FOUL: - console.log("not a word!"); + this.overlayOutlet.showMessage("Not a valid word."); + rowElem.replaceWith(this._buildPlayfieldRow(this._gameController.wordLength())); this._activeLetter = 0; break; - case GUESS_RESULT.MISS: - console.log("try again!"); - + case GUESS_RESULT.MISS: this._colorizeRow(rowElem, results); + this._activeRowIndex += 1; - this._activeLetter = 0; + if (this._activeRowIndex >= this._gameController.guesses()) { + this.topMessageTarget.innerText = this._gameController.currentWord().toUpperCase(); + this.nextPuzzleButtonTarget.classList.remove("hide"); + } else { + this._activeLetter = 0; + } + break; case GUESS_RESULT.WIN: - console.log("CORRECT!"); - + this._colorizeRow(rowElem, results); + + this.topMessageTarget.innerText = "Hooray! You did it."; + this.nextPuzzleButtonTarget.classList.remove("hide"); + + /* if (this._gameController.nextWord()) { this._buildPlayfield(); } else { @@ -85,9 +96,19 @@ export default class extends Controller { this._activeRowIndex = -1; this._colorizeRow(rowElem, results); } + */ break; } } + + async loadNextPuzzle(ev) { + ev.preventDefault(); + if (await this._gameController.nextWord()) { + this._buildPlayfield(); + } else { + this.overlayOutlet.showMessage("No more words available."); + } + } _buildPlayfield() { let rows = this._gameController.guesses(); @@ -101,7 +122,10 @@ export default class extends Controller { newRows.push(this._buildPlayfieldRow(wordLength)); } - this.element.replaceChildren.apply(this.element, newRows); + this.playfieldTarget.replaceChildren.apply(this.playfieldTarget, newRows); + + this.topMessageTarget.innerHTML = " " + this.nextPuzzleButtonTarget.classList.add("hide"); window.dispatchEvent(new CustomEvent("resetKeyColors")); } diff --git a/site/assets/scripts/main.js b/site/assets/scripts/main.js index 99a8c94..a3b3ce6 100644 --- a/site/assets/scripts/main.js +++ b/site/assets/scripts/main.js @@ -2,9 +2,11 @@ import { Application, Controller } from "https://unpkg.com/@hotwired/stimulus@v3 import PlayfieldController from "./controllers/playfield.js"; import KeyboardController from "./controllers/keyboard.js"; +import OverlayController from "./controllers/overlay.js"; window.Stimulus = Application.start(); Stimulus.register("playfield", PlayfieldController); -Stimulus.register("keyboard", KeyboardController); \ No newline at end of file +Stimulus.register("keyboard", KeyboardController); +Stimulus.register("overlay", OverlayController); \ No newline at end of file diff --git a/site/assets/scripts/models/gamecontroller.js b/site/assets/scripts/models/gamecontroller.js index 45d3ae0..98fbb00 100644 --- a/site/assets/scripts/models/gamecontroller.js +++ b/site/assets/scripts/models/gamecontroller.js @@ -31,6 +31,11 @@ export class GameController { this._checkHasStarted(); return this._guesses; } + + currentWord() { + this._checkHasStarted(); + return this._currentWord; + } async nextWord() { this._currentWord = await this._wordSource.getCurrentWord(); diff --git a/site/assets/scripts/models/words.js b/site/assets/scripts/models/words.js index d844535..2800e5c 100644 --- a/site/assets/scripts/models/words.js +++ b/site/assets/scripts/models/words.js @@ -20,6 +20,7 @@ function binSearch(list, word) { export class WordSource { constructor() { this._wordData = null; + this._pattern = null; this._currentWord = null; } @@ -38,7 +39,9 @@ export class WordSource { } let words = await this._fetchAllWordsIfNecessary(); - this._currentWord = words.words["4"][7]; + let idx = this._pattern.index["4"][7]; + + this._currentWord = words.words["4"][idx]; return this._currentWord; } @@ -57,8 +60,8 @@ export class WordSource { return this._wordData; } - let res = await fetch("/assets/data/words.json"); - this._wordData = await res.json(); + this._wordData = await (await fetch("/assets/data/words.json")).json(); + this._pattern = await (await fetch("/assets/data/shuffle_pattern.json")).json(); return this._wordData; } } \ No newline at end of file diff --git a/site/assets/styles/main.css b/site/assets/styles/main.css index e984906..b609f88 100644 --- a/site/assets/styles/main.css +++ b/site/assets/styles/main.css @@ -1,15 +1,90 @@ +:root { + --color-no-letter-bg: #666; + --color-no-letter-fg: #fff; + + --color-has-letter-bg: #dd4; + --color-has-letter-fg: #000; + + --color-right-letter-bg: #4b4; + --color-right-letter-fg: #fff; +} + +body { + height: 100vh; + display: flex; + flex-direction: column; +} + +main { + flex-grow: 1; + flex-shrink: 1; + + display: flex; + flex-direction: column; +} + +main > div:first-child { + flex-grow: 1; +} + +div.playfield { + text-align: center; + font-size: 1.5rem; +} + +div.playfield div[data-playfield-target="topMessage"] { + font-weight: bold; +} + +div.playfield div[data-playfield-target="playfield"] { + margin-block: 1rem; + font-size: 3rem; +} + +div.keyboard > div { + display: flex; + justify-content: space-around; +} + +div.keyboard button { + width: 9vw; + border-radius: 2px; + height: 4rem; + text-transform: uppercase; + + background: #bbb; + color: #000; + border: solid 1px #444; +} + +div.keyboard > div:nth-child(2) { + margin-inline: 2vw; +} + +div.keyboard > div:nth-child(3) { + margin-inline: 4vw; +} + + button[data-keyboard-target="key"].right-pos { - background: green; + background: var(--color-right-letter-bg); + color: var(--color-right-letter-fg); } button[data-keyboard-target="key"].right-char { - background: yellow; + background: var(--color-has-letter-bg); + color: var(--color-has-letter-fg); } button[data-keyboard-target="key"].miss { - background: grey; + background: var(--color-no-letter-bg); + color: var(--color-no-letter-fg); } +div.playfield div.row { + display: flex; + justify-content: center; +} div.playfield div.row span { display: inline-block; @@ -17,16 +92,54 @@ div.playfield div.row span { height: 1.1em; width: 1.1em; + line-height: 1.1em; + margin: 5px; } div.playfield div.row span.right-pos { - background: green; + background: var(--color-right-letter-bg); + color: var(--color-right-letter-fg); } div.playfield div.row span.right-char { - background: yellow; + background: var(--color-has-letter-bg); + color: var(--color-has-letter-fg); } div.playfield div.row span.miss { - background: grey; + background: var(--color-no-letter-bg); + color: var(--color-no-letter-fg); +} + +div.overlay { + position: fixed; + bottom: 25%; + left: 10%; + right: 10%; + z-index: 10; + + display: none; + justify-content: center; +} + +div.overlay.show { + display: flex; +} + +div.overlay-message { + font-size: 2rem; + line-height: 2.2rem; + + text-align: center; + + color: white; + background-color: rgba(0, 0, 0, 70%); + border-radius: 5px; + + padding-block: 12px; + padding-inline: 20px; +} + +.hide { + display: none; } \ No newline at end of file diff --git a/site/index.html b/site/index.html index 0ddbaee..f328e35 100644 --- a/site/index.html +++ b/site/index.html @@ -3,6 +3,7 @@ + Wordle Clone @@ -12,11 +13,15 @@
-
+
+
 
+
+ +
- -
l
+ @@ -54,11 +60,10 @@ - - +
- +
+
+
I am the overlay
+
+ \ No newline at end of file