以下は、JavaScriptを使用して実装した弾幕シューティングゲームの例です。
HTML:
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>弾幕シューティングゲーム</title>
<style>
#canvas {
border: 1px solid black;
}
</style>
</head>
<body>
<canvas id="canvas" width="600" height="400"></canvas>
</body>
<script src="game.js"></script>
</html>
```
JavaScript:
```
// Game loop timer
var gameLoop;
// Set canvas
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// Set player variables
var playerWidth = 20;
var playerHeight = 20;
var playerX = canvas.width / 2 - playerWidth / 2;
var playerY = canvas.height - playerHeight - 10;
var playerSpeed = 10;
// Set bullet variables
var bulletWidth = 5;
var bulletHeight = 10;
var bulletSpeed = 7;
var bullets = [];
// Set enemy variables
var enemyWidth = 20;
var enemyHeight = 20;
var enemySpeed = 2;
var enemies = [];
// Set game variables
var score = 0;
var gameStarted = false;
// Start game
function startGame() {
gameStarted = true;
gameLoop = setInterval(update, 30);
}
// Stop game
function stopGame() {
gameStarted = false;
clearInterval(gameLoop);
}
// Update game loop
function update() {
// Clear canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Draw player
ctx.fillStyle = "blue";
ctx.fillRect(playerX, playerY, playerWidth, playerHeight);
// Move bullets
for (var i = 0; i < bullets.length; i++) {
bullets[i].y -= bulletSpeed;
ctx.fillStyle = "red";
ctx.fillRect(bullets[i].x, bullets[i].y, bulletWidth, bulletHeight);
}
// Move enemies
for (var i = 0; i < enemies.length; i++) {
enemies[i].y += enemySpeed;
ctx.fillStyle = "green";
ctx.fillRect(enemies[i].x, enemies[i].y, enemyWidth, enemyHeight);
// Check collision with player
if (enemies[i].y + enemyHeight >= playerY &&
enemies[i].x >= playerX &&
enemies[i].x <= playerX + playerWidth) {
gameOver();
return;
}
}
// Check collision with bullets
for (var i = 0; i < bullets.length; i++) {
for (var j = 0; j < enemies.length; j++) {
if (bullets[i].y <= enemies[j].y + enemyHeight &&
bullets[i].x >= enemies[j].x &&
bullets[i].x <= enemies[j].x + enemyWidth) {
bullets.splice(i, 1);
enemies.splice(j, 1);
score++;
break;
}
}
}
// Draw score
ctx.fillStyle = "black";
ctx.font = "20px Arial";
ctx.fillText("Score: " + score, 10, 25);
// Add new enemy
if (Math.random() < 0.05) {
enemies.push({
x: Math.floor(Math.random() * (canvas.width - enemyWidth)),
y: -enemyHeight
});
}
}
// Handle key inputs
document.addEventListener("keydown", function(e) {
switch(e.keyCode) {
case 37: // Left arrow
playerX -= playerSpeed;
break;
case 39: // Right arrow
playerX += playerSpeed;
break;
case 32: // Space bar
bullets.push({
x: playerX + playerWidth / 2 - bulletWidth / 2,
y: playerY - bulletHeight
});
break;
}
});
// Game over function
function gameOver() {
stopGame();
alert("Game over! Score: " + score);
}
// Start game when user clicks canvas
canvas.addEventListener("click", function(e) {
if (!gameStarted) {
startGame();
}
});
```
このゲームは、キーボードの左右矢印キーでプレイヤーを移動し、スペースキーで弾を発射します。敵を倒し、スコアを上げることが目的です。敵に触れてしまうとゲームオーバーになります。弾幕シューティングゲームなので、敵の攻撃をかわしながら戦いましょう!