はじめに
MDNにJavaScriptを使ったWEBゲーム制作のチュートリアルとして、以下のページがあります。
https://developer.mozilla.org/ja/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript
そのページでは簡単なブロックくずしゲームを作る形でWEBゲームの作り方が紹介されています。これを参考に同様のゲームをTypeScriptで作っていきたいと思います。
HTMLの準備
最初に、HTMLのひな型を作ります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ブロック崩し</title>
<script src="main.js"></script>
<style>
#gameContainer {
display: block;
background-color: black;
padding: 4px;
width: max-content;
font-size: 12pt;
}
#gameScore {
border: 2px solid yellow;
border-radius: 8px;
padding: 10px;
color: yellow;
}
#message {
border: 2px solid gray;
border-radius: 8px;
min-height: 50px;
padding: 10px;
color: white;
}
</style>
</head>
<body>
<div id="gameContainer">
<div id="gameScore">SCORE:10000</span></div>
<canvas id="gameCanvas" width="320" height="320"></canvas>
<div id="message">メッセージ</div>
</div>
</body>
</html>
TypeScriptでゲームプログラムのときとまったく変わらないのも面白くないので、点数表示のために専用<div>を用意しました。
HTMLだけだとわかりにくいので、実際の例を下に示します。
SCORE:10000
メッセージ
TypeScriptの準備
ゲームプログラムのメイン処理を行うTypeScriptをコーディングしていきましょう。
まずは核となるGameMngクラスは、とりあえずのひな型として以下のように記述します。
import { GameLoop } from './game/GameLoop';
export class GamemMng extends GameLoop {
constructor() {
super();
}
}
クラスGameLoopは、「TypeScriptでゲームプログラム」からの流用です。(リンク先に全コードがあります。)
今回からは基本的に「1クラス1ファイル」で記載しているので、GameLoopをimportしています。(複数ファイルで構成されるので、最終的なjavascriptはwebpackを使って作成します。)
上のコードだけではGameMngクラスを宣言しただけなので、newした後、Start()するコードをmain.tsに記述します。
import { GameMng } from './GameMng';
const Game = new GamemMng();
Game.Start();
コメント