Files
kidgo/index.html
T
2026-10-23 17:49:29 +08:00

242 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
<title>I WANNA BE THE CREATOR — Fan Project</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="app">
<div id="stage">
<canvas id="game" width="800" height="608"></canvas>
<!-- ===== HUD ===== -->
<div id="hud" class="hidden">
<div class="hud-row">
<div class="hud-box" id="hud-level">—</div>
<div class="hud-box" id="hud-deaths">DEATH 0</div>
<div class="hud-box" id="hud-time">0:00.00</div>
<div class="hud-box" id="hud-apples" style="display:none">🍎 0/0</div>
<div class="hud-box" id="hud-save" style="display:none">SAVE 0/0</div>
</div>
<div id="boss-bar" class="hidden">
<div class="boss-name" id="boss-name">BOSS</div>
<div class="boss-track"><div class="boss-fill" id="boss-fill"></div></div>
</div>
<div id="toast"></div>
</div>
<!-- ===== MAIN MENU ===== -->
<div class="screen" id="scr-title">
<div class="title-wrap">
<div class="title-sub">FAN-MADE TRIBUTE PROJECT</div>
<h1 class="title-main">I WANNA BE<br>THE <span class="red">CREATOR</span></h1>
<div class="title-tag">跳刺 · 耐久 · BOSS · 坑向 — 23 个内置关卡</div>
</div>
<div class="menu">
<button class="btn big" data-act="levels">关卡选择</button>
<button class="btn" data-act="editor">自制关卡</button>
<button class="btn" data-act="help">操作说明</button>
<button class="btn" data-act="settings">设置</button>
</div>
<div id="title-user" class="title-user"></div>
<div class="foot">非商业同人作品 · 致敬 I Wanna Be The Guy / I Wanna Be The Creator · 素材与代码原创</div>
</div>
<!-- ===== LEVEL SELECT ===== -->
<div class="screen hidden" id="scr-levels">
<div class="panel">
<div class="panel-head">
<h2>关卡选择</h2>
<div class="head-btns">
<button class="btn tiny hidden" id="manage-btn" data-act="manage">管理地图</button>
<button class="btn tiny" data-act="back">返回</button>
</div>
</div>
<div class="tabs" id="level-tabs"></div>
<div class="level-grid" id="level-grid"></div>
<div class="legend">
<span class="tag t-jump">跳刺</span>
<span class="tag t-endur">耐久</span>
<span class="tag t-boss">BOSS</span>
<span class="tag t-troll">坑向</span>
<span class="tag t-custom">自制</span>
</div>
</div>
</div>
<!-- ===== HELP ===== -->
<div class="screen hidden" id="scr-help">
<div class="panel">
<div class="panel-head">
<h2>操作说明</h2>
<button class="btn tiny" data-act="back">返回</button>
</div>
<div class="help-body">
<div class="help-col">
<h3>按键</h3>
<ul>
<li><b>← →</b> / <b>A D</b> — 移动(IWBT 手感:松手即停,无惯性)</li>
<li><b>Shift</b> / <b>空格</b> / <b>Z</b> — 跳跃(空中再按一次=二段跳)</li>
<li><b>X</b> / <b>J</b> — 射击(需先拾取手枪)</li>
<li><b>R</b> — 自杀,回到<b>最近的存档点</b>(死亡数 +1)</li>
<li><b>Backspace</b> — 整关从头再来(会清空存档点进度)</li>
<li><b>Esc</b> — 暂停 <b>↑ ↓</b> — 水中上浮 / 下潜</li>
<li><b>触屏</b> — 移动端自动显示:左下 <b>◀ ▶</b> 移动,右下 <b>跳</b> 与 🔫/▼ 道具键(桌面可加 <b>?touch=1</b> 预览)</li>
</ul>
</div>
<div class="help-col">
<h3>规则与道具</h3>
<ul>
<li><b>刺</b>(灰白三角)碰到即死,回最近存档点</li>
<li><b>存档点</b>(紫色果实)触碰后在此复活</li>
<li><b>手枪</b>(灰色枪)拾取后获得射击能力,子弹可击杀敌人与 BOSS</li>
<li><b>摄像头</b>(黑色镜头)进入区域会锁定 / 缩放视角——坑向关卡的元凶</li>
<li><b>美味水果</b>(红苹果)看着像补给,其实是即死陷阱</li>
<li><b>传送门</b>(紫色漩涡)成对传送,坑向关卡会把你送回起点</li>
<li><b>跳跃刷新器</b>(绿色箭头)空中触碰可重置二段跳</li>
<li><b>消失方块</b>踩上后会塌,<b>冰面</b>会打滑,<b>水</b>中可游泳</li>
</ul>
</div>
</div>
<div class="help-tip">提示:死亡是这个游戏的一部分。别放弃,IWBT 玩家的平均死亡数是三位数。</div>
</div>
</div>
<!-- ===== PAUSE ===== -->
<div class="screen hidden" id="scr-pause">
<div class="panel narrow">
<div class="panel-head"><h2>暂停</h2></div>
<div class="menu">
<button class="btn" data-act="resume">继续</button>
<button class="btn" data-act="restart">从头再来(清空存档点)</button>
<button class="btn" data-act="quit">返回关卡选择</button>
</div>
</div>
</div>
<!-- ===== RESULT ===== -->
<div class="screen hidden" id="scr-result">
<div class="panel narrow">
<h2 class="clear-title">CLEAR!</h2>
<div class="result-body">
<div class="rline"><span>关卡</span><b id="r-name">—</b></div>
<div class="rline"><span>用时</span><b id="r-time">—</b></div>
<div class="rline"><span>死亡</span><b id="r-death">—</b></div>
<div class="rline"><span>苹果</span><b id="r-apple">—</b></div>
<div class="rbest" id="r-best"></div>
</div>
<div class="menu">
<button class="btn" data-act="next">下一关</button>
<button class="btn" data-act="retry">再挑战</button>
<button class="btn" data-act="quit">关卡选择</button>
</div>
</div>
</div>
<!-- ===== SETTINGS ===== -->
<div class="screen hidden" id="scr-settings">
<div class="panel">
<div class="panel-head">
<h2>设置</h2>
<button class="btn tiny" data-act="back">返回</button>
</div>
<div class="set-body">
<div class="set-row">
<label class="set-lab" for="set-username">用户名</label>
<input id="set-username" class="set-in" maxlength="16" placeholder="无名氏">
<span class="set-hint">显示在标题界面</span>
</div>
<div class="set-row col">
<label class="set-lab">手机操作按钮</label>
<span class="set-hint">拖动按钮调整位置,拖动右下角圆点调整大小(仅移动端生效)</span>
<div id="touch-preview" class="touch-preview">
<div class="tp-tip">拖动按钮移动位置 · 拖动右下角圆点缩放大小</div>
</div>
</div>
</div>
<div class="modal-btns set-btns">
<button class="btn tiny" data-act="set-reset">恢复默认</button>
<button class="btn tiny go" data-act="set-ok">确定</button>
</div>
</div>
</div>
<!-- ===== EDITOR ===== -->
<div class="screen hidden" id="scr-editor">
<div class="panel">
<div class="panel-head">
<h2>自制关卡</h2>
<button class="btn tiny" data-act="back">返回</button>
</div>
<div class="editor-wrap">
<div class="palette" id="palette"></div>
<div class="editor-main">
<div class="editor-bar">
<input id="ed-name" placeholder="地图名" value="MY MAP">
<label class="ed-wh">宽<input id="ed-w" type="number" value="25" min="12" max="160"></label>
<label class="ed-wh">高<input id="ed-h" type="number" value="19" min="8" max="80"></label>
<button class="btn tiny" data-act="ed-resize">调整</button>
<button class="btn tiny" data-act="ed-fill">铺底</button>
<button class="btn tiny" data-act="ed-clear">清空</button>
<button class="btn tiny" data-act="ed-import">导入地图</button>
<button class="btn tiny" data-act="ed-test">试玩</button>
<button class="btn tiny go" data-act="ed-save">保存</button>
<span id="ed-savestate" class="save-state">→ 新地图</span>
</div>
<canvas id="ed-canvas" width="800" height="608"></canvas>
<div class="editor-tip">左键放置 / 右键擦除,滚轮水平平移。<b>不会覆盖已有方块</b>——放在空格才生效,要换掉先擦除。选「⌖ 查看属性」再点方块可只查看不修改。<b>刺</b>只有一个,放好后在右侧「属性」面板调<b>方向(上/下/左/右)</b>;传送门 <b>W</b>、提示牌 <b>T</b>、炮台 <b>O</b>、摄像头 <b>C</b>、BOSS <b>B</b> 的属性也都在这里设置。每面至少 1 个 <b>S</b>(出生点) 与 1 个 <b>X</b>(终点)。</div>
</div>
<div class="editor-side">
<h3>属性(选中方块)</h3>
<div id="ed-props"><div class="prop-empty">点击画布上的方块,查看并设置它的属性</div></div>
<h3>面(多面地图)</h3>
<div class="face-btns">
<button class="btn tiny" data-act="ed-addface">+ 新增面</button>
<button class="btn tiny" data-act="ed-copyface">复制面</button>
<button class="btn tiny" data-act="ed-delface">删除面</button>
</div>
<div id="ed-faces"></div>
</div>
</div>
<!-- 导入地图选择 -->
<div id="ed-importbox" class="modal hidden">
<div class="modal-panel">
<h3>导入地图</h3>
<p class="modal-tip">从以前保存过的地图里选一个载入编辑器(会替换当前编辑内容)</p>
<div id="ed-import-list"></div>
<div class="modal-btns">
<button class="btn tiny" data-act="ed-import-cancel">取消</button>
</div>
</div>
</div>
</div>
</div>
<!-- ===== TOUCH CONTROLS(移动端虚拟手柄,参考 IWBT Creator 触屏布局) ===== -->
<div id="touch" class="hidden">
<!-- 左侧:左右移动 -->
<div class="tc-left">
<button class="tc-btn tc-move" data-touch="left" aria-label="左移"><span>◀</span></button>
<button class="tc-btn tc-move" data-touch="right" aria-label="右移"><span>▶</span></button>
</div>
<!-- 右侧:跳跃 + 各种道具 -->
<div class="tc-right">
<div class="tc-top">
<button class="tc-btn tc-sm" data-touch="pause" aria-label="暂停">❚❚</button>
<button class="tc-btn tc-sm" data-touch="suicide" aria-label="重生">↺</button>
</div>
<div class="tc-mid">
<button class="tc-btn tc-item" id="tc-gun" data-touch="shoot" aria-label="射击"><span>🔫</span><span class="lbl">射击</span></button>
<button class="tc-btn tc-item" data-touch="down" aria-label="下蹲/下穿"><span>▼</span><span class="lbl">下蹲</span></button>
</div>
<button class="tc-btn tc-jump" data-touch="jump" aria-label="跳跃"><span>跳</span></button>
</div>
</div>
</div>
</div>
<script type="module" src="js/main.js"></script>
</body>
</html>