Add game over result copy text

This commit is contained in:
Arne Keller 2022-02-23 12:32:40 +01:00
parent 4d6a87c6ec
commit 560e3a930f
3 changed files with 80 additions and 3 deletions

View File

@ -87,4 +87,10 @@ body.wide {
display: inline-flex;
justify-content: center;
align-items: center;
}
}
#copyarea {
visibility: hidden;
background-color: #1f2937;
color: #fff;
}

View File

@ -15,6 +15,7 @@
<div id="options">
<label><input type="checkbox" id="wide">Breiter Modus</label>
</div>
<textarea id="copyarea"></textarea>
</div>
<script src="./index.js"></script>

View File

@ -1,3 +1,4 @@
"use strict";
const words = "abbau abend abzug adler akten aktie aktiv akute alarm album alias allem allen aller alles alles allzu alten alten alter alter älter altes ampel ämter amtes angst anruf april areal arena ärger armee armen armut arten ärzte asien augen autor autos babys baden bande bands basis bauch bauen bauen bauer bäume beach beben beide beide beine bekam berge beruf beste beste beute bevor bevor bezog bezos bezug biete bitte bitte blatt blick blieb blume boden bogen bombe börse brach brand braun breit brief bruch brust buben bühne bunte büros busse chaos circa clubs couch dabei dabei dafür dafür daher daher dahin damen damit damit danke danke daran daran darin darin darum darum daten datum dauer davon davon davor davor debüt decke deckt deine delta denen denke denkt deren deren desto dicht diebe dient diese diese dinge dosen dosis drama drauf dreht droht druck duell durch durch dürfe ebene echte edeka einem einem einen einen einer einer eines eines einig einst enden endet engen enger enorm ergab erich ernst ernst ernte erste erste essen essen etwas etwas exakt extra fahrt fährt falle falle fälle falls falls fällt fängt farbe fasst faust fazit fehle fehlt feier feste feuer figur filme films final finde firma flick flüge fluss fokus folge folgt forum fotos frage frage fragt freie freie freue freut frist frust fuchs fügte fühle fühlt führe führt funke gaben ganze ganze gänze gäste geben gegen gegen gehen geist gelbe gelte genau genau genug gerät gerät gerne getan ginge glück götze gramm griff griff grill gross grund grüne grüne gutem guten guten guter gutes gutes haare haben haben hafen hagel haken halbe halle halte hände handy hängt harte hatte hätte hätte hause heben helfe heran herrn herum hetze heute heute hielt hilfe hilft hinzu hinzu hitze hobby hoffe hofft hohem hohen höhen hoher höher hohes holen holte hören hörte hotel humor hunde hürde ideal ideen ihnen ihnen ihrem ihrem ihren ihren ihrer ihrer ihres ihres immer immer indem indes index infos innen insel jäger jahre jedem jeden jeden jeder jeder jedes jedes jenem jenen jener jenes jetzt jetzt jubel junge junge jungs kabel kader kalte kälte kamen kämen kampf kanal karte kasse katze kauft kehrt keine keine kenne kennt kinos kitas klage klang klare klärt kleid klein klein klima klubs knapp knapp kohle komme kommt kommt könig könne könnt konto köpfe kraft krank krebs kreis kreuz krieg krise krone küche kugel kunde kunst kurse kurve kurze kürze küste labor lacht laden laden läden lagen lager lange lange länge lasse lässt latte laufe laufe läuft laune leben leben lebte leder leere leere legen legte lehnt lehre leise lernt lesen lesen leser leute licht liebe liebe liebt liege liegt liest linie linke linke links liste liter lobte lockt löhne lohnt lokal lösen löste löwen lücke mache macht macht mahnt manch marke markt maske masse mauer meine meine meint meist meist menge merkt messe messi meter miete milch minus minus mitte model modus mögen monat motiv motor motto musik müsse musst müsst mutig nacht nagel nahen näher namen natur nazis neben neben nebst nehme nennt neuem neuen neuen neuer neuer neues neues nicht nicht nimmt noten nötig nutzt offen öfter ohren opfer orten osten paare packt paket panik papst parat parks passt pause pferd pfund phase pixel pläne plant platz preis prinz probe profi prüft punkt quasi quote räder radio rande rasch rasen raten rauch räume räumt recht recht reden reden redet regel regen regie reich reihe reine reise rente rolle rollt roman rosen roten roten rückt rufen ruhig runde sache sagen sagen sagte sahen sätze sauer schon schon schön schub sechs sechs seele sehen seien seine seine seite senat serie setze setzt sicht siege siehe sieht singt sinkt sinne sitze sitzt sogar sogar solch solle somit somit sonne sonst sonst sorge sorgt sowie spart spass spiel sport spürt staat stadt stahl stall stand stand starb stark start statt statt staub stehe steht stein stern stets stich stieg still stock stoff stolz stolz stopp strom stück stufe stuft sturm sturz suche suche sucht süden summe super super szene tafel tagen tages taten täter tätig teile teils teils teilt tempo tesla tests teuer teure texte thema these tiefe tiefe tiere tipps tisch titel tolle tonne toren total toten toten töten trage trägt traum traut treue tritt trotz trotz türen übrig umbau umzug unmut unser unser unten unter unter vater video viele viele villa viren virus vogel vögel volle vorab voran vorne wache waffe wagen wagen wählt wahre waren waren wären warme wärme warnt warum warum weder weder wegen wegen wehrt weile weise weist weite welle wende wenig wenig werde werke werte wesen wider wiese wieso wieso wirbt wirft wirkt wisse wobei wobei woche wofür woher wohin wohin wohnt wölfe wolle wollt womit worte wovon wuchs wucht wurde würde würde wüste zahlt zählt zähne zeige zeigt zeuge zieht ziele zielt zogen zudem zudem zügig zumal zumal zuvor zuvor zwang zweck zwölf"
.split(" ")
.map(x => x.toUpperCase());
@ -32,7 +33,7 @@ function saveLocalStorage() {
localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(saveData));
}
const daysSinceEpoch = Math.floor(new Date()/8.64e7) + 1270;
const daysSinceEpoch = Math.floor(new Date()/8.64e7);
const startDay = 19046;
const daysSinceStart = daysSinceEpoch - startDay + 1;
const rng = mulberry32(daysSinceEpoch);
@ -56,6 +57,72 @@ let input = "";
const data = [];
const done = [false, false, false, false];
function gameOver() {
const NUMBERS = "0⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣";
const ANY = "⬜";
const POSITION = "🟨";
const CORRECT = "🟩";
const DONE = "⬛⬛⬛⬛⬛";
const URL = "https://studwww.informatik.kit.edu/~s_keller/qwörtle/";
let text = "";
text += "Tägliches Qwörtle #" + daysSinceStart + "\n";
for (let i = 0; i < 4; i++) {
if (done[i]) {
text += NUMBERS.slice(done[i] * 3, done[i] * 3 + 3);
}
if (i % 2 === 1) {
text += "\n";
}
}
text += URL + "\n";
for (let i = 0; i < 2; i++) {
for (let j = 0; j < MAX_GUESSES; j++) {
const rowA = data[2*i * MAX_GUESSES + j];
const rowB = data[(2*i+1) * MAX_GUESSES + j];
let part1 = "";
let part2 = "";
for (let k = 0; k < WORD_LENGTH; k++) {
if (rowA[k].classList.contains("correct")) {
part1 += CORRECT;
} else if (rowA[k].classList.contains("wrong-position")) {
part1 += POSITION;
} else {
part1 += ANY;
}
if (rowB[k].classList.contains("correct")) {
part2 += CORRECT;
} else if (rowB[k].classList.contains("wrong-position")) {
part2 += POSITION;
} else {
part2 += ANY;
}
}
if (done[2*i] && done[2*i] <= j) {
part1 = DONE;
}
if (done[2*i+1] && done[2*i+1] <= j) {
part2 = DONE;
}
if (part1 === DONE && part2 === DONE) {
break;
}
text += part1 + " " + part2 + "\n";
}
if (i === 0) {
text += "\n";
}
}
const textarea = document.getElementById("copyarea");
textarea.style.visibility = "visible";
textarea.value = text;
textarea.select();
document.execCommand("copy");
setTimeout(() => {
textarea.value = text; // not sure why this is needed..
textarea.select();
}, 0);
}
function processKey(e) {
if (e.key === "Enter" && guessed.length < MAX_GUESSES) {
if (input.length < 5) {
@ -105,7 +172,7 @@ function processKey(e) {
}
}
if (input === word) {
done[pos] = true;
done[pos] = guessed.length + 1;
}
}
guessed.push(input);
@ -116,6 +183,9 @@ function processKey(e) {
}
saveLocalStorage();
input = "";
if (guessed.length == MAX_GUESSES || done.indexOf(false) === -1) {
gameOver();
}
return;
} else if (e.key === "Backspace" && input.length > 0) {
for (let pos = 0; pos < 4; pos++) {