js实现一个音乐避障节拍类游戏NANO HEXAGO代码
代码语言:html
所属分类:游戏
代码描述:js实现一个音乐避障节拍类游戏NANO HEXAGO代码,玩家控制一个位于屏幕中心的小三角形或六边形。 通过键盘左右方向键,让图形顺时针或逆时针旋转。避开从中心向外扩展的障碍物。 障碍物会以不同的速度和模式向玩家逼近,玩家需要快速反应并调整角度。
代码标签: js 音乐 避障 节拍类 游戏 代码 NANO HEXAGO
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Micro+5&display=swap" rel="stylesheet">
<style>
body,
html {
margin: 0;
overflow: hidden;
width: 100%;
height: 100%;
display: grid;
place-items: center;
background: black;
}
body {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
audio {
position: absolute;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
visibility: hidden;
}
#container {
width: 100%;
height: 100%;
display: grid;
left: 0;
top: 0;
position: fixed;
place-items: center;
overflow: hidden;
}
canvas {
display: block;
transform-origin: center;
-ms-interpolation-mode: nearest-neighbor;
image-rendering: -moz-crisp-edges;
image-rendering: pixelated;
}
</style>
</head>
<body translate="no">
<div id="container">
<canvas id="gameCanvas"></canvas>
</div>
<script>
const BASE = 320; // change to 920 to remove pixel look
let VIEWPORT_WIDTH = BASE;
let VIEWPORT_HEIGHT = Math.floor(
(window.innerHeight / window.innerWidth) * BASE
);
let SCALE_FACTOR = window.innerWidth / BASE;
const canvas = document.getElementById("gameCanvas");
const ctx = canvas.getContext("2d", { alpha: false });
let center = { x: VIEWPORT_WIDTH / 2, y: VIEWPORT_HEIGHT / 2 };
function resizeCanvas() {
VIEWPORT_HEIGHT = Math.floor((window.innerHeight / window.innerWidth) * BASE);
SCALE_FACTOR =
Math.max(BASE, window.innerWidth) / Math.min(BASE, window.innerWidth);
canvas.width = VIEWPORT_WIDTH;
canvas.height = VIEWPORT_HEIGHT;
canvas.style.transform = `scale(${SCALE_FACTOR})`;
center = { x: VIEWPORT_WIDTH / 2, y: VIEWPORT_HEIGHT / 2 };
container.style.width = `${VIEWPORT_WIDTH * SCALE_FACTOR}px`;
container.style.height = `${VIEWPORT_HEIGHT * SCALE_FACTOR}px`;
}
window.addEventListener("resize", resizeCanvas);
resizeCanvas();
const CONFIG = {
COLORS: {
running: [
{
areas: [
"#352879",
"#6C5EB5",
"#352879",
"#6C5EB5",
"#352879",
"#6C5EB5"
],
hexagon: { fill: "#6C5EB5", stroke: "#B3995D" },
obstacle: { normal: "#B03FB6", collision: "#FF7C00" },
player: "#68B2B2"
},
{
areas: [
"#8B76E7",
"#4B3C83",
"#8B76E7",
"#4B3C83",
"#8B76E7",
"#4B3C83"
],
hexagon: { fill: "#8B76E7", stroke: "#68B2B2" },
obstacle: { normal: "#E04B4B", collision: "#FF7C00" },
player: "#59FF59"
},
{
areas: [
"#2B335F",
"#5955D8",
"#2B335F",
"#5955D8",
"#2B335F",
"#5955D8"
],
hexagon: { fill: "#5955D8", stroke: "#59FF59" },
obstacle: { normal: "#B55EE3", collision: "#FF7C00" },
player: "#68E2E2"
},
{
areas: [
"#9B51E0",
"#4B2B59",
"#9B51E0",
"#4B2B59",
"#9B51E0",
"#4B2B59"
],
hexagon: { fill: "#9B51E0", stroke: "#68E2E2" },
obstacle: { normal: "#7C54E3", collision: "#FF7C00" },
player: "#59FF98"
}
],
strobo: [
{
areas: [
"#2B335F",
"#5955D8",
"#2B335F",
"#5955D8",
"#2B335F",
"#5955D8"
],
hexagon: { fill: "#5955D8", stroke: "#59FF59" },
obstacle: { normal: "#B55EE3", collision: "#FF7C00" },
player: "#68E2E2"
},
{
areas: [
"#352879",
"#6C5EB5",
"#352879",
"#6C5EB5",
"#352879",
"#6C5EB5"
],
hexagon: { fill: "#6C5EB5", stroke: "#B3995D" },
obstacle: { normal: "#B03FB6", collision: "#FF7C00" },
player: "#68B2B2"
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0