stimmt dieser code?
ich hab was ausprobiert aber da scheint was falsch zu sein, sieht man einen Fehler auf den ersten blick?
schreibe den javascript code für ein spiel und erkläre hinterher wie es funktioniert
// variablen
let score = 0;
let time = 10;
// Elemente im HTML-Dokument auswählen
const scoreDisplay = document.getElementById('score');
const timeDisplay = document.getElementById('time');
const startButton = document.getElementById('start-button');
const gameArea = document.getElementById('game-area');
// Start
startButton.addEventListener('click', startGame);
function startGame() {
startButton.disabled = true;
score = 0;
time = 10;
scoreDisplay.textContent = score;
timeDisplay.textContent = time;
gameArea.addEventListener('click', increaseScore);
countdown();
}
// Punktzahl erhöhen
function increaseScore() {
score++;
scoreDisplay.textContent = score;
}
// Countdown-Funktion
function countdown() {
const timer = setInterval(() => {
time--;
timeDisplay.textContent = time;
if (time === 0) {
clearInterval(timer);
endGame();
}
}, 1000);
}
// ende
function endGame() {
gameArea.removeEventListener('click', increaseScore);
startButton.disabled = false;
alert('Deine Punktzahl: ' + score);
}
Der Code beginnt mit der Initialisierung einiger Spielvariablen:
(Punktzahl) und
(Zeit). Diese Variablen werden später im Spiel verwendet, um den Fortschritt des Spielers zu verfolgen.
Als Nächstes werden einige Elemente im HTML-Dokument ausgewählt, die zur Anzeige und Interaktion mit dem Spiel verwendet werden. Dazu gehören das Element, das die Punktzahl anzeigt (
), das Element, das die verbleibende Zeit anzeigt (
timeDisplay
), der Startbutton (
startButton
) und das Spielfeld (
gameArea
).
startButton
erhält einen Eventlistener, der auf das Klicken des Buttons reagiert. Sobald der Startbutton geklickt wird, wird die Funktion
startGame
aufgerufen.
Die Funktion
startGame
wird aufgerufen, wenn das Spiel gestartet wird. Sie deaktiviert den Startbutton, setzt die Punktzahl und die verbleibende Zeit auf ihre Ausgangswerte zurück und aktualisiert die Anzeige entsprechend. Ein Eventlistener wird dem Spielfeld hinzugefügt, um auf Klicks des Spielers zu reagieren und die Punktzahl zu erhöhen. Die Funktion
countdown
wird aufgerufen, um den Countdown zu starten.
Die Funktion
increaseScore
wird aufgerufen, wenn der Spieler auf das Spielfeld klickt. Sie erhöht die Punktzahl um eins und aktualisiert die Anzeige entsprechend.
Die Funktion
countdown
startet den Countdown von 10 Sekunden. Dazu wird ein Timer mit
setInterval
verwendet, der alle 1000 Millisekunden (1 Sekunde) die verbleibende Zeit um eins verringert und die Anzeige aktualisiert. Wenn die Zeit auf 0 reduziert wird, wird der Timer mit
clearInterval
gestoppt, und die Funktion
endGame
wird aufgerufen.
Die Funktion
endGame
beendet das Spiel. Sie entfernt den Eventlistener vom Spielfeld, aktiviert den Startbutton wieder und zeigt eine Benachrichtigung an, die die erreichte Punktzahl des Spielers anzeigt..
1 Antwort
Wäre hilfreich zu erfahren, was genau nicht geht.
Dein Code sieht auf den ersten Blick ok aus., wobei ich sagen muss, dass ich plain javascript schon lange nicht mehr geschrieben habe. Ob .textContent und .disable funktionieren, darauf verlasse ich mich jetzt mal. Mir ist aber aufgefallen, dass du setIntervall verwendest. Damit habe ich sehr schlechte Erfahrungen gemacht. Es hat oft nicht wie erwartet funktioniert. Deshalb habe ich von dieser Funktion Abstsnd genommen. Vielleicht ist das hier auch das Problem. Ersetze mal setIntervall durch setTimeout. (was, wie ich finde, auch einfacher zu händeln ist)
das sieht dann folgendermaßen aus:
function countdown() {
time--;
timeDisplay.textContent = time;
//oder timeDisplay.textContent = --time;
if (time <= 0) {
endGame();
}else{
setTimeout(countdown,1000);
}
}