summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2024-02-25 17:00:19 -0600
committersanine <sanine.not@pm.me>2024-02-25 17:00:19 -0600
commit965778d7e2298f871e4139cab6a78fb019a7f84f (patch)
tree0ff2f58ce57a1e5f932a89ad2e98f2c33d17ec62
parent649d3fa129f2deea9d9b30eedcc25d29e60e0634 (diff)
switch to decks
-rw-r--r--App.js43
-rw-r--r--decks.js17
-rw-r--r--index.html2
3 files changed, 38 insertions, 24 deletions
diff --git a/App.js b/App.js
index 4a06999..bf67043 100644
--- a/App.js
+++ b/App.js
@@ -12,10 +12,8 @@ const linearArray = n => {
const GlobalState = {};
const CHARACTERS_PER_LEVEL = 20;
const Constant = {
- CHARACTERS: characters,
+ DECKS: decks,
CHARACTERS_PER_LEVEL,
- LEVEL_NAMES: linearArray(characters.length/CHARACTERS_PER_LEVEL)
- .map(n => `${n+1} (Characters ${(CHARACTERS_PER_LEVEL*n)+1}-${CHARACTERS_PER_LEVEL*(n+1)})`),
};
// IMPURE
@@ -131,10 +129,10 @@ const Game = ({ currentLevel, guessInput, eventHandlers }) => {
h('p', {}, h('button', { onClick: handlePlayAgainClick }, 'Play Again')),
]);
else {
- const [ character, pinyin ] = characters[index];
+ const [ show, expect ] = characters[index];
return h('div', {}, [
- h('p#current-character', {}, character),
+ h('p#current-character', {}, show),
h(GuessInput, {
value: guessInput.value,
isShaking: guessInput.isShaking,
@@ -142,7 +140,7 @@ const Game = ({ currentLevel, guessInput, eventHandlers }) => {
handleKeyDown: handleKeyDown,
}),
h(HintButton, {
- answer: pinyin,
+ answer: expect,
hintLevel,
handleClick: handleHintButtonClick,
}),
@@ -182,11 +180,11 @@ const HintButton = ({ answer, hintLevel, handleClick }) => {
const LevelSelect = ({ gameParams, handleInput, handleFocusIn }) => {
const { level } = gameParams;
- const options = Constant.LEVEL_NAMES.map(
- (name, index) =>
+ const options = Constant.DECKS.map(
+ (deck, index) =>
h('option', {
value: index,
- }, name)
+ }, `${index+1}: ${deck.name}`)
);
return h('p', {}, [
@@ -305,36 +303,30 @@ const handleModeInput = (state, event) => reset(state, { gameMode: event.target.
const availableGameModes = (level, levelSize) => {
const clampNonNeg = value => value < 0 ? 0 : value;
- const startLevels = [...new Set([
- clampNonNeg(level),
- clampNonNeg(level-3),
- clampNonNeg(level-7),
- clampNonNeg(level-12),
- clampNonNeg(0),
- ])];
+ const startLevels = [...Constant.DECKS.slice(0, level+1).keys()];
const modeName = range => {
const [start, end] = range;
if (start === end)
- return `Characters from level ${start+1}`;
+ return `Deck ${start+1}`;
else if (start === 0)
- return `Characters from levels 1-${end+1}`;
+ return `Decks 1-${end+1}`;
else
- return `Characters from levels ${start+1}-${end+1}`;
+ return `Decks ${start+1}-${end+1}`;
}
const mode = startLevel => {
- const levelRange = [startLevel, level];
- const range = levelRange.map((x, i) => levelSize * (x+i));
+ const range = [startLevel, level];
return {
- name: modeName(levelRange),
+ name: modeName(range),
range,
};
};
const modes = startLevels.map(mode);
+ console.log(modes);
return modes;
};
@@ -360,7 +352,12 @@ const reset = (state, update) => {
const levelCharacters = gameMode => {
const [start, end] = gameMode.range;
- return shuffled(Constant.CHARACTERS.slice(start, end)); // global (but constant) access
+ const cards = Constant.DECKS
+ .slice(start, end+1)
+ .map(d => d.pairs)
+ .flat();
+ console.log(cards);
+ return shuffled(cards);
};
return {
diff --git a/decks.js b/decks.js
new file mode 100644
index 0000000..166e825
--- /dev/null
+++ b/decks.js
@@ -0,0 +1,17 @@
+let decks = [
+ { name: 'Basic Set'
+ , pairs: [
+ [ 'hello', 'world' ],
+ ]},
+ { name: 'Medium Set'
+ , pairs: [
+ [ 'greetings', 'world' ],
+ [ 'bonjour', 'world' ],
+ ]},
+ { name: 'Advanced Set'
+ , pairs: [
+ [ 'salutations', 'world' ],
+ [ 'aloha', 'world' ],
+ [ 'zuzu', 'world' ],
+ ]},
+];
diff --git a/index.html b/index.html
index 8ba628b..5ac2e34 100644
--- a/index.html
+++ b/index.html
@@ -9,7 +9,7 @@
<script src="https://unpkg.com/inferno-hyperscript@7.4.8/dist/inferno-hyperscript.min.js"></script>
<!-- local scripts -->
- <script src="./characters.js"></script>
+ <script src="./decks.js"></script>
<script src="./App.js"></script>
<!-- styling -->