前ポストに書きましたが,ifの代わりにswitchを使うことができます.
ifは範囲で操作したいときに,例えば「10以上なら」とか「20以上なら」といった場面で使い,switchは値を決め打ちしたいとき「10なら,5なら」という場面で使い分けるのでもいいでしょう.
switchのプログラムの構造
switch(ここに変数名){ //switchはここから case 10: //変数が10の場合の意味 <-10の後はコロンだよ!セミコロンじゃないよ! あと−> ○case 10 ×case10 です myX = myX + sokudo;//10の時の処理 break; //変数が10の時の処理はここまでよ case 20: //変数が20の場合は,, //20の時の処理 break; //変数が20の時の処理ここまでよ default: //どれにもひっかからなかった場合は //どれにも合致しないときの処理をここに break; //どれにもひっかからなかったときの処理ここまで
という構造です.
case 10のbreakを消して,20が来ても10のときと,20のときの処理2つとも実行するなんて方法もあるみたいですね.
このswitch,ゲームで使うとすれば,,,私は使ったことがないのですが,1万点突破時に,突破した効果音と1万点の文字のフォントと色と大きさを変更し,しばらく表示をさせておく というプログラムを実行するときなどにも使えそうですね.下線部だけで5つのプログラムが必要ですが,,,めんどくさいようですが,ゲームを盛り上げるために必要な処理です.ね.
でも1万点ごとに同じパターンを表示させたいのなら,キリ番の点数を引数にして,点数の表示プログラムに渡すだけになります.そうするとすごーく楽になりますよね〜
前ポストの上下左右キーのプログラム
<!DOCTYPE html> <html> <head> <title>Key2</title> <meta charset="UTF-8"> </head> <body> <h1>Key2</h1> <canvas id="myCanvas" width="300" height="300" style="border:1px solid #000000;"></canvas> <script type="text/javascript"> var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); var migi = false; var myX = 0; var myY = 0; var sokudo = 5; function kyesage(myEvt) { var myCode = myEvt.keyCode; context.clearRect(myX, myY, 20, 20); switch(myCode){ case 39: myX = myX + sokudo; break; case 40: myY = myY + sokudo; break; case 38: myY = myY - sokudo; break; case 37: myX = myX - sokudo; break; default: //どれにも合致しないときの処理 break; } } document.onkeydown = kyesage; function draw() { context.fillStyle = "#FF0000";//赤 context.fillRect(myX, myY, 20, 20); } setInterval(draw, 10); </script> </body> </html>
上下左右入力をswitchでおこなった場合です
はい.行数は多いですが,文字数は少なくてすっきりしてますね〜