色の値は以下のように定数として用意します。省略このように文字列で定義したのは、「context.fillStyle」に代入する際に記述量が減るためです。bcolorの宣言ブロックの色は「bcolor」という変数の値(1〜4)によって変動します。「1〜4」としたのは、「field」に実際に登録するためです。「1」は赤、「2」は青、「3」は緑、「4」は黄に対応させます。ランダムに決定するランダム値計算式ランダム値の計算では「Math.random()」関数を用います。この関数は「0以上1未満」のランダムな値を小数で返します。ブロックの種類ブロックの種類は全部で7種類あるので、「0〜6」までの7つの値がランダムで出て欲しいところです。「Math.random()」関数は「0以上1未満」の値がランダムに返されます。そこで、「Math.random()」で返された値を「7倍」して、さらにその値を切り捨てて整数にします。それを式にすると以下のようになります。7倍した小数を切り捨てこれで「0〜6」までの値がランダムに返されます。ブロックの回転これは「0〜3」の4つの値がランダムで出て欲しいので、以下のように記述します。4倍した値を切り捨てブロックの色このテトリスでは色によって出現率と得点が変わります。それぞれの出現率は以下のようになります。赤色・・・35%青色・・・30%緑色・・・20%黄色・・・15%このように、「0以上100未満」の値が出て欲しい、かつ確率が異なる場合は以下のように「if」を用いて記述します。15%プログラム先ほど記述したプログラムは少し長いので、関数化します。変える場合にこの関数を呼び出します。e.keyCode;//省略Next表示を行う次に出現するブロックが表示されるのがテトリスです。このNext表示の機能を追加していきます。変数の追加このNext表示は、もう1つのブロックを作るようなものなので、Next表示用ブロックの変数を追加します。省略Next表示用ブロックの変数設定Next表示用ブロックは、文字通り次にブロックがなんなのかを示してくれます。次に出てくるブロックの変数(btype・brot・bcolor)はそれに一致する必要があります。15%}//省略Next表示の描画Next表示の描画は矩形の描画、座標設定などを行うだけですので、コピペでOKです。座標が気に入らない場合は変えてください。カウンタを更新requestAnimationFrame(main);}次回はスコア・ゲームオーバー処理などを追加し、完成までこぎつけます。その弾が存在しているかどうかのフラグ。フラグを表す変数は基本的に「true・false」で管理します。「update」関数内の「30カウントずつ」という「if」文に新たな条件文を付け加えます。今、ブロックが壁・ブロックに着地した段階までできました。今回は3種類の敵が必要なので、「水色」の敵は「0」、「緑色」の敵は「1」、「黄色」の敵は「2」とします。コメントをキャンセルメールアドレスが公開されることはありません。R1カテゴリーJavaJavaFXJavaScriptPythonRこのサイトの管理人IT系だんしプログラミングが大好きな人。趣味でゲームやツール製作をしながら、プログラミング記事を書き続けています。