Batman: I forgot to commit the new website branch so I guess here it is
with bun and a cool game page
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
# dependencies (bun install)
|
||||
node_modules
|
||||
|
||||
# output
|
||||
out
|
||||
dist
|
||||
*.tgz
|
||||
|
||||
# code coverage
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# logs
|
||||
logs
|
||||
_.log
|
||||
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# caches
|
||||
.eslintcache
|
||||
.cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# IntelliJ based IDEs
|
||||
.idea
|
||||
|
||||
# Finder (MacOS) folder config
|
||||
.DS_Store
|
||||
@@ -0,0 +1,15 @@
|
||||
# escape
|
||||
|
||||
To install dependencies:
|
||||
|
||||
```bash
|
||||
bun install
|
||||
```
|
||||
|
||||
To run:
|
||||
|
||||
```bash
|
||||
bun run index.ts
|
||||
```
|
||||
|
||||
This project was created using `bun init` in bun v1.4.0. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"lockfileVersion": 2,
|
||||
"configVersion": 1,
|
||||
"workspaces": {
|
||||
"": {
|
||||
"name": "escape",
|
||||
"devDependencies": {
|
||||
"@types/bun": "latest",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^7",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"@types/bun": ["@types/bun@1.4.0", "", { "dependencies": { "bun-types": "1.4.0" } }, "sha512-K+lZULY23vRgK/CfTjFIV+tyifaNdSMlPh9j+6mQ/cLfpOznLyAuzgV/JQysyECpkBQLVMSyvjlr2fBUSA9wFQ=="],
|
||||
|
||||
"@types/node": ["@types/node@26.4.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA=="],
|
||||
|
||||
"@typescript/typescript-aix-ppc64": ["@typescript/typescript-aix-ppc64@7.0.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ=="],
|
||||
|
||||
"@typescript/typescript-darwin-arm64": ["@typescript/typescript-darwin-arm64@7.0.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA=="],
|
||||
|
||||
"@typescript/typescript-darwin-x64": ["@typescript/typescript-darwin-x64@7.0.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA=="],
|
||||
|
||||
"@typescript/typescript-freebsd-arm64": ["@typescript/typescript-freebsd-arm64@7.0.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ=="],
|
||||
|
||||
"@typescript/typescript-freebsd-x64": ["@typescript/typescript-freebsd-x64@7.0.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw=="],
|
||||
|
||||
"@typescript/typescript-linux-arm": ["@typescript/typescript-linux-arm@7.0.2", "", { "os": "linux", "cpu": "arm" }, "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ=="],
|
||||
|
||||
"@typescript/typescript-linux-arm64": ["@typescript/typescript-linux-arm64@7.0.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ=="],
|
||||
|
||||
"@typescript/typescript-linux-loong64": ["@typescript/typescript-linux-loong64@7.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ=="],
|
||||
|
||||
"@typescript/typescript-linux-mips64el": ["@typescript/typescript-linux-mips64el@7.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA=="],
|
||||
|
||||
"@typescript/typescript-linux-ppc64": ["@typescript/typescript-linux-ppc64@7.0.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA=="],
|
||||
|
||||
"@typescript/typescript-linux-riscv64": ["@typescript/typescript-linux-riscv64@7.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ=="],
|
||||
|
||||
"@typescript/typescript-linux-s390x": ["@typescript/typescript-linux-s390x@7.0.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw=="],
|
||||
|
||||
"@typescript/typescript-linux-x64": ["@typescript/typescript-linux-x64@7.0.2", "", { "os": "linux", "cpu": "x64" }, "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A=="],
|
||||
|
||||
"@typescript/typescript-netbsd-arm64": ["@typescript/typescript-netbsd-arm64@7.0.2", "", { "os": "none", "cpu": "arm64" }, "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA=="],
|
||||
|
||||
"@typescript/typescript-netbsd-x64": ["@typescript/typescript-netbsd-x64@7.0.2", "", { "os": "none", "cpu": "x64" }, "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA=="],
|
||||
|
||||
"@typescript/typescript-openbsd-arm64": ["@typescript/typescript-openbsd-arm64@7.0.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ=="],
|
||||
|
||||
"@typescript/typescript-openbsd-x64": ["@typescript/typescript-openbsd-x64@7.0.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg=="],
|
||||
|
||||
"@typescript/typescript-sunos-x64": ["@typescript/typescript-sunos-x64@7.0.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g=="],
|
||||
|
||||
"@typescript/typescript-win32-arm64": ["@typescript/typescript-win32-arm64@7.0.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ=="],
|
||||
|
||||
"@typescript/typescript-win32-x64": ["@typescript/typescript-win32-x64@7.0.2", "", { "os": "win32", "cpu": "x64" }, "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g=="],
|
||||
|
||||
"bun-types": ["bun-types@1.4.0", "", { "dependencies": { "@types/node": "*" } }, "sha512-iIKw23BspnQQYd3prITOBxeUsxBHnwzX6YJfGMuNOZzeNcMmVqzIIVGRm1l69ogaPQmb4wB6BN8mA5bE9YuC5Q=="],
|
||||
|
||||
"typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="],
|
||||
|
||||
"undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="],
|
||||
}
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Escape the Island</title>
|
||||
<link rel="icon" type="image/x-icon" href="assets/shipwreck.png" />
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Almendra:ital,wght@0,400;0,700;1,400;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<style></style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="header-container">
|
||||
<h1>Escape the Island</h1>
|
||||
<div class="boat-container">
|
||||
<img src="assets/boat.png" alt="" class="boat" />
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="Content">
|
||||
<div class="Instruction">
|
||||
<p>Backstory</p>
|
||||
<details>
|
||||
<summary>Click to expand</summary>
|
||||
<p>
|
||||
You and your class planned to go on a one week cruise trip over
|
||||
spring break to learn about how inflation affects nautical
|
||||
exploration and catching some sun. The cruise ship is built a pirate
|
||||
ship which you all find amusing at first. However, issues arise from
|
||||
an underlying problem. They didn't have the money to get schedule a
|
||||
final inspection before departing, but they still let you go anyways
|
||||
(because they are broke). As the boat leaves and cruises away from
|
||||
land, you see rocky terrain that has formed in the middle of the
|
||||
ocean (shocking). Your boat hits it and as people don't learn from
|
||||
the titanic, you don't have enough life boats to fit everyone and
|
||||
make it home safely. Everybody else gets on boats while you and your
|
||||
classmates are still on the boat (coincidentally). One of your
|
||||
friends believes he has a boat license (he doesn't) and tries to
|
||||
steer the boat before you sink. Magically you find an island. You
|
||||
all get onto the island safely but with no way home, scattered and
|
||||
disoriented.
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
<div class="Instruction">
|
||||
<p>Objective</p>
|
||||
<details>
|
||||
<summary>Click to expand</summary>
|
||||
<p>
|
||||
You will have 16 hours each day to gain as many resources as
|
||||
possible to survive. You must choose what to spend your hours doing
|
||||
each day carefully. The survival requirement for the end of each day
|
||||
is to have 8 fish and 4 pieces of lumber. Otherwise, you die (lose).
|
||||
You will be able to trade with other classmates you have found
|
||||
stranded at no expense of your daily hours.
|
||||
</p>
|
||||
</details>
|
||||
</div>
|
||||
<div class="Instruction">
|
||||
<p>Requirements</p>
|
||||
<details>
|
||||
<summary>Click to expand</summary>
|
||||
<ol>
|
||||
<li>
|
||||
In order to escape, you must have 24 stockpiled fish and a boat at
|
||||
the START of a new day.
|
||||
</li>
|
||||
<li>Fish will go bad without a preserver.</li>
|
||||
<li>
|
||||
Improving skills requires 8 hours and adds 1 per hour the next
|
||||
day.
|
||||
</li>
|
||||
<li>Building a preserver requires 8 hours and 25 wood</li>
|
||||
<li>Building a boat requires 16 hours and 100 wood</li>
|
||||
<li>You can only trade with "found" players</li>
|
||||
<li>
|
||||
It is recommended to donate resources to other players at end of
|
||||
day if you have a boat (Need to have 24 fish to leave)
|
||||
</li>
|
||||
</ol>
|
||||
</details>
|
||||
</div>
|
||||
<div class="game">
|
||||
<div class="table-container">
|
||||
<table>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Fishing Stats</th>
|
||||
<th>Foraging Stats</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 25%">Days: <span id="days">0</span></th>
|
||||
<td id="fish_p_hour">0</td>
|
||||
<td id="wood_p_hour">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 25%">
|
||||
Players Found: <span id="found">0</span>
|
||||
</th>
|
||||
<td>Preserver: <span id="preserver">No</span></td>
|
||||
<td>Boat: <span id="boat">No</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="width: 25%">Hours Left: <span id="hours">16</span></th>
|
||||
<td>Stored Fish: <span id="fish_stored"></span></td>
|
||||
<td>Stored Wood: <span id="wood_stored"></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="button-container">
|
||||
<div class="button-container-part">
|
||||
<button type="button" id="go-fishing">Go Fishing</button>
|
||||
<button type="button" id="go-foraging">Go Foraging</button>
|
||||
<!-- <button type="button" id="trading">Trade</button> -->
|
||||
</div>
|
||||
<div class="button-container-part">
|
||||
<button type="button" id="improve-fishing">
|
||||
Improve Fish Per Hour
|
||||
</button>
|
||||
<button type="button" id="build-preserver">Build Preserver</button>
|
||||
|
||||
<button type="button" id="improve-forgaing">
|
||||
Improve Wood Per Hour
|
||||
</button>
|
||||
<button type="button" id="build-boat">Build Boat</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<h3 style="padding: 10px 0px 0px 10px">
|
||||
Gamemaker: Mr. J. Walla ~=~ Developer: Andrew H. ~=~ Designer: Logan C.
|
||||
</h3>
|
||||
</footer>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
function create_player_stats() {
|
||||
let x = Math.floor(Math.random() * 2) + 1;
|
||||
let y = 0;
|
||||
if (x == 1) {
|
||||
y = 2;
|
||||
} else {
|
||||
y = 1;
|
||||
}
|
||||
return { x: x, y: y };
|
||||
}
|
||||
|
||||
let x, y;
|
||||
function init() {
|
||||
if (localStorage.getItem("player_x")) {
|
||||
x = parseInt(localStorage.getItem("player_x"));
|
||||
y = parseInt(localStorage.getItem("player_y"));
|
||||
} else {
|
||||
let player = create_player_stats();
|
||||
x = player.x;
|
||||
y = player.y;
|
||||
localStorage.setItem("player_x", x);
|
||||
localStorage.setItem("player_y", y);
|
||||
}
|
||||
return { x: x, y: y };
|
||||
}
|
||||
let player = init();
|
||||
let gamedata = {
|
||||
fishing: {
|
||||
per_hour: player.x,
|
||||
preserver: "No",
|
||||
stored: 0,
|
||||
},
|
||||
foraging: {
|
||||
per_hour: player.y,
|
||||
boat: "No",
|
||||
stored: 0,
|
||||
},
|
||||
hours: 16,
|
||||
days: 0,
|
||||
};
|
||||
|
||||
function updateTable() {
|
||||
document.getElementById("fish_p_hour").innerText = gamedata.fishing.per_hour;
|
||||
document.getElementById("wood_p_hour").innerText = gamedata.foraging.per_hour;
|
||||
document.getElementById("fish_stored").innerText = gamedata.fishing.stored;
|
||||
document.getElementById("wood_stored").innerText = gamedata.foraging.stored;
|
||||
document.getElementById("preserver").innerText = gamedata.fishing.preserver;
|
||||
document.getElementById("boat").innerText = gamedata.foraging.boat;
|
||||
document.getElementById("hours").innerText = gamedata.hours;
|
||||
document.getElementById("days").innerText = gamedata.days;
|
||||
if (gamedata.hours < 8) {
|
||||
document.getElementById("improve-fishing").disabled = true;
|
||||
} else {
|
||||
document.getElementById("improve-fishing").disabled = false;
|
||||
}
|
||||
if (gamedata.hours < 8) {
|
||||
document.getElementById("improve-forgaing").disabled = true;
|
||||
} else {
|
||||
document.getElementById("improve-forgaing").disabled = false;
|
||||
}
|
||||
if (gamedata.foraging.stored < 25 || gamedata.hours < 8) {
|
||||
document.getElementById("build-preserver").disabled = true;
|
||||
} else {
|
||||
document.getElementById("build-preserver").disabled = false;
|
||||
}
|
||||
if (gamedata.foraging.stored < 100 || gamedata.hours < 16) {
|
||||
document.getElementById("build-boat").disabled = true;
|
||||
} else {
|
||||
document.getElementById("build-boat").disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function go_fishing() {
|
||||
let prompt = window.prompt("How many hours do you want to fish?");
|
||||
if (prompt === null || prompt > gamedata.hours) {
|
||||
window.alert("You dont have the hours for this or prompt exited");
|
||||
console.log("Prompt Exited");
|
||||
} else {
|
||||
gamedata.fishing.stored += prompt * gamedata.fishing.per_hour;
|
||||
gamedata.hours -= prompt;
|
||||
if (gamedata.hours === 0) {
|
||||
gamedata.days++;
|
||||
gamedata.hours = 16;
|
||||
}
|
||||
updateTable();
|
||||
}
|
||||
}
|
||||
|
||||
function go_foraging() {
|
||||
let prompt = window.prompt("How many hours do you want to foraging?");
|
||||
if (prompt === null || prompt > gamedata.hours) {
|
||||
window.alert("You dont have the hours for this or prompt exited");
|
||||
console.log("Prompt Exited");
|
||||
} else {
|
||||
gamedata.foraging.stored += prompt * gamedata.foraging.per_hour;
|
||||
gamedata.hours -= prompt;
|
||||
if (gamedata.hours === 0) {
|
||||
gamedata.days++;
|
||||
gamedata.hours = 16;
|
||||
}
|
||||
updateTable();
|
||||
}
|
||||
}
|
||||
document.getElementById("go-fishing").onclick = go_fishing;
|
||||
document.getElementById("go-foraging").onclick = go_foraging;
|
||||
|
||||
updateTable();
|
||||
@@ -0,0 +1,8 @@
|
||||
const server = Bun.serve({
|
||||
port: 3000,
|
||||
routes: {
|
||||
"/": () => new Response("Bun!"),
|
||||
},
|
||||
});
|
||||
|
||||
console.log(`Listening on ${server.url}`);
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "escape",
|
||||
"module": "index.ts",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@types/bun": "latest"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^7"
|
||||
}
|
||||
}
|
||||
+167
@@ -0,0 +1,167 @@
|
||||
html {
|
||||
background-color: moccasin;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: cadetblue;
|
||||
transition: background-color 0.1s ease-out;
|
||||
margin: 20px;
|
||||
padding: 0;
|
||||
font-family: "Almendra";
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: moccasin;
|
||||
padding: 10px;
|
||||
border-bottom: 2px dashed gray;
|
||||
|
||||
.header-container {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
align-items: center;
|
||||
|
||||
h1 {
|
||||
color: cornflowerblue;
|
||||
font-family: "Almendra";
|
||||
text-align: left;
|
||||
font-size: clamp(20px, 10vh, 55px);
|
||||
height: auto;
|
||||
max-height: 100px;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.boat {
|
||||
height: auto;
|
||||
max-width: 150px;
|
||||
width: 100%;
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.boat-container {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
align-items: left;
|
||||
width: 100%;
|
||||
flex: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.Content {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
|
||||
|
||||
.Instruction {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 10px;
|
||||
|
||||
details {
|
||||
p {
|
||||
line-height: 1.4;
|
||||
font-size: 20px;
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 40px;
|
||||
text-align: left;
|
||||
line-height: 1;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
li {
|
||||
line-height: 1.4;
|
||||
font-size: 20px;
|
||||
color: black;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.game {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
gap: 10px;
|
||||
|
||||
.table-container {
|
||||
padding: 10px;
|
||||
flex: 1;
|
||||
background-color: cadetblue;
|
||||
|
||||
table,
|
||||
th,
|
||||
td,
|
||||
tr {
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: rgba(0, 0, 0, 0.125);
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: darkseagreen;
|
||||
}
|
||||
}
|
||||
|
||||
.button-container {
|
||||
flex: 1;
|
||||
padding: 10px;
|
||||
|
||||
.button-container-part {
|
||||
display: flex;
|
||||
|
||||
button {
|
||||
font-family: "Almendra";
|
||||
font-size: 18px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
transition-duration: 0.2s;
|
||||
padding: 7px;
|
||||
height: clamp(30px, 15vh, 85px);
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: darkseagreen;
|
||||
color: black;
|
||||
cursor: grab;
|
||||
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.6);
|
||||
border: 2px solid black;
|
||||
}
|
||||
|
||||
button:disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
background-color: moccasin;
|
||||
width: 100%;
|
||||
margin-top: 25px;
|
||||
text-align: center;
|
||||
border-top: 2px dashed gray;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
// Environment setup & latest features
|
||||
"lib": ["ESNext"],
|
||||
"target": "ESNext",
|
||||
"module": "Preserve",
|
||||
"moduleDetection": "force",
|
||||
"jsx": "react-jsx",
|
||||
"allowJs": true,
|
||||
"types": ["bun"],
|
||||
|
||||
// Bundler mode
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"verbatimModuleSyntax": true,
|
||||
"noEmit": true,
|
||||
|
||||
// Best practices
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"noImplicitOverride": true,
|
||||
|
||||
// Some stricter flags (disabled by default)
|
||||
"noUnusedLocals": false,
|
||||
"noUnusedParameters": false,
|
||||
"noPropertyAccessFromIndexSignature": false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user