implement game over

master
Peter Babič 3 years ago
parent da1bae0a4e
commit 2f33323f54
Signed by: peter.babic
GPG Key ID: 4BB075BC1884BA40
  1. 48
      src/App.svelte

@ -12,6 +12,7 @@
const jumps = new Graph() const jumps = new Graph()
let circles = [] let circles = []
let playing = true
const numCircles = 15 const numCircles = 15
for (let i = 0; i < numCircles; i++) { for (let i = 0; i < numCircles; i++) {
@ -72,21 +73,28 @@
(_, i) => (circles[i] = circles[i] == dest ? hole : circles[i]) (_, i) => (circles[i] = circles[i] == dest ? hole : circles[i])
) )
const getDests = curr => {
let dests = []
jumps.adjacencyList[curr].forEach(jump => {
const jumpedOver = commonBetween(curr, jump)
if (circles[jump] == hole && circles[jumpedOver] == pole) {
dests.push(jump)
}
})
return dests
}
const change = curr => { const change = curr => {
const prev = circles.indexOf(pick) const prev = circles.indexOf(pick)
if (circles[curr] == pole && prev == -1) { if (circles[curr] == pole && prev == -1) {
let destExists = false let dests = getDests(curr)
jumps.adjacencyList[curr].forEach(jump => { dests.forEach(d => (circles[d] = dest))
const jumpedOver = commonBetween(curr, jump)
if (circles[jump] == hole && circles[jumpedOver] == pole) { if (dests.length > 0) {
circles[jump] = dest
destExists = true
}
})
if (destExists) {
circles[curr] = pick circles[curr] = pick
} }
@ -100,8 +108,19 @@
circles[jumpedOver] = hole circles[jumpedOver] = hole
clearDests() clearDests()
const remaining = circles.filter(circle => circle == pole) let hints = []
console.log(remaining.length) circles.forEach((circle, i) => {
if (circle == pole) {
const dests = getDests(i)
if (dests.length > 0) {
hints.push(i)
}
}
})
if (hints.length == 0) {
playing = false
}
return return
} }
@ -192,9 +211,14 @@
.blue { .blue {
background-color: blue; background-color: blue;
} }
.playing {
visibility: hidden;
}
</style> </style>
<main> <main>
<div class:playing>GAME OVER</div>
<div class="triangle"> <div class="triangle">
{#each circles as _, i} {#each circles as _, i}
<div <div

Loading…
Cancel
Save