commit 888c6bf2daa3b02b19bc2a9e3da4dfd926693aa8 Author: Adrian Victor Date: Wed Apr 29 20:43:53 2026 -0300 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3609bb4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +.DS_Store + +# Generated by package manager +node_modules/ + +# Generated by Cordova +/plugins/ +/platforms/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..61894d6 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Impostor diff --git a/config.xml b/config.xml new file mode 100644 index 0000000..43001ec --- /dev/null +++ b/config.xml @@ -0,0 +1,27 @@ + + + Impostor + + A game of word guessing where an impostor is trying to get along. + + + Adrian Victor + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..5078368 Binary files /dev/null and b/icon.png differ diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..7144fab Binary files /dev/null and b/logo.png differ diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000..8139102 --- /dev/null +++ b/logo.svg @@ -0,0 +1,17 @@ + + + Layer 1 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6dc2446 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,804 @@ +{ + "name": "org.adrianvictor.impostor", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "org.adrianvictor.impostor", + "version": "1.0.0", + "license": "Apache-2.0", + "devDependencies": { + "cordova-android": "^15.0.0" + } + }, + "node_modules/@netflix/nerror": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", + "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "extsprintf": "^1.4.0", + "lodash": "^4.17.15" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, + "node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/android-versions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-2.1.1.tgz", + "integrity": "sha512-dYeO3KHDO81WvEwZFK+OF0dJl/ESvxV3QZE/qo/AAnG/uijco6DOXJJla3CdoC8Eg53YBlbRIyobRGYqIAGw8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.2" + } + }, + "node_modules/ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cordova-android": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-15.0.0.tgz", + "integrity": "sha512-EpFSKUtBLJ7bTpuVD7NeC6toAooi5PI6VIR2jd8Ut5PJu7HSR5tPRwS87Q1DS03RSyDTlroB64JPUWC0pmAhnw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "android-versions": "^2.1.1", + "cordova-common": "^6.0.0", + "dedent": "^1.7.1", + "execa": "^5.1.1", + "fast-glob": "^3.3.3", + "is-path-inside": "^3.0.3", + "nopt": "^9.0.0", + "properties-parser": "^0.6.0", + "semver": "^7.7.4", + "string-argv": "^0.3.2", + "untildify": "^4.0.0", + "which": "^6.0.1" + }, + "engines": { + "node": ">=20.17.0 || >=22.9.0" + } + }, + "node_modules/cordova-common": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", + "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@netflix/nerror": "^1.1.3", + "ansi": "^0.3.1", + "bplist-parser": "^0.3.2", + "elementtree": "^0.1.7", + "endent": "^2.1.0", + "fast-glob": "^3.3.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=20.9.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "sax": "1.1.4" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/endent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", + "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", + "dev": true, + "license": "MIT", + "dependencies": { + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.5" + } + }, + "node_modules/endent/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/nopt": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^4.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/objectorarray": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", + "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", + "dev": true, + "license": "ISC" + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/plist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz", + "integrity": "sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.9.10", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/properties-parser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.6.0.tgz", + "integrity": "sha512-qvr2cSmoA0dln0MARAKwBzPkkXn7FqwX+RVVNpMdMJc7rt9mqO2cXwluxtux9fHrLhjnPFaQkS8BM0kFrTCnSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.3.1" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==", + "dev": true, + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e9bde4e --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "org.adrianvictor.impostor", + "displayName": "Impostor", + "version": "1.0.0", + "description": "A game of word guessing where an impostor is trying to get along.", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "ecosystem:cordova" + ], + "author": "Adrian Victor", + "license": "Apache-2.0", + "cordova": { + "platforms": [ + "android" + ] + }, + "devDependencies": { + "cordova-android": "^15.0.0" + } +} diff --git a/res/icon/android/hdpi.png b/res/icon/android/hdpi.png new file mode 100644 index 0000000..d5334f3 Binary files /dev/null and b/res/icon/android/hdpi.png differ diff --git a/res/icon/android/ldpi.png b/res/icon/android/ldpi.png new file mode 100644 index 0000000..619467a Binary files /dev/null and b/res/icon/android/ldpi.png differ diff --git a/res/icon/android/mdpi.png b/res/icon/android/mdpi.png new file mode 100644 index 0000000..6a13e39 Binary files /dev/null and b/res/icon/android/mdpi.png differ diff --git a/res/icon/android/xhdpi.png b/res/icon/android/xhdpi.png new file mode 100644 index 0000000..b05534d Binary files /dev/null and b/res/icon/android/xhdpi.png differ diff --git a/res/icon/android/xxhdpi.png b/res/icon/android/xxhdpi.png new file mode 100644 index 0000000..e73971c Binary files /dev/null and b/res/icon/android/xxhdpi.png differ diff --git a/res/icon/android/xxxhdpi.png b/res/icon/android/xxxhdpi.png new file mode 100644 index 0000000..2788b9b Binary files /dev/null and b/res/icon/android/xxxhdpi.png differ diff --git a/res/screen/android/splash-port-hdpi.png b/res/screen/android/splash-port-hdpi.png new file mode 100644 index 0000000..1fbaaf2 Binary files /dev/null and b/res/screen/android/splash-port-hdpi.png differ diff --git a/res/screen/android/splash-port-ldpi.png b/res/screen/android/splash-port-ldpi.png new file mode 100644 index 0000000..e53f412 Binary files /dev/null and b/res/screen/android/splash-port-ldpi.png differ diff --git a/res/screen/android/splash-port-mdpi.png b/res/screen/android/splash-port-mdpi.png new file mode 100644 index 0000000..4cdaa05 Binary files /dev/null and b/res/screen/android/splash-port-mdpi.png differ diff --git a/res/screen/android/splash-port-xhdpi.png b/res/screen/android/splash-port-xhdpi.png new file mode 100644 index 0000000..1ed8cf5 Binary files /dev/null and b/res/screen/android/splash-port-xhdpi.png differ diff --git a/res/screen/android/splash-port-xxhdpi.png b/res/screen/android/splash-port-xxhdpi.png new file mode 100644 index 0000000..984d390 Binary files /dev/null and b/res/screen/android/splash-port-xxhdpi.png differ diff --git a/res/screen/android/splash-port-xxxhdpi.png b/res/screen/android/splash-port-xxxhdpi.png new file mode 100644 index 0000000..eace6f8 Binary files /dev/null and b/res/screen/android/splash-port-xxxhdpi.png differ diff --git a/res/screen/android/splash-square.png b/res/screen/android/splash-square.png new file mode 100644 index 0000000..9fef3ed Binary files /dev/null and b/res/screen/android/splash-square.png differ diff --git a/splash.png b/splash.png new file mode 100644 index 0000000..0cf900b Binary files /dev/null and b/splash.png differ diff --git a/stores/googleplayfeature.png b/stores/googleplayfeature.png new file mode 100644 index 0000000..92c514e Binary files /dev/null and b/stores/googleplayfeature.png differ diff --git a/stores/googleplayicon.png b/stores/googleplayicon.png new file mode 100644 index 0000000..7bc97fa Binary files /dev/null and b/stores/googleplayicon.png differ diff --git a/stores/icon-logo.png b/stores/icon-logo.png new file mode 100644 index 0000000..7144fab Binary files /dev/null and b/stores/icon-logo.png differ diff --git a/www/impostor.jpg b/www/impostor.jpg new file mode 100644 index 0000000..2b1b9b3 Binary files /dev/null and b/www/impostor.jpg differ diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..152f3d9 --- /dev/null +++ b/www/index.html @@ -0,0 +1,44 @@ + + + + + + Impostor + + + + + +
+ +

