情報学部 | 菅沼ホーム | JavaScript 目次 | 索引 |
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>ゲーム枠の作成</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript" SRC="main/MainPanel.js"></SCRIPT> 09 <SCRIPT TYPE="text/javascript" SRC="start/StartPanel.js"></SCRIPT> 10 <SCRIPT TYPE="text/javascript" SRC="game/GamePanel.js"></SCRIPT> 11 <SCRIPT TYPE="text/javascript" SRC="clear/GameClearPanel.js"></SCRIPT> 12 <SCRIPT TYPE="text/javascript" SRC="over/GameOverPanel.js"></SCRIPT> 13 </HEAD> 14 <BODY CLASS="eeffee" onLoad="mp_start()"> 15 <H1>ゲーム枠の作成</H1> 16 <CANVAS ID="canvas_e" STYLE="background-color: #ffffff;" WIDTH="400" HEIGHT="300"></CANVAS><BR> 17 <A HREF="method.htm" TARGET="method"><BUTTON ID="method" CLASS="std">遊び方</BUTTON></A> 18 <BUTTON ID="start" CLASS="std" onClick="gp_start()">ゲーム開始</BUTTON> 19 <BUTTON ID="clear" CLASS="std" onClick="gp.next(0)">ゲームクリア</BUTTON> 20 <BUTTON ID="over" CLASS="std" onClick="gp.next(1)">ゲームオーバー</BUTTON> 21 <BUTTON ID="first" CLASS="std" onClick="st_start()">最初から再開</BUTTON> 22 <BUTTON ID="finish" CLASS="std" onClick="mp.finish()">ゲーム終了</BUTTON> 23 </BODY> 24 </HTML>
01 mp = null; // MainPanel オブジェクト 02 03 // 04 // MainPanel の開始 05 // 06 function mp_start() 07 { 08 // キャンバス情報 09 let canvas = document.getElementById('canvas_e'); // キャンバス要素の取得 10 let ctx = canvas.getContext('2d'); // キャンバスからコンテキストを取得 11 // MainPanel オブジェクト 12 mp = new MainPanel(canvas, ctx); 13 // StartPanel の表示 14 st_start(); 15 } 16 // 17 // MainPanel オブジェクト(プロパティ) 18 // 19 function MainPanel(canvas, ctx) 20 { 21 this.canvas = canvas; // キャンバス要素 22 this.ctx = ctx; // キャンバスのコンテキスト 23 this.level = 1; // ゲームレベル 24 return this; 25 } 26 // 27 // MainPanel オブジェクト(メソッド) 28 // 29 MainPanel.prototype.finish = function() 30 { 31 // キャンバスのクリア 32 mp.ctx.clearRect(0, 0, mp.canvas.width, mp.canvas.height); 33 // ボタンを非表示 34 document.getElementById('method').style.display = "none"; 35 document.getElementById('start').style.display = "none"; 36 document.getElementById('clear').style.display = "none"; 37 document.getElementById('over').style.display = "none"; 38 document.getElementById('first').style.display = "none"; 39 document.getElementById('finish').style.display = "none"; 40 }
01 // 02 // StartPanel の開始 03 // 04 function st_start() 05 { 06 mp.level = 1; // ゲームレベルの設定 07 // キャンバスのクリア 08 mp.ctx.clearRect(0, 0, mp.canvas.width, mp.canvas.height); 09 // ゲームタイトルの表示 10 mp.ctx.font = "40px 'MS ゴシック'"; 11 mp.ctx.textBaseline = "middle"; 12 mp.ctx.textAlign = "center"; 13 mp.ctx.fillStyle = "rgb(0, 0, 0)"; 14 mp.ctx.fillText("Game Title", mp.canvas.width/2, mp.canvas.height/2); 15 // ボタンの表示制御 16 document.getElementById('method').style.display = ""; 17 document.getElementById('start').style.display = ""; 18 document.getElementById('clear').style.display = "none"; 19 document.getElementById('over').style.display = "none"; 20 document.getElementById('first').style.display = "none"; 21 document.getElementById('finish').style.display = "none"; 22 document.getElementById('start').innerHTML = "ゲーム開始"; 23 }
01 gp = null; // GamePanel オブジェクト 02 03 // 04 // GamePanel の開始 05 // 06 function gp_start() 07 { 08 // GamePanel オブジェクト 09 gp = new GamePanel(); 10 // タイマーのスタート 11 if (mp.level == 1) 12 gp.timerID = setInterval('gp.draw()', 500); 13 else if (mp.level == 2) 14 gp.timerID = setInterval('gp.draw()', 100); 15 else 16 gp.timerID = setInterval('gp.draw()', 20); 17 // ボタンの表示制御 18 document.getElementById('method').style.display = "none"; 19 document.getElementById('start').style.display = "none"; 20 document.getElementById('clear').style.display = ""; 21 document.getElementById('over').style.display = ""; 22 document.getElementById('first').style.display = "none"; 23 document.getElementById('finish').style.display = "none"; 24 } 25 // 26 // GamePanel オブジェクト(プロパティ) 27 // 28 function GamePanel() 29 { 30 this.x = new Array(); // 円の位置(x座標) 31 this.y = new Array(); // 円の位置(y座標) 32 this.timerID = -1; 33 // 背景画像の読み込み 34 this.img = new Image(); 35 if (mp.level == 1) 36 this.img.src = "image/game1.jpg"; 37 else if (mp.level == 2) 38 this.img.src = "image/game2.jpg"; 39 else 40 this.img.src = "image/game3.jpg"; 41 return this; 42 } 43 // 44 // GamePanel オブジェクト(メソッド draw) 45 // 46 GamePanel.prototype.draw = function() 47 { 48 // キャンバスのクリア 49 mp.ctx.clearRect(0, 0, mp.canvas.width, mp.canvas.height); 50 // 背景画像を表示 51 mp.ctx.drawImage(gp.img, 0, 0); 52 // 円の描画 53 for (let i1 = 0; i1 < 3; i1++) { 54 gp.x[i1] = Math.floor((mp.canvas.width - 40) * Math.random()) + 20; 55 gp.y[i1] = Math.floor((mp.canvas.height - 40) * Math.random()) + 20; 56 mp.ctx.beginPath(); 57 if (i1 == 0) 58 mp.ctx.fillStyle = "rgb(255, 0, 0)"; 59 else if (i1 == 1) 60 mp.ctx.fillStyle = "rgb(0, 255, 0)"; 61 else 62 mp.ctx.fillStyle = "rgb(128, 128, 128)"; 63 mp.ctx.arc(gp.x[i1], gp.y[i1], 20, 0, 2*Math.PI); 64 mp.ctx.fill(); 65 } 66 } 67 // 68 // GamePanel オブジェクト(メソッド next) 69 // 70 GamePanel.prototype.next = function(sw) 71 { 72 clearInterval(gp.timerID); // タイマーの停止 73 if (sw == 0) 74 gcp_start(); 75 else 76 gop_start(); 77 }
if (mp.level == 1) gp.timerID = setInterval('gp.draw()', 500); else { if (mp.level == 2) gp.timerID = setInterval('gp.draw()', 100); else gp.timerID = setInterval('gp.draw()', 20); }
for (式1; 式2; 式3) {
文(複数の文も可)
}
while (論理式) {
文(複数の文も可)
}
do { 文(複数の文も可) } while (論理式) ;
let i1 = 0; while (i1 < 3) {
i1++;
x1, x2, x3; y1, y2, y3;
a = new Array(); // 要素数は未定 a = new Array(100); // 要素数が100の配列 a = new Array("abc", "efg", "hij"); // 各要素を文字列によって初期設定
let a = new Array(2); // let a = new Array(); でも可 for (let i1 = 0; i1 < 2; i1++) a[i1] = new Array(3); // 上の例のように,初期設定も可能
01 // 02 // GameClearPanel の開始 03 // 04 function gcp_start() 05 { 06 // キャンバスのクリア 07 mp.ctx.clearRect(0, 0, mp.canvas.width, mp.canvas.height); 08 // タイトルの表示 09 mp.ctx.font = "40px 'MS ゴシック'"; 10 mp.ctx.textBaseline = "middle"; 11 mp.ctx.textAlign = "center"; 12 mp.ctx.fillStyle = "rgb(0, 0, 0)"; 13 mp.ctx.fillText("Game Clear!", mp.canvas.width/2, mp.canvas.height/2); 14 // ボタンの表示制御 15 document.getElementById('method').style.display = "none"; 16 document.getElementById('clear').style.display = "none"; 17 document.getElementById('over').style.display = "none"; 18 if (mp.level > 2) { // 最初からゲーム再開 19 document.getElementById('start').style.display = "none"; 20 document.getElementById('first').style.display = ""; 21 } 22 else { // レベルアップ 23 mp.level++; 24 document.getElementById('start').style.display = ""; 25 document.getElementById('first').style.display = "none"; 26 document.getElementById('start').innerHTML = "次のレベル"; 27 } 28 document.getElementById('finish').style.display = ""; 29 }
// // GameOverPanel の開始 // function gop_start() { // キャンバスのクリア mp.ctx.clearRect(0, 0, mp.canvas.width, mp.canvas.height); // タイトルの表示 mp.ctx.font = "40px 'MS ゴシック'"; mp.ctx.textBaseline = "middle"; mp.ctx.textAlign = "center"; mp.ctx.fillStyle = "rgb(0, 0, 0)"; mp.ctx.fillText("Game Over!", mp.canvas.width/2, mp.canvas.height/2); // ボタンの表示制御 document.getElementById('method').style.display = "none"; document.getElementById('start').style.display = ""; document.getElementById('clear').style.display = "none"; document.getElementById('over').style.display = "none"; document.getElementById('first').style.display = ""; document.getElementById('finish').style.display = ""; document.getElementById('start').innerHTML = "現レベルで再開"; }
情報学部 | 菅沼ホーム | JavaScript 目次 | 索引 |