Skip to content

Commit

Permalink
Merge pull request #4 from aglgit/main
Browse files Browse the repository at this point in the history
Merge main to deploy
  • Loading branch information
aglgit authored Jan 24, 2025
2 parents df11633 + d0ff5c3 commit e2742e6
Show file tree
Hide file tree
Showing 13 changed files with 431 additions and 270 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Voltorb Flip

This is a project for me to learn HTML, CSS and JavaScript/TypeScript.

It is heavily based on Voltorb Flip by [Brandon Stein](https://voltorbflip.brandon-stein.com/) as well as the [original game](https://bulbapedia.bulbagarden.net/wiki/Voltorb_Flip).
32 changes: 31 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,37 @@ <h1>Voltorb Flip</h1>
<button class="memo-button-number" id="memo-button-3">3</button>
</div>
</div>
<div id="game-instructions">Here are the rules: ¯\_(ツ)_/¯</div>
<div id="game-instructions">
<div id="controls">
<h2>Controls</h2>
<ul>
<li>Arrow keys: Select tile</li>
<li>Enter: Reveal tile</li>
<li>X: Enter Memo mode</li>
<li>0/1/2/3: Toggle Memo mode</li>
</ul>
</div>
<div id="about">
<h2>About</h2>
<p>
This is a project for me to learn HTML, CSS and
JavaScript/TypeScript. It is heavily based on Voltorb Flip
by
<a href="https://voltorbflip.brandon-stein.com/"
>Brandon Stein</a
>
as well as the
<a
href="https://bulbapedia.bulbagarden.net/wiki/Voltorb_Flip"
>original game</a
>.
</p>
<p>
The source code can be found
<a href="https://github.com/aglgit/voltorb-flip">here</a>.
</p>
</div>
</div>
<script type="module" src="src/app.ts"></script>
</body>
</html>
10 changes: 6 additions & 4 deletions src/app.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import BoardCalculator from "./board/boardCalculator";
import BoardContainer from "./board/boardContainer";
import BoardGenerator from "./board/boardGenerator";
import BoardListener from "./board/boardListener";
import BoardRenderer from "./board/boardRenderer";
import BoardState from "./board/boardState";

const generator = new BoardGenerator();
const calculator = new BoardCalculator();
const listener = new BoardListener();
const game = new BoardContainer(generator, calculator, listener);
game.renderGame();
const state = new BoardState(generator, calculator);
const listener = new BoardListener(state);
const renderer = new BoardRenderer(listener, state);
renderer.firstRenderGame();
33 changes: 33 additions & 0 deletions src/board/__tests__/boardState.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { expect, test } from "vitest";
import BoardGenerator from "@src/board/boardGenerator";
import BoardCalculator from "../boardCalculator";
import BoardState from "../boardState";

const boardGenerator: BoardGenerator = new BoardGenerator();
const boardCalculator: BoardCalculator = new BoardCalculator();
const boardState: BoardState = new BoardState(boardGenerator, boardCalculator);

test("Reset board ensures correct state", () => {
boardState.gameOver = true;
boardState.coinsThisLevel = 300;
boardState.selectedTile = boardState.grid[1][1];
boardState.selectedRow = 1;
boardState.selectedCol = 1;

boardState.resetBoard();

expect(boardState.gameOver).toBe(false);
expect(boardState.coinsThisLevel).toBe(0);
expect(boardState.selectedTile).toBe(boardState.grid[0][0]);
expect(boardState.selectedRow).toBe(0);
expect(boardState.selectedCol).toBe(0);
});

test("Toggle memo flips value", () => {
boardState.memoMode = true;

boardState.toggleMemoMode();
expect(boardState.memoMode).toBe(false);
boardState.toggleMemoMode();
expect(boardState.memoMode).toBe(true);
});
25 changes: 0 additions & 25 deletions src/board/__tests__/testGrid.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,30 @@ export const testGrid: Tile[][] = [
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: true,
value: 0,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: true,
value: 0,
revealed: false,
selected: false,
marks: new Set(),
},
],
Expand All @@ -43,35 +38,30 @@ export const testGrid: Tile[][] = [
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: true,
value: 0,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: true,
value: 0,
revealed: false,
selected: false,
marks: new Set(),
},
],
Expand All @@ -80,35 +70,30 @@ export const testGrid: Tile[][] = [
voltorb: false,
value: 2,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: true,
value: 0,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 3,
revealed: false,
selected: false,
marks: new Set(),
},
],
Expand All @@ -117,35 +102,30 @@ export const testGrid: Tile[][] = [
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 3,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
],
Expand All @@ -154,35 +134,30 @@ export const testGrid: Tile[][] = [
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: true,
value: 0,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 1,
revealed: false,
selected: false,
marks: new Set(),
},
{
voltorb: false,
value: 2,
revealed: false,
selected: false,
marks: new Set(),
},
],
Expand Down
Loading

0 comments on commit e2742e6

Please sign in to comment.