HTML入門その7-ifの代わりにswitchをつかう

ポストに書きましたが,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でおこなった場合です

はい.行数は多いですが,文字数は少なくてすっきりしてますね〜