tie keyboard into game

This commit is contained in:
Akbar Rahman 2022-01-28 00:30:13 +00:00
parent 356edb2024
commit 1b075f299d
Signed by: alvierahman90
GPG Key ID: 20609519444A1269
3 changed files with 74 additions and 19 deletions

31
game.js
View File

@ -7,13 +7,16 @@ const word = wordlist[Math.floor(Math.random()*wordlist.length)];
var gameCompleted = null var gameCompleted = null
// HTML items // HTML items
const gameContainer = document.getElementById("game_container")
const body = document.getElementsByTagName("body")[0] const body = document.getElementsByTagName("body")[0]
const endScreen = document.getElementById("end_screen") const endScreen = document.getElementById("end_screen")
const endScreenGuesses = document.getElementById("end_screen_guesses") const endScreenGuesses = document.getElementById("end_screen_guesses")
const endScreenMessage = document.getElementById("end_screen_message") const endScreenMessage = document.getElementById("end_screen_message")
const endScreenTime = document.getElementById("end_screen_time") const endScreenTime = document.getElementById("end_screen_time")
const gameContainer = document.getElementById("game_container")
const gridItems = [] const gridItems = []
const kbLetters = Array.from(document.getElementsByClassName("kb_letter")).filter(kbl => kbl.id === '')
const kbEnter = document.getElementById("kb_enter")
const kbBackspace = document.getElementById("kb_backspace")
// helper functions // helper functions
const gridItemId = (row, column) => "grid_item_" + row + "_" + column const gridItemId = (row, column) => "grid_item_" + row + "_" + column
@ -168,17 +171,33 @@ function endGame(won) {
endScreenMessage.innerHTML = "damn. better luck nex time" endScreenMessage.innerHTML = "damn. better luck nex time"
} }
endScreenGuesses.innerHTML = `guesses: ${findCurrentLetterPosition()[0]+1}/${gridHeight}` endScreenGuesses.innerHTML = `guesses used: ${findCurrentLetterPosition()[0]+1}/${gridHeight}`
endScreen.style.display = ""; endScreen.style.display = "";
} }
function runClickAnimation(el) {
console.log(el)
el.classList.add("clicked")
setTimeout(() => el.classList.remove("clicked"), 500)
}
// create event listeners // create event listeners
document.addEventListener('keyup', (e) => { document.addEventListener('keyup', e => setNextLetter(e))
console.log(e) kbBackspace.addEventListener('click', () => {
setNextLetter(e) runClickAnimation(kbBackspace)
setNextLetter({code: "Backspace", key: "Backspace"})
})
kbEnter.addEventListener('click', () => {
runClickAnimation(kbEnter)
setNextLetter({code: "Enter", key: "Enter"})
})
kbLetters.forEach(kbl => {
kbl.addEventListener('click', () => {
runClickAnimation(kbl)
setNextLetter({code: kbl.innerHTML, key: kbl.innerHTML })
})
}) })
// start game
init() init()
console.log(word) console.log(word)

View File

@ -7,7 +7,7 @@
<title>words by alv</title> <title>words by alv</title>
</head> </head>
<body> <body>
<h1>words by alv</h1> <h1 style="text-align: center">words by alv</h1>
<div id="game_container"> <div id="game_container">
</div> </div>
@ -42,7 +42,7 @@
<p class="kb_letter">l</p> <p class="kb_letter">l</p>
</div> </div>
<div class="kb_row" id="kb_row3"> <div class="kb_row" id="kb_row3">
<p class="kb_letter"><i class="fas fa-sign-in-alt"></i></p> <p class="kb_letter" id="kb_enter"><i class="fas fa-sign-in-alt"></i></p>
<p class="kb_letter">z</p> <p class="kb_letter">z</p>
<p class="kb_letter">x</p> <p class="kb_letter">x</p>
<p class="kb_letter">c</p> <p class="kb_letter">c</p>
@ -50,12 +50,13 @@
<p class="kb_letter">b</p> <p class="kb_letter">b</p>
<p class="kb_letter">n</p> <p class="kb_letter">n</p>
<p class="kb_letter">m</p> <p class="kb_letter">m</p>
<p class="kb_letter"><i class="fas fa-backspace"></i></p> <p class="kb_letter" id="kb_backspace"><i class="fas fa-backspace"></i></p>
</div> </div>
</div> </div>
<div id="footer">
<p>built with ❤ and adequate amounts of care by <a href="https://alv.cx">alv</a></p> <p>built with ❤ and adequate amounts of care by <a href="https://alv.cx">alv</a></p>
<p>thanks to Lancaster University for the wordlist and you can find it <a href="https://ucrel.lancs.ac.uk/bncfreq/flists.html">here</a></p> <p>thanks to Lancaster University for the wordlist, which you can find <a href="https://ucrel.lancs.ac.uk/bncfreq/flists.html">here</a> </p>
</div>
<script type="application/javascript" src="wordlist.js"></script> <script type="application/javascript" src="wordlist.js"></script>
<script type="application/javascript" src="game.js"></script> <script type="application/javascript" src="game.js"></script>

View File

@ -15,6 +15,11 @@
--brown: #a16946; --brown: #a16946;
} }
body {
font-family: monospace;
margin-top: 0;
}
#game_container { #game_container {
display: flex; display: flex;
align-items: center; align-items: center;
@ -26,19 +31,23 @@
margin: 0 auto; margin: 0 auto;
} }
#footer { margin-top: 4em; }
.grid_row { .grid_row {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
.grid_item { .grid_item {
width: 3em; width: 8vw;
height: 3em; max-width: 3em;
height: 8vw;
max-height: 3em;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border: 0.2em solid var(--default-fg); border: 0.2em solid var(--default-fg);
margin: 1em; margin: 3vw;
text-transform: uppercase; text-transform: uppercase;
font-weight: 800; font-weight: 800;
transition: 0.5s; transition: 0.5s;
@ -61,6 +70,10 @@
animation: incorrect 0.5s; animation: incorrect 0.5s;
} }
.clicked {
animation: clicked 0.5s;
}
@keyframes correct { @keyframes correct {
0% { 0% {
background: var(--default-bg); background: var(--default-bg);
@ -85,6 +98,18 @@
} }
} }
@keyframes clicked {
0% {
background: var(--default-bg);
}
50% {
background: var(--dark-bg);
}
100% {
background: var(--default-bg);
}
}
#end_screen { #end_screen {
position: fixed; position: fixed;
height: 100vh; height: 100vh;
@ -102,18 +127,28 @@
width: fit-content; width: fit-content;
} }
#keyboard {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.kb_row { .kb_row {
display: flex; display: flex;
} }
.kb_row * { .kb_row * {
width: 3em; width: min(10vw, 3em);
height: 3em; height: min(10vw, 3em);
text-align: center; text-align: center;
margin: 0; margin: 0;
} }
.kb_row .kb_filler { .kb_filler {
width: 1.5em; width: min(5vw, 1.5em);
} }
.kb_letter {
line-height: min(10vw, 3em)
}