| 情報学部 | 菅沼ホーム | 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 目次 | 索引 |