three实现三维螺旋山坡赛车游戏代码
代码语言:html
所属分类:其他
代码由qwen-3.8-max ai生成,可能有错误,仅供参考:点击查看提示词
代码描述:三维螺旋山坡赛车游戏
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<title>峰顶狂飙 · 螺旋山道竞速</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700;900&family=ZCOOL+QingKe+HuangYou&display=swap" rel="stylesheet">
<style>
:root{
--bg:#0b111b; --panel:rgba(10,15,24,.84); --line:rgba(255,255,255,.13);
--acc:#ff8a2a; --acc2:#35d0ff; --ok:#54e08c; --warn:#ffb02e; --bad:#ff4d3d; --snow:#eef4fa;
--disp:'ZCOOL QingKe HuangYou','Noto Sans SC',sans-serif;
--body:'Noto Sans SC',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden;background:var(--bg);font-family:var(--body);color:#e8eef5;user-select:none;-webkit-user-select:none}
#app{position:fixed;inset:0}
#app canvas{display:block}
.chk{height:10px;background:repeating-conic-gradient(#e8edf2 0% 25%,#12161d 0% 50%);background-size:16px 16px}
kbd{display:inline-block;min-width:26px;text-align:center;padding:2px 7px;margin:0 2px;background:#1b2430;border:1px solid #3a4a5e;border-bottom-width:3px;border-radius:6px;font-weight:700;font-size:12px;color:#cfe0f2}
/* ---------- HUD ---------- */
#hud{position:fixed;inset:0;pointer-events:none;z-index:5}
.card{background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(5px)}
#weatherCard{position:absolute;top:16px;left:16px;display:flex;gap:12px;align-items:center;padding:10px 16px 12px 12px;clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
#wIcon{font-size:36px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));animation:bob 2.6s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-4px)}}
#wName{font-family:var(--disp);font-size:22px;letter-spacing:2px}
#gripWrap{width:140px;height:8px;background:rgba(255,255,255,.12);border-radius:4px;overflow:hidden;margin:5px 0 4px}
#gripBar{height:100%;width:100%;background:var(--ok);transition:width .3s}
#roadState{font-size:12px;color:#9fb2c8;letter-spacing:1px}
#raceInfo{position:absolute;top:16px;right:16px;text-align:right;padding:8px 16px 10px;clip-path:polygon(12px 0,100% 0,100% 100%,0 100%,0 12px)}
#rankTxt{font-family:var(--disp);font-size:42px;color:var(--acc);line-height:1;text-shadow:2px 2px 0 rgba(0,0,0,.4)}
#rankTxt small{font-size:18px;color:#9fb2c8}
#timerTxt{font-size:15px;letter-spacing:2px;color:#cfe0f2;font-variant-numeric:tabular-nums}
#rail{position:absolute;right:22px;top:50%;transform:translateY(-50%);width:64px;height:min(44vh,320px)}
.railMtn{position:absolute;inset:6px 0;clip-path:polygon(50% 0%,100% 100%,0% 100%);background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,.05))}
.railFlag{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:18px}
.railBase{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-size:14px}
#railDots{position:absolute;inset:6px 0}
.rdot{position:absolute;left:50%;width:9px;height:9px;border-radius:50%;transform:translate(-50%,50%);transition:bottom .2s linear}
.rdot.me{width:14px;height:14px;box-shadow:0 0 10px 2px rgba(255,138,42,.8);border:2px solid #fff}
#speedo{position:absolute;right:24px;bottom:22px;display:flex;flex-direction:column;align-items:center;gap:6px}
#speedRing{width:122px;height:122px;border-radius:50%;background:conic-gradient(var(--ringc,#54e08c) calc(var(--p,0)*1%),rgba(255,255,255,.09) 0);display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.45))}
#speedRing .inner{width:94px;height:94px;border-radius:50%;background:rgba(9,13,20,.92);display:flex;flex-direction:column;align-items:center;justify-content:center}
#speedNum{font-family:var(--disp);font-size:40px;line-height:1}
.unit{font-size:11px;color:#8fa3ba;letter-spacing:2px}
#safeTip{font-size:12px;color:#9fb2c8;background:rgba(9,13,20,.6);padding:3px 10px;border-radius:10px}
#hintBar{position:absolute;left:16px;bottom:16px;font-size:12px;color:#7f93aa;letter-spacing:1px}
#hintBar b{color:#cfe0f2}
#toast{position:absolute;top:86px;left:50%;transform:translate(-50%,-14px);opacity:0;transition:all .35s;padding:10px 24px;font-size:16px;font-weight:700;background:rgba(12,18,28,.92);border:1px solid var(--line);border-left:5px solid var(--acc);white-space:nowrap}
#toast.show{opacity:1;transform:translate(-50%,0)}
#bigMsg{position:absolute;top:34%;left:50%;transform:translateX(-50%);font-family:var(--disp);font-size:clamp(64px,13vw,150px);color:#fff;text-shadow:0 4px 0 rgba(0,0,0,.35),0 0 44px rgba(255,160,60,.55);opacity:0;pointer-events:none;white-space:nowrap}
#bigMsg.pop{animation:pop .5s cubic-bezier(.2,1.6,.4,1) forwards}
@keyframes pop{0%{opacity:0;transform:translateX(-50%) scale(2.1)}100%{opacity:1;transform:translateX(-50%) scale(1)}}
#slipWarn{position:absolute;top:60%;left:50%;transform:translateX(-50%);font-family:var(--disp);font-size:30px;color:var(--bad);text-shadow:0 2px 0 rgba(0,0,0,.5);opacity:0;transition:opacity .15s}
#slipWarn.on{opacity:1;animation:blink .45s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}
#vignette{position:absolute;inset:0;box-shadow:inset 0 0 180px rgba(255,40,40,.6);opacity:0;transition:opacity .2s}
/* ---------- overlays ---------- */
.ov{position:fixed;inset:0;z-index:10;display:flex;align-items:center}
#startScreen{padding-left:6vw;gap:30px;background:linear-gradient(100deg,rgba(7,11,18,.93) 0%,rgba(7,.........完整代码请登录后点击上方下载按钮下载查看















网友评论0