diff --git a/.gitignore b/.gitignore index d0b9340..dabf315 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /nizika +/nizika_nizika /nml +/nizika_nml diff --git a/assets/kita.wav b/assets/kita.wav new file mode 100644 index 0000000..0f51d92 Binary files /dev/null and b/assets/kita.wav differ diff --git a/forms/footer.frm.php b/forms/footer.frm.php new file mode 100644 index 0000000..5162443 --- /dev/null +++ b/forms/footer.frm.php @@ -0,0 +1,3 @@ + + diff --git a/forms/header.frm.php b/forms/header.frm.php new file mode 100644 index 0000000..664f7b1 --- /dev/null +++ b/forms/header.frm.php @@ -0,0 +1,3 @@ +
+
+ diff --git a/forms/index.frm.php b/forms/index.frm.php index 4f9bbdc..8b7073e 100644 --- a/forms/index.frm.php +++ b/forms/index.frm.php @@ -1,9 +1,10 @@ + - 伊地知ニジカ - 鑑賞編 + ニジカもんすたぁ!! - 入口 diff --git a/forms/top.frm.php b/forms/top.frm.php new file mode 100644 index 0000000..291d93d --- /dev/null +++ b/forms/top.frm.php @@ -0,0 +1,15 @@ + + + + + + + + +
+

ニジカもんすたぁ!! にようこそ!

+
+ + + + diff --git a/scripts/main.js b/scripts/main.js index 42421df..72bf714 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -1,9 +1,10 @@ const canvas = document.getElementById ('canvas'); const ctx = canvas.getContext ('2d'); -const bg = (function () +const bg = ( + function () { - const _ = document.createElement('canvas'); + const _ = document.createElement ('canvas'); const img = new Image (); _.width = 1920; @@ -11,7 +12,8 @@ const bg = (function () const ctx = _.getContext ('2d'); - img.onload = (function () + img.onload = ( + function () { ctx.drawImage (img, 0, 0); }); @@ -21,9 +23,10 @@ const bg = (function () return _; }) (); -const nizikaList = Array (24).fill ().map (function (__, i) +const nizikaList = Array (24).fill ().map ( + function (__, i) { - const _ = document.createElement('canvas'); + const _ = document.createElement ('canvas'); const img = new Image (); _.width = 300; @@ -31,7 +34,8 @@ const nizikaList = Array (24).fill ().map (function (__, i) const ctx = _.getContext ('2d'); - img.onload = (function () + img.onload = ( + function () { ctx.drawImage (img, 0, 0); replaceColorWithTransparent (_); @@ -42,9 +46,10 @@ const nizikaList = Array (24).fill ().map (function (__, i) return _; }); -const kitaList = Array (40).fill ().map (function (__, i) +const kitaList = Array (40).fill ().map ( + function (__, i) { - const _ = document.createElement('canvas'); + const _ = document.createElement ('canvas'); const img = new Image (); _.width = 428; @@ -52,7 +57,8 @@ const kitaList = Array (40).fill ().map (function (__, i) const ctx = _.getContext ('2d'); - img.onload = (function () + img.onload = ( + function () { ctx.drawImage (img, 0, 0); }); @@ -62,11 +68,21 @@ const kitaList = Array (40).fill ().map (function (__, i) return _; }); +const upperKita = document.createElement ('canvas'); + +const runawayGuitar = new Audio ('./assets/kita.wav'); + let canvasX; let canvasY; let frame = 0; let nizikaData = []; +let kitaData = []; + +const nizikaVel = 5; + +let runawayFlag = false; +let runawayFrame = 0; preprocess (); @@ -76,6 +92,23 @@ window.setInterval (() => reDraw (), 16); function preprocess () { + canvas.addEventListener ('click', + function f (e) + { + this.removeEventListener ('click', f); + + kitaData.push ({x: e.clientX, + y: e.clientY}); + + runawayFlag = true; + runawayFrame = frame; + + runawayGuitar.play (); + }); + + upperKita.width = 428; + upperKita.height = 240; + reDraw (); } @@ -91,17 +124,45 @@ reDraw () ctx.drawImage (bg, 0, 0, canvasX, canvasY); - nizikaData.push ({x: Math.random () * canvasX - 150, - y: Math.random () * canvasY - 150}); + if (!(runawayFlag)) + { + nizikaData.push ({x: Math.random () * canvasX, + y: Math.random () * canvasY}); + } if (nizikaData.length > 100) nizikaData.shift (); - nizikaData.forEach (function (nizika) + kitaData.forEach ( + function (kita) { - ctx.drawImage (nizikaList[frame % 24], nizika.x, nizika.y); + ctx.drawImage (kitaList[frame % 40], kita.x - 214, kita.y - 120); }); + nizikaData.forEach ( + function (nizika) + { + ctx.drawImage (nizikaList[frame % 24], nizika.x - 150, nizika.y - 150); + + if (runawayFlag) + { + const l = Math.sqrt (Math.pow (kitaData[0].x - nizika.x, 2) + + Math.pow (kitaData[0].y - nizika.y, 2)); + const t = Math.atan2 (kitaData[0].y - nizika.y, + kitaData[0].x - nizika.x); + + nizika.x += nizikaVel * Math.cos (t); + nizika.y += nizikaVel * Math.sin (t); + } + }); + + if (runawayFlag) + { + changeAlpha (upperKita, kitaList[frame % 40], + Math.max (runawayFrame - frame + 85, 0) * 3); + ctx.drawImage (upperKita, kitaData[0].x - 214, kitaData[0].y - 120); + } + ++frame; } @@ -126,3 +187,19 @@ replaceColorWithTransparent (canvas) context.putImageData (imageData, 0, 0); } + +function +changeAlpha (toCanvas, canvas, alpha) +{ + const toCtx = toCanvas.getContext ('2d'); + + const ctx = canvas.getContext ('2d'); + const imageData = ctx.getImageData (0, 0, canvas.width, canvas.height); + const pxs = imageData.data; + + for (let i = 0; i < pxs.length; i += 4) + pxs[i + 3] = alpha; + + toCtx.putImageData (imageData, 0, 0); +} + diff --git a/top.php b/top.php new file mode 100644 index 0000000..7db960b --- /dev/null +++ b/top.php @@ -0,0 +1,4 @@ +