three实现三维城门塔防类游戏代码
代码语言:html
所属分类:游戏
代码描述:three实现三维城门塔防类游戏代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>城门守卫 · 三维塔防</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&family=Noto+Sans+SC:wght@400;500;700;900&display=swap" rel="stylesheet">
<style>
:root{
--gold:#e8b04b; --gold-dim:#96702f; --red:#b3372a; --red-deep:#7e2412;
--ink:#f0e2c4; --wood1:#31200f; --wood2:#1c1207;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{width:100%;height:100%;overflow:hidden;background:#0d0805;
font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);
user-select:none;-webkit-user-select:none}
.brush{font-family:'Ma Shan Zheng','STKaiti','KaiTi',serif}
#app{position:fixed;inset:0}
#app canvas{display:block;cursor:grab}
/* ---------- 木牌通用 ---------- */
.plaque{
background:linear-gradient(160deg,var(--wood1),var(--wood2) 60%,#241608);
border:2px solid var(--gold-dim);border-radius:10px;
box-shadow:inset 0 0 0 1px rgba(201,161,84,.25), inset 0 0 22px rgba(0,0,0,.55), 0 8px 24px rgba(0,0,0,.55);
}
/* ---------- HUD ---------- */
#hud{position:fixed;top:14px;left:14px;right:14px;display:flex;align-items:flex-start;gap:14px;pointer-events:none;z-index:10}
#titlePlaque{display:flex;align-items:center;gap:12px;padding:8px 18px 8px 10px;pointer-events:auto}
#seal{font-family:'Ma Shan Zheng',serif;font-size:34px;background:var(--red);color:#ffe9c9;
width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:6px;
transform:rotate(-6deg);box-shadow:0 3px 8px rgba(0,0,0,.5), inset 0 0 0 2px rgba(255,233,201,.35)}
#titlePlaque h1{font-family:'Ma Shan Zheng',serif;font-size:32px;font-weight:400;color:var(--gold);letter-spacing:4px;line-height:1}
#titlePlaque p{font-size:10px;letter-spacing:3px;color:#b99f74;margin-top:3px}
#gateBox{flex:1;max-width:420px;margin:0 auto;padding:8px 14px 10px;pointer-events:auto}
.glabel{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:2px;color:#cbb287;margin-bottom:5px}
#repairBtn{font-family:inherit;font-size:12px;background:linear-gradient(#3c5a34,#27401f);color:#d9f0c9;
border:1px solid #6f9a5a;border-radius:6px;padding:2px 10px;cursor:pointer;transition:.15s}
#repairBtn:hover:not(:disabled){filter:brightness(1.25);transform:translateY(-1px)}
#repairBtn:disabled{opacity:.4;cursor:not-allowed}
#gateBar{position:relative;height:16px;background:#120a05;border:1px solid var(--gold-dim);border-radius:8px;overflow:hidden}
#gateFill{height:100%;width:100%;background:linear-gradient(90deg,#58d15a,#8fe06a);border-radius:7px;transition:width .25s}
#gateTxt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 2px #000;letter-spacing:1px}
#chips{display:flex;gap:8px;pointer-events:auto}
.chip{padding:7px 12px;font-size:14px;display:flex;align-items:center;gap:5px}
.chip b{font-family:'Ma Shan Zheng',serif;font-weight:400;font-size:22px;color:var(--gold);min-width:34px;text-align:center}
/* ---------- 公告 ---------- */
#announce{position:fixed;top:24%;left:0;right:0;text-align:center;pointer-events:none;z-index:20;
font-family:'Ma Shan Zheng',serif;font-size:64px;color:#ffd98a;opacity:0;letter-spacing:6px;
text-shadow:0 3px 0 var(--red-deep), 0 0 30px rgba(255,154,61,.6), 0 6px 18px #000}
#announce.warn{color:#ff8a6a;text-shadow:0 3px 0 #4d0f08,0 0 34px rgba(255,60,30,.7),0 6px 18px #000}
#announce.good{color:#b8f0a0;text-shadow:0 3px 0 #1e4415,0 0 30px rgba(120,255,90,.5),0 6px 18px #000}
#announce.show{animation:ann 2.3s ease forwards}
@keyframes ann{0%{opacity:0;transform:scale(1.9)}12%{opacity:1;transform:scale(1)}78%{opacity:1}100%{opacity:0;transform:scale(.96)}}
#pausedBadge{position:fixed;top:16%;left:50%;transform:translateX(-50%);z-index:20;display:none;
font-family:'Ma Shan Zheng',serif;font-size:34px;color:#ffd98a;letter-spacing:6px;text-shadow:0 2px 8px #000}
/* ---------- 底部面板 ---------- */
#panel{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:10;
padding:10px 16px;min-width:340px;text-align:center;max-width:94vw}
.panel-title{font-family:'Ma Shan Zheng',serif;font-size:24px;color:var(--gold);letter-spacing:3px;margin-bottom:6px}
.panel-title .lv{color:#ffcf6a;font-size:20px;letter-spacing:2px}
.panel-hint,.hint{font-size:12px;color:#b99f74;letter-spacing:1px}
.cards{display:flex;gap:10px;justify-content:center;margin:6px 0}
.tcard{width:118px;padding:8px 6px 7px;background:linear-gradient(#3a2712,#241608);border:2px solid #6f5426;
border-radius:8px;cursor:pointer;transition:.16s;position:relative}
.tcard:hover{transform:translateY(-5px);border-color:var(--gold);box-shadow:0 8px 18px rgba(0,0,0,.5),0 0 14px rgba(232,176,75,.25)}
.tcard.poor{opacity:.42;filter:grayscale(.7);cursor:not-allowed}
.tcard.poor:hover{transform:none;border-color:#6f5426;box-shadow:none}
.tico{font-size:26px;line-height:1.2}
.tname{font-family:'Ma Shan Zheng',serif;font-size:20px;color:var(--ink);letter-spacing:2px}
.tcost{font-size:13px;font-weight:700;color:#ffd76a;margin:2px 0}
.tdesc{font-size:10.5px;color:#b99f74}
.tstats{font-size:13px;color:#d8c69b;margin-bottom:8px;letter-spacing:1px}
.trow{display:flex;gap:10px;justify-content:center}
/* ---------- 按钮 ---------- */
.btn{font-family:'Ma Shan Zheng',serif;font-size:20px;letter-spacing:2px;color:#ffe9c9;cursor:pointer;
background:linear-gradient(#b03a24,var(--red-deep));border:2px solid var(--gold);border-radius:8px;
padding:8px 20px;transition:.15s;box-shadow:0 4px 12px rgba(0,0,0,.5)}
.btn:hover:not(:disabled){filter:brightness(1.18);transform:translateY(-2px)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{background:linear-gradient(#4a4038,#332c25);border-color:#5c5248;color:#8a7c68;cursor:not-allowed}
.btn.big{font-size:26px;padding:12px 34px}
.btn.small{font-size:17px;padding:6px 16px}
.btn.sell{background:linear-gradient(#5a4a2c,#3c3018);border-color:#8a6a35}
#controls{position:fixed;right:16px;bottom:16px;z-index:10;display:flex;flex-direction:column;gap:8px;align-items:flex-end}
#waveBtn{min-width:230px;text-align:center}
#tips{position:fixed;left:16px;bottom:16px;z-index:10;font-size:11.5px;c.........完整代码请登录后点击上方下载按钮下载查看















网友评论0