Impostor

+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+

Dicas

+ +
+
+ +
+ +
+ +
+ +
+ + diff --git a/www/logo.png b/www/logo.png new file mode 100644 index 0000000..27ca900 Binary files /dev/null and b/www/logo.png differ diff --git a/www/script.js b/www/script.js new file mode 100644 index 0000000..fecea56 --- /dev/null +++ b/www/script.js @@ -0,0 +1,128 @@ +const nPlayerButton = document.querySelector("#newPlayerButton"); +const playersList = document.querySelector("#playersList"); +const startButton = document.querySelector("#startGame"); +const logArea = document.querySelector("#gameLog"); +const body = document.querySelector("body"); +const hintCheckbox = document.querySelector("#hintCheck"); + +let stage = 0; +let currentPlayer = 0; +let impostor; +let allPlayers; +let currentName; +let secret; +let enableHint; + +nPlayerButton.addEventListener('click', () => { + const holder = document.createElement("div"); + const newPlayer = document.createElement("input"); + const killButton = document.createElement("button"); + holder.classList.add("playerHolder"); + killButton.textContent = "X"; + killButton.addEventListener('click', () => { + holder.remove(); + }); + holder.appendChild(newPlayer); + holder.appendChild(killButton); + playersList.appendChild(holder); +}); + +startButton.addEventListener('click', () => { + switch (stage) { + case 0: + allPlayers = Array.from(document.querySelectorAll("#playersList input")); + if (allPlayers.some(player => !player.value)) { + alert("Por favor, preencha o nome de todos os jogadores."); + return; + } + body.classList.add("game"); + enableHint = hintCheckbox.checked; + clear("Prepare-se para iniciar o jogo."); + impostor = choose(); + secret = getWordWithHint().then(result => { + secret = result; + }); + stage = -1; + break; + + case 1: + if (currentName == impostor) { + clear(currentName + " é impostor" + (enableHint ? (", sua dica é " + secret.hint + ".") : ".")); + logClass('impostor'); + } else { + clear(currentName + " é civil, a palavra é " + secret.word); + logClass('civil'); + } + + currentPlayer += 1; + if (currentPlayer == allPlayers.length + ) { + stage += 1; + } else { + stage = -1; + } + break; + + case -1: + currentName = allPlayers[currentPlayer].value; + clear(` +

Entregue o dispositivo para:
${currentName}
para continuar.

+ `); + stage = 1; + break; + + case 2: { + clear("O jogo começou! Cada um deve falar uma palavra relacionada ao tema.\nProssiga após a votação."); + stage += 1; + break; + } + + case 3: { + clear(`O impostor era ${impostor}; a palavra era ${secret.word}; a dica ${secret.hint}.`); + stage += 1; + break; + } + + default: + body.classList.remove("game"); + stage = 0; + currentPlayer = 0; + break; + } +}); + +function choose() { + const randomIndex = Math.floor(Math.random() * allPlayers.length); + return allPlayers[randomIndex].value; +} + +function log(text) { + logArea.innerHTML = logArea.innerHtml + "
" + text; +} + +function clear(text) { + logArea.classList.forEach(item => { + logArea.classList.remove(item); + }) + logArea.innerHTML = text; +} + +function logClass(className) { + logArea.classList.toggle(className); +} + +async function getWordWithHint() { + try { + const response = await fetch('words.json'); + const data = await response.json(); + const randomWordObj = data[Math.floor(Math.random() * data.length)]; + const randomHint = randomWordObj.hints[Math.floor(Math.random() * randomWordObj.hints.length)]; + + return { + word: randomWordObj.word, + hint: randomHint + }; + } catch (error) { + console.error('Error loading words:', error); + } +} \ No newline at end of file diff --git a/www/style.css b/www/style.css new file mode 100644 index 0000000..82b0f6c --- /dev/null +++ b/www/style.css @@ -0,0 +1,202 @@ +:root { + --background: black; + --foreground: white; + --saBORbackground: rgba(54, 54, 54, 0.5); + --saBORforeground: darkgrey; + --impostorColor: rgb(60, 0, 0); + --civilColor: rgb(0, 50, 0); +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background-color: var(--background); + color: var(--foreground); + line-height: 1.6; + display: flex; + flex-direction: column; + padding: 2em; + gap: 1em; + height: 100vh; + width: 30vw; + margin: auto; +} + +header { + text-align: center; +} + +header img { + height: 8em; +} + +h1 { + font-size: 2.5rem; + font-family: monospace; +} + +main { + text-align: center; + margin-top: 40px; +} + +p { + font-size: 1.2rem; + margin-bottom: 20px; +} + +#playersList input { + width: 100%; +} + +button, input, textarea { + padding: .6em; + border: none; + border-radius: 5px; +} + +input, #gameLog { + background-color: var(--saBORbackground); + color: var(--foreground); +} + +#gameLog { + font-size: 1.4em; + border: medium solid var(--foreground); + padding: 1em; + border-radius: 5px; +} + +input { + transition: .2s; + border: medium solid var(--saBORforeground); +} + +input:focus { + border-color: var(--foreground); + background-color: var(--foreground); + color: var(--background); + outline: none; +} + +button { + transition: .2s; + background-color: var(--foreground); + color: var(--background); + /* text-shadow: 0px 0px 2px rgba(255, 255, 255, 1), 0px 0px 2px rgba(255, 255, 255, 1); */ +} + +/* button:hover { + background-color: var(--foreground); + color: var(--background); +} */ + +.playerHolder { + margin-bottom: 1em; + display: flex; + gap: .6em; + + button { + background-color: transparent; + font-family: monospace; + color: white; + text-shadow: none; + } +} + +input:focus { + border-color: var(--foreground); +} + +#newPlayerButton { + width: 100%; + margin-bottom: 1em; +} + +#startGame { + margin-top: auto; + margin-left: auto; +} + +#gameLog { + display: none; + margin: auto 0; + text-align: center; + transition: .4s; + + p { + margin: 0; + } +} + +#gameLog.impostor { + background-color: var(--impostorColor); +} + +#gameLog.civil { + background-color: var(--civilColor); +} + +body.game #playlistHolder { + display: none; +} + +body.game #gameLog { + display: unset; +} + +#bottomBar { + margin-top: auto; + display: flex; + gap: 1em; +} + +#hintCheckHolder p { + margin: auto 0 auto 0; +} + +#hintCheckHolder { + display: flex; + gap: .4em; +} + +.playerName { + font-size: x-large; + font-weight: bolder; +} + +.rainbowText { + background: linear-gradient(to right, var(--foreground), var(--background), var(--foreground), var(--impostorColor), var(--foreground), var(--civilColor)); -webkit-background-clip: text; + background-clip: text; + color: transparent; + animation: rainbow_animation 10s ease-in-out infinite; + background-size: 400% 100%; + text-shadow: 0px 0px 10px rgba(255, 255, 255, 0.2); +} + +@keyframes rainbow_animation { + 0%,100% { + background-position: 0 0; + } + + 50% { + background-position: 100% 0; + } +} + +@media (max-width: 1280px) { + body { + width: 60vw; + } +} + +@media (max-width: 720px) { + body { + width: 96vw; + } +} \ No newline at end of file diff --git a/www/words.json b/www/words.json new file mode 100644 index 0000000..f314338 --- /dev/null +++ b/www/words.json @@ -0,0 +1,1022 @@ +[ + { + "word": "elefante", + "hints": ["tromba", "cinzento", "pesado"] + }, + { + "word": "oceano", + "hints": ["água", "ondas", "profundo"] + }, + { + "word": "telescópio", + "hints": ["estrelas", "astronomia", "lentes"] + }, + { + "word": "livro", + "hints": ["páginas", "leitura", "história"] + }, + { + "word": "sol", + "hints": ["brilho", "quente", "amarelo"] + }, + { + "word": "lua", + "hints": ["noite", "prata", "redonda"] + }, + { + "word": "montanha", + "hints": ["altura", "pedra", "topo"] + }, + { + "word": "floresta", + "hints": ["árvores", "verde", "animais"] + }, + { + "word": "pássaro", + "hints": ["asas", "voo", "penas"] + }, + { + "word": "carro", + "hints": ["rodas", "motor", "transporte"] + }, + { + "word": "casa", + "hints": ["teto", "janelas", "porta"] + }, + { + "word": "coração", + "hints": ["peito", "vida", "amor"] + }, + { + "word": "computador", + "hints": ["teclado", "tela", "tecnologia"] + }, + { + "word": "música", + "hints": ["som", "ritmo", "notas"] + }, + { + "word": "espelho", + "hints": ["reflexo", "vidro", "imagem"] + }, + { + "word": "avião", + "hints": ["voar", "asas", "céu"] + }, + { + "word": "barco", + "hints": ["água", "navegar", "mar"] + }, + { + "word": "bicicleta", + "hints": ["pedal", "duas rodas", "equilíbrio"] + }, + { + "word": "helicóptero", + "hints": ["hélice", "voar", "resgate"] + }, + { + "word": "trem", + "hints": ["trilhos", "vagões", "transporte"] + }, + { + "word": "metrô", + "hints": ["subterrâneo", "rápido", "cidade"] + }, + { + "word": "ponte", + "hints": ["ligação", "rio", "travessia"] + }, + { + "word": "estrada", + "hints": ["asfalto", "carros", "viagem"] + }, + { + "word": "mapa", + "hints": ["direção", "localização", "caminho"] + }, + { + "word": "bússola", + "hints": ["norte", "orientação", "agulha"] + }, + { + "word": "ilha", + "hints": ["mar", "terra", "isolada"] + }, + { + "word": "deserto", + "hints": ["areia", "calor", "seco"] + }, + { + "word": "vulcão", + "hints": ["lava", "erupção", "montanha"] + }, + { + "word": "cachoeira", + "hints": ["queda", "água", "altura"] + }, + { + "word": "rio", + "hints": ["corrente", "água", "fluxo"] + }, + { + "word": "lago", + "hints": ["água", "parado", "natureza"] + }, + { + "word": "praia", + "hints": ["areia", "mar", "sol"] + }, + { + "word": "areia", + "hints": ["grãos", "praia", "fino"] + }, + { + "word": "pedra", + "hints": ["dura", "mineral", "chão"] + }, + { + "word": "metal", + "hints": ["duro", "brilho", "material"] + }, + { + "word": "ouro", + "hints": ["rico", "amarelo", "metal"] + }, + { + "word": "prata", + "hints": ["brilho", "cinza", "metal"] + }, + { + "word": "diamante", + "hints": ["duro", "brilhante", "caro"] + }, + { + "word": "vidro", + "hints": ["transparente", "quebrar", "janela"] + }, + { + "word": "plástico", + "hints": ["leve", "flexível", "artificial"] + }, + { + "word": "papelão", + "hints": ["caixa", "leve", "reciclável"] + }, + { + "word": "borracha", + "hints": ["flexível", "apagar", "macia"] + }, + { + "word": "corda", + "hints": ["amarrar", "fibra", "comprida"] + }, + { + "word": "rede", + "hints": ["descanso", "balançar", "tecido"] + }, + { + "word": "escova", + "hints": ["cerdas", "limpar", "cabelo"] + }, + { + "word": "pente", + "hints": ["cabelo", "dentes", "arrumar"] + }, + { + "word": "chuveiro", + "hints": ["água", "banho", "queda"] + }, + { + "word": "banheira", + "hints": ["água", "imersão", "banho"] + }, + { + "word": "sabão", + "hints": ["limpeza", "espuma", "cheiro"] + }, + { + "word": "toalha", + "hints": ["secar", "tecido", "banho"] + }, + { + "word": "escova-de-dentes", + "hints": ["dentes", "higiene", "cerdas"] + }, + { + "word": "pasta-de-dente", + "hints": ["menta", "dentes", "creme"] + }, + { + "word": "perfume", + "hints": ["cheiro", "fragrância", "líquido"] + }, + { + "word": "desodorante", + "hints": ["odor", "axila", "proteção"] + }, + { + "word": "espuma", + "hints": ["bolhas", "leve", "sabão"] + }, + { + "word": "astronauta", + "hints": ["espaço", "capacete", "missão"] + }, + { + "word": "foguete", + "hints": ["lançamento", "espaço", "propulsão"] + }, + { + "word": "satélite", + "hints": ["órbita", "sinal", "espaço"] + }, + { + "word": "robô", + "hints": ["máquina", "automático", "tecnologia"] + }, + { + "word": "drone", + "hints": ["voar", "controle", "câmera"] + }, + { + "word": "internet", + "hints": ["rede", "conexão", "dados"] + }, + { + "word": "senha", + "hints": ["segurança", "acesso", "secreto"] + }, + { + "word": "arquivo", + "hints": ["dados", "documento", "armazenar"] + }, + { + "word": "pasta", + "hints": ["arquivos", "organizar", "computador"] + }, + { + "word": "nuvem-digital", + "hints": ["armazenamento", "online", "dados"] + }, + { + "word": "teclado", + "hints": ["digitar", "teclas", "computador"] + }, + { + "word": "mouse", + "hints": ["cursor", "clique", "computador"] + }, + { + "word": "monitor", + "hints": ["tela", "imagem", "computador"] + }, + { + "word": "impressora", + "hints": ["papel", "tinta", "imprimir"] + }, + { + "word": "scanner", + "hints": ["digitalizar", "imagem", "documento"] + }, + { + "word": "controle-remoto", + "hints": ["botões", "distância", "televisão"] + }, + { + "word": "alto-falante", + "hints": ["som", "volume", "áudio"] + }, + { + "word": "fone-de-ouvido", + "hints": ["ouvido", "som", "música"] + }, + { + "word": "microfone", + "hints": ["voz", "captar", "som"] + }, + { + "word": "bateria", + "hints": ["energia", "carga", "elétrico"] + }, + { + "word": "carregador", + "hints": ["energia", "cabo", "carregar"] + }, + { + "word": "tomada", + "hints": ["energia", "parede", "plugue"] + }, + { + "word": "interruptor", + "hints": ["ligar", "luz", "parede"] + }, + { + "word": "fio", + "hints": ["cabo", "energia", "ligação"] + }, + { + "word": "antena", + "hints": ["sinal", "rádio", "captação"] + }, + { + "word": "servidor", + "hints": ["rede", "dados", "computador"] + }, + { + "word": "programa", + "hints": ["software", "executar", "código"] + }, + { + "word": "aplicativo", + "hints": ["celular", "função", "software"] + }, + { + "word": "jogo", + "hints": ["diversão", "regras", "competição"] + }, + { + "word": "controle", + "hints": ["botões", "jogo", "comando"] + }, + { + "word": "personagem", + "hints": ["história", "figura", "papel"] + }, + { + "word": "fase", + "hints": ["nível", "jogo", "progresso"] + }, + { + "word": "pontuação", + "hints": ["pontos", "resultado", "jogo"] + }, + { + "word": "vitória", + "hints": ["ganhar", "sucesso", "fim"] + }, + { + "word": "derrota", + "hints": ["perder", "falha", "fim"] + }, + { + "word": "desafio", + "hints": ["dificuldade", "teste", "objetivo"] + }, + { + "word": "treino", + "hints": ["prática", "melhora", "repetição"] + }, + { + "word": "corrida", + "hints": ["velocidade", "pés", "competição"] + }, + { + "word": "salto", + "hints": ["pular", "altura", "movimento"] + }, + { + "word": "força", + "hints": ["energia", "músculo", "poder"] + }, + { + "word": "amizade", + "hints": ["companheirismo", "confiança", "laço"] + }, + { + "word": "felicidade", + "hints": ["alegria", "sorriso", "bem-estar"] + }, + { + "word": "tristeza", + "hints": ["choro", "emoção", "baixo"] + }, + { + "word": "raiva", + "hints": ["irritação", "forte", "emoção"] + }, + { + "word": "medo", + "hints": ["susto", "insegurança", "escuro"] + }, + { + "word": "coragem", + "hints": ["bravura", "enfrentar", "força"] + }, + { + "word": "paz", + "hints": ["calma", "tranquilo", "silêncio"] + }, + { + "word": "guerra", + "hints": ["conflito", "luta", "violência"] + }, + { + "word": "tempo", + "hints": ["relógio", "passar", "duração"] + }, + { + "word": "história", + "hints": ["passado", "relato", "evento"] + }, + { + "word": "futuro", + "hints": ["amanhã", "vir", "tempo"] + }, + { + "word": "passado", + "hints": ["antes", "memória", "tempo"] + }, + { + "word": "presente", + "hints": ["agora", "momento", "tempo"] + }, + { + "word": "ideia", + "hints": ["pensamento", "mente", "criação"] + }, + { + "word": "sonho", + "hints": ["dormir", "imaginação", "desejo"] + }, + { + "word": "memória", + "hints": ["lembrança", "mente", "passado"] + }, + { + "word": "verdade", + "hints": ["real", "fato", "correto"] + }, + { + "word": "mentira", + "hints": ["falso", "enganar", "não real"] + }, + { + "word": "justiça", + "hints": ["lei", "equilíbrio", "correto"] + }, + { + "word": "liberdade", + "hints": ["livre", "escolha", "direito"] + }, + { + "word": "respeito", + "hints": ["consideração", "valor", "outro"] + }, + { + "word": "educação", + "hints": ["ensino", "aprendizado", "escola"] + }, + { + "word": "escola", + "hints": ["alunos", "professor", "ensino"] + }, + { + "word": "professor", + "hints": ["ensinar", "aula", "escola"] + }, + { + "word": "aluno", + "hints": ["aprender", "escola", "estudar"] + }, + { + "word": "prova", + "hints": ["teste", "nota", "avaliação"] + }, + { + "word": "nota", + "hints": ["resultado", "escola", "avaliação"] + }, + { + "word": "lição", + "hints": ["tarefa", "casa", "estudo"] + }, + { + "word": "curso", + "hints": ["aulas", "aprendizado", "treinamento"] + }, + { + "word": "universidade", + "hints": ["ensino", "superior", "campus"] + }, + { + "word": "biblioteca", + "hints": ["livros", "leitura", "silêncio"] + }, + { + "word": "laboratório", + "hints": ["experimentos", "ciência", "teste"] + }, + { + "word": "experimento", + "hints": ["teste", "ciência", "resultado"] + }, + { + "word": "teoria", + "hints": ["ideia", "explicação", "ciência"] + }, + { + "word": "prática", + "hints": ["ação", "treino", "real"] + }, + { + "word": "energia", + "hints": ["força", "movimento", "potência"] + }, + { + "word": "luz", + "hints": ["brilho", "claridade", "visão"] + }, + { + "word": "som", + "hints": ["ouvir", "onda", "ruído"] + }, + { + "word": "calor", + "hints": ["quente", "temperatura", "energia"] + }, + { + "word": "frio", + "hints": ["gelado", "baixa", "temperatura"] + }, + { + "word": "hospital", + "hints": ["médicos", "doentes", "tratamento"] + }, + { + "word": "médico", + "hints": ["saúde", "diagnóstico", "hospital"] + }, + { + "word": "enfermeiro", + "hints": ["cuidar", "hospital", "paciente"] + }, + { + "word": "remédio", + "hints": ["cura", "farmácia", "doença"] + }, + { + "word": "farmácia", + "hints": ["remédios", "compra", "saúde"] + }, + { + "word": "vacina", + "hints": ["prevenção", "doença", "injeção"] + }, + { + "word": "febre", + "hints": ["calor", "doença", "temperatura"] + }, + { + "word": "dor", + "hints": ["sofrimento", "corpo", "incômodo"] + }, + { + "word": "corte", + "hints": ["ferida", "sangue", "pele"] + }, + { + "word": "sangue", + "hints": ["vermelho", "corpo", "vida"] + }, + { + "word": "pulmão", + "hints": ["respiração", "ar", "corpo"] + }, + { + "word": "cérebro", + "hints": ["mente", "pensar", "controle"] + }, + { + "word": "osso", + "hints": ["duro", "estrutura", "corpo"] + }, + { + "word": "músculo", + "hints": ["força", "movimento", "corpo"] + }, + { + "word": "pele", + "hints": ["cobertura", "corpo", "toque"] + }, + { + "word": "olho", + "hints": ["visão", "ver", "corpo"] + }, + { + "word": "nariz", + "hints": ["cheiro", "respirar", "rosto"] + }, + { + "word": "boca", + "hints": ["comer", "falar", "rosto"] + }, + { + "word": "dente", + "hints": ["morder", "branco", "boca"] + }, + { + "word": "língua", + "hints": ["gosto", "falar", "boca"] + }, + { + "word": "orelha", + "hints": ["ouvir", "som", "cabeça"] + }, + { + "word": "mão", + "hints": ["dedos", "pegar", "corpo"] + }, + { + "word": "pé", + "hints": ["andar", "chão", "corpo"] + }, + { + "word": "dedo", + "hints": ["mão", "pequeno", "toque"] + }, + { + "word": "joelho", + "hints": ["dobrar", "perna", "articulação"] + }, + { + "word": "ombro", + "hints": ["braço", "ligação", "corpo"] + }, + { + "word": "costas", + "hints": ["trás", "coluna", "corpo"] + }, + { + "word": "barriga", + "hints": ["estômago", "digestão", "corpo"] + }, + { + "word": "sono", + "hints": ["descanso", "noite", "cansaço"] + }, + { + "word": "sonho", + "hints": ["imaginação", "noite", "mente"] + }, + { + "word": "acordar", + "hints": ["manhã", "levantar", "sono"] + }, + { + "word": "dormir", + "hints": ["cama", "descanso", "noite"] + }, + { + "word": "trabalho", + "hints": ["emprego", "tarefa", "dinheiro"] + }, + { + "word": "escola", + "hints": ["alunos", "professor", "estudo"] + }, + { + "word": "professor", + "hints": ["ensinar", "aula", "escola"] + }, + { + "word": "aluno", + "hints": ["aprender", "escola", "estudar"] + }, + { + "word": "aula", + "hints": ["ensino", "tempo", "escola"] + }, + { + "word": "lição", + "hints": ["tarefa", "aprender", "escola"] + }, + { + "word": "prova", + "hints": ["teste", "nota", "escola"] + }, + { + "word": "nota", + "hints": ["resultado", "escola", "avaliação"] + }, + { + "word": "amizade", + "hints": ["companheirismo", "confiança", "laço"] + }, + { + "word": "família", + "hints": ["parentes", "casa", "união"] + }, + { + "word": "pai", + "hints": ["homem", "família", "cuidar"] + }, + { + "word": "mãe", + "hints": ["mulher", "família", "cuidar"] + }, + { + "word": "irmão", + "hints": ["família", "mesmos pais", "laço"] + }, + { + "word": "irmã", + "hints": ["família", "mesmos pais", "laço"] + }, + { + "word": "avô", + "hints": ["idoso", "família", "avançado"] + }, + { + "word": "avó", + "hints": ["idosa", "família", "carinho"] + }, + { + "word": "tio", + "hints": ["parente", "família", "adulto"] + }, + { + "word": "tia", + "hints": ["parente", "família", "adulta"] + }, + { + "word": "primo", + "hints": ["parente", "família", "mesma geração"] + }, + { + "word": "prima", + "hints": ["parente", "família", "mesma geração"] + }, + { + "word": "vizinho", + "hints": ["perto", "casa", "bairro"] + }, + { + "word": "cidade", + "hints": ["prédios", "ruas", "população"] + }, + { + "word": "bairro", + "hints": ["região", "ruas", "cidade"] + }, + { + "word": "rua", + "hints": ["asfalto", "carros", "endereço"] + }, + { + "word": "praça", + "hints": ["banco", "árvores", "lazer"] + }, + { + "word": "parque", + "hints": ["natureza", "lazer", "verde"] + }, + { + "word": "mercado", + "hints": ["compras", "alimentos", "produtos"] + }, + { + "word": "padaria", + "hints": ["pão", "forno", "cheiro"] + }, + { + "word": "restaurante", + "hints": ["comida", "mesa", "serviço"] + }, + { + "word": "loja", + "hints": ["comprar", "produtos", "venda"] + }, + { + "word": "banco", + "hints": ["dinheiro", "conta", "finanças"] + }, + { + "word": "dinheiro", + "hints": ["valor", "compra", "papel"] + }, + { + "word": "moeda", + "hints": ["metal", "troco", "valor"] + }, + { + "word": "cartão", + "hints": ["pagamento", "plástico", "banco"] + }, + { + "word": "fila", + "hints": ["espera", "ordem", "pessoas"] + }, + { + "word": "entrada", + "hints": ["acesso", "porta", "início"] + }, + { + "word": "saída", + "hints": ["fim", "porta", "deixar"] + }, + { + "word": "chaveiro", + "hints": ["chaves", "argola", "organizar"] + }, + { + "word": "garrafa", + "hints": ["líquido", "tampa", "recipiente"] + }, + { + "word": "copo", + "hints": ["beber", "líquido", "recipiente"] + }, + { + "word": "prato", + "hints": ["comida", "mesa", "louça"] + }, + { + "word": "talher", + "hints": ["comer", "garfo", "faca"] + }, + { + "word": "garfo", + "hints": ["pontas", "comer", "metal"] + }, + { + "word": "faca", + "hints": ["cortar", "lâmina", "cozinha"] + }, + { + "word": "colher", + "hints": ["sopa", "pegar", "metal"] + }, + { + "word": "panela", + "hints": ["cozinhar", "fogo", "comida"] + }, + { + "word": "frigideira", + "hints": ["fritar", "óleo", "cozinha"] + }, + { + "word": "liquidificador", + "hints": ["misturar", "lâminas", "cozinha"] + }, + { + "word": "tempo", + "hints": ["horas", "relógio", "passar"] + }, + { + "word": "dia", + "hints": ["claro", "sol", "manhã"] + }, + { + "word": "noite", + "hints": ["escuro", "lua", "dormir"] + }, + { + "word": "manhã", + "hints": ["acordar", "cedo", "sol"] + }, + { + "word": "tarde", + "hints": ["meio", "dia", "luz"] + }, + { + "word": "semana", + "hints": ["dias", "sete", "tempo"] + }, + { + "word": "mês", + "hints": ["calendário", "30", "tempo"] + }, + { + "word": "ano", + "hints": ["365", "tempo", "longo"] + }, + { + "word": "ontem", + "hints": ["passado", "dia", "antes"] + }, + { + "word": "hoje", + "hints": ["agora", "dia", "presente"] + }, + { + "word": "amanhã", + "hints": ["futuro", "dia", "depois"] + }, + { + "word": "rápido", + "hints": ["veloz", "tempo", "curto"] + }, + { + "word": "devagar", + "hints": ["lento", "tempo", "calmo"] + }, + { + "word": "longe", + "hints": ["distância", "remoto", "afastado"] + }, + { + "word": "perto", + "hints": ["próximo", "distância", "curto"] + }, + { + "word": "alto", + "hints": ["altura", "grande", "cima"] + }, + { + "word": "baixo", + "hints": ["altura", "pequeno", "baixo"] + }, + { + "word": "grande", + "hints": ["tamanho", "maior", "amplo"] + }, + { + "word": "pequeno", + "hints": ["tamanho", "menor", "curto"] + }, + { + "word": "novo", + "hints": ["recente", "novo", "usar"] + }, + { + "word": "velho", + "hints": ["antigo", "tempo", "usado"] + }, + { + "word": "sujo", + "hints": ["sujeira", "mancha", "impuro"] + }, + { + "word": "cheio", + "hints": ["completo", "ocupado", "lotado"] + }, + { + "word": "vazio", + "hints": ["sem nada", "oco", "livre"] + }, + { + "word": "forte", + "hints": ["força", "resistente", "poder"] + }, + { + "word": "fraco", + "hints": ["sem força", "leve", "pouco"] + }, + { + "word": "quente", + "hints": ["calor", "alta temperatura", "verão"] + }, + { + "word": "frio", + "hints": ["baixa temperatura", "gelo", "inverno"] + }, + { + "word": "claro", + "hints": ["luz", "visível", "brilho"] + }, + { + "word": "escuro", + "hints": ["sem luz", "noite", "sombra"] + }, + { + "word": "feliz", + "hints": ["alegria", "sorriso", "emoção"] + }, + { + "word": "triste", + "hints": ["choro", "emoção", "baixo"] + }, + { + "word": "raiva", + "hints": ["ira", "emoção", "nervoso"] + }, + { + "word": "medo", + "hints": ["susto", "emoção", "perigo"] + }, + { + "word": "surpresa", + "hints": ["inesperado", "emoção", "choque"] + }, + { + "word": "calma", + "hints": ["tranquilo", "paz", "sereno"] + }, + { + "word": "barulho", + "hints": ["som", "alto", "ruído"] + }, + { + "word": "silêncio", + "hints": ["sem som", "calmo", "quieto"] + }, + { + "word": "cheiro", + "hints": ["odor", "nariz", "sentir"] + }, + { + "word": "impostor", + "hints": ["inimigo", "penetra"] + } +] \ No newline at end of file