Tworzenie stron internetowych - poradnik
Znając podstawy (link do artykułu) możemy napisać prostą grę przeglądarkową przy użyciu TypeScript i JavaScript. Poniżej przedstawiam przykładowy kod gry „Kliknij na kota”:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Kliknij na kota</title>
</head>
<body>
<div id="game">
<h1>Kliknij na kota!</h1>
<p id="score">Wynik: 0</p>
<img id="cat" src="cat.png">
</div>
<script src="game.js"></script>
</body>
</html>
TypeScript:
let score = 0;
const cat = document.getElementById("cat") as HTMLImageElement;
const scoreElement = document.getElementById("score") as HTMLParagraphElement;
cat.addEventListener("click", () => {
score++;
scoreElement.textContent = `Wynik: ${score}`;
});
function gameLoop() {
requestAnimationFrame(gameLoop);
}
gameLoop();
Ten kod tworzy bardzo prostą grę polegającą na klikaniu na obrazek kota. Gracz musi jak najszybciej kliknąć na kota, aby zdobyć jak najwięcej punktów.
Kod TypeScript tworzy trzy zmienne: score
przechowującą wynik gracza, cat
przechowującą obiekt obrazka kota i scoreElement
przechowującą element HTML, który wyświetla wynik gracza.
Następnie kod dodaje nasłuchiwacz zdarzeń do obrazka kota, który zwiększa wynik gracza o jeden punkt za każdym razem, gdy gracz kliknie na kota. Wynik jest wyświetlany na stronie za pomocą elementu scoreElement
.
Ostatnia funkcja gameLoop
jest pustą pętlą gry, która wywołuje się w nieskończoność, aż do momentu, gdy gra zostanie zamknięta przez użytkownika. Ta pętla jest wywoływana w ten sposób, aby gra była „responsywna” i aktualizowała się w czasie rzeczywistym.
Jedyne co pozostało to skompilować kod TypeScriptu na kod JavaScript. Wpisujemy komendę w wierszu poleceń: tsc game.ts.
Oczywiście, możemy zmodyfikować naszą grę „Kliknij na kota” i dodać animację kotka, która zmienia jego położenie co sekundę. Do tego wykorzystamy zdarzenie setInterval()
w TypeScript.
let score = 0;
const cat = document.getElementById("cat") as HTMLImageElement;
const scoreElement = document.getElementById("score") as HTMLParagraphElement;
let catLeft = 0;
let catTop = 0;
setInterval(() => {
catLeft = Math.floor(Math.random() * window.innerWidth);
catTop = Math.floor(Math.random() * window.innerHeight);
cat.style.left = `${catLeft}px`;
cat.style.top = `${catTop}px`;
}, 1000);
cat.addEventListener("click", () => {
score++;
scoreElement.textContent = `Wynik: ${score}`;
});
function gameLoop() {
requestAnimationFrame(gameLoop);
}
gameLoop();
W tym kodzie dodaliśmy dwie zmienne catLeft
i catTop
, które będą przechowywać pozycję kotka na ekranie. Należy pamiętać, żeby nie używać słów kluczowych takich jak top
, ponieważ są one zarezerwowane w języku JavaScript. Top jest to zmienna globalna, która przechowuje pozycję górną okna przeglądarki. Następnie dodaliśmy funkcję setInterval
, która wywołuje się co 1 sekundę. Wewnątrz tej funkcji, kod generuje nową pozycję kotka za pomocą funkcji Math.random()
i ustawia ją jako wartość stylu CSS elementu cat
. W ten sposób kot zmieni swoje położenie co sekundę.
Reszta kodu pozostaje taka sama jak w poprzednim przykładzie.
Musimy oczywiście dodać style CSS
body {
overflow: hidden;
}
.game {
width: 100vw;
height: 100vh;
position:relative;
}
.game img {
position: absolute;
}
Powinniśmy jeszcze dodać warunki, żeby kot poruszał się tylko w obrębie okna przeglądarki.
const maxWidth = window.innerWidth - cat.clientWidth;
const maxHeight = window.innerHeight - cat.clientHeight;
oraz
if (catLeft < 0) {
catLeft = 0;
}
if (catTop < 0) {
catTop = 0;
}
Oczywiście ta gra jest bardzo prosta, ale pokazuje, jak można użyć TypeScriptu do tworzenia gier przeglądarkowych. Link do gry: https://zyrex.eu/przyklady/kliknij_kota/