リケジョまなのブログ

大学生活・受験・オセロなどについて書いています。

JavaScriptでテトリスを作って学んだこと・感想

みなさんこんにちは!

JavaScriptでゲームを作りまくったらプログラミングを習得できるのか」という挑戦をしているプログラミング初心者です。

2つ目のゲームを作成したので、参考サイトや感想を述べたいと思います。

あくまで勉強の記録のような記事であり、このサイトを見てもJavaScriptができるようになるわけではないのでご注意ください。

 

1つ目のゲームはオセロ↓ 

 

 

2つ目のゲームはテトリス

f:id:mana_312:20210228212147j:plain

2つ目のゲームにはテトリスを選びました。

テトリスも私が好きなゲームの一つで、高校時代の休み時間にはスマホテトリスゲームばかりしていましたね。

コードの意味を理解しようとしながら、4時間ほどで完成させました。

 

完成形↓

キーボードで操作しています。

 

参考サイト↓

 

ほとんど参考サイト通りですが、

  • 矢印ボタンのテキスト選択を無効
  • 矢印ボタンクリックのカーソルを指に

以上の点でアレンジ?を加えました。

 

JavaScriptをもっとできるようになったら、次の2点を改善したいです。

  • ホールドボックスの実装
  • 落ちる場所がわかりやすいように格子を描く

 

テトリスを作って学んだJavaScriptの知識

f:id:mana_312:20210228212256j:plain

Canvas

まずは、JavaScriptにはCanvasというものがあることを学びました。

Canvasは動的に図を描くときに用います。

 

Canvasは次の手順で描いていきます。

Canvasでは、HTMLとJavaScriptを組み合わせて描画内容を指定します。 Canvasによる描画は、大まかに以下のような流れとなります。

  1. HTMLで、<canvas>要素の幅と高さ、および、id名を指定する
  2. getElementByIdメソッドでHTMLと関連付けて、getContextメソッドで描画機能を有効にする
  3. canvasAPIの仕様で定められたメソッドやプロパティを使用して、具体的な描画内容を指定する

引用:http://www.htmq.com/canvas/002.shtml

 

たしかに今回のテトリスでは、htmlに

  • <canvas id="stage" width="250px" height="500px" style="background-color:black;"></canvas>

というコードを書きました。

 

そしてJavaScriptで描画機能を有効化。

  • this.stageCanvas = document.getElementById("stage");
  • let context = canvas.getContext("2d");

 

これによってテトリスを描けるようになるのですね。

なるほど。

 

class

htmlにもclassがありましたが、JavaScriptでもclassが出てきました。

しかし、2つのclassは違う意味のようです。

JavaScriptのclassはオブジェクトの設計書のような役割を担います。

 

テトリスの作成では

というコードを描きました。

{ }の中に定義を書けば、何回でも同じ構造のオブジェクトを容易に書けるようです。

 

正直4割くらいの理解です、、、。

また他のゲーム作成で出てくることを期待します笑。

 

window.onkeydown = (e) => { }

キーが押されたときに{ }内のイベントを実行します。

これはわかった気がします。

 

他にも知らないことがたくさんありましたが、書ききれないので3つに絞りました。

 

JavaScript初心者がテトリスを作った感想

f:id:mana_312:20210228212346j:plain

正直、テトリスJavaScript初心者にとって難しすぎたと思います。

興味本位で作成してみましたが、5割ほどの理解です。

 

オセロ作成の難易度が★★☆☆☆なら、テトリスは★★★★☆くらいに感じました。

そのため、JavaScript初心者の人にはおすすめしません。

 

ただ、テトリスが好きな私としてはけっこう楽しめました。

テトリスが好きな人は作ってみてもいいかもしれません。