207 lines
6.8 KiB
HTML
207 lines
6.8 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<title>系统流 卡牌对战 Demo</title>
|
||
<style>
|
||
body {
|
||
background: #111;
|
||
color: #eee;
|
||
font-family: sans-serif;
|
||
padding: 20px;
|
||
}
|
||
#log {
|
||
background: #222;
|
||
padding: 10px;
|
||
height: 250px;
|
||
overflow-y: auto;
|
||
border: 1px solid #444;
|
||
margin-bottom: 10px;
|
||
white-space: pre-line;
|
||
}
|
||
.card {
|
||
display: inline-block;
|
||
background: #333;
|
||
border: 1px solid #666;
|
||
padding: 10px;
|
||
margin: 5px;
|
||
cursor: pointer;
|
||
width: 160px;
|
||
}
|
||
.card:hover {
|
||
background: #444;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h2>《系统流:校园日常攻略》卡牌演示 Demo</h2>
|
||
|
||
<div id="stats"></div>
|
||
<div id="log"></div>
|
||
<h3>我的手牌</h3>
|
||
<div id="cards"></div>
|
||
<button onclick="nextTurn()" style="margin-top: 10px">重新抽卡</button>
|
||
|
||
<script>
|
||
/////////////////////////////////////////////////////
|
||
// 游戏初始配置
|
||
/////////////////////////////////////////////////////
|
||
|
||
let player = {
|
||
favor: 0, // 女生对玩家好感
|
||
energy: 100,
|
||
};
|
||
|
||
let npc = {
|
||
favor: 30, // 初始好感
|
||
};
|
||
|
||
let systemTask = {
|
||
desc: "让对方情绪波动 +10",
|
||
target: 10,
|
||
progress: 0,
|
||
};
|
||
|
||
// 卡牌池 —— 演示可後续扩展
|
||
const cardPool = [
|
||
{
|
||
name: "夸赞(行动卡)",
|
||
type: "action",
|
||
effect: () => changeFavor(3),
|
||
desc: "+3 好感",
|
||
},
|
||
{
|
||
name: "冷幽默(行动卡)",
|
||
type: "action",
|
||
effect: () => changeFavor(5),
|
||
desc: "+5 好感",
|
||
},
|
||
{
|
||
name: "装酷(行动卡)",
|
||
type: "action",
|
||
effect: () => changeFavor(1),
|
||
desc: "+1 好感",
|
||
},
|
||
{
|
||
name: "系统加持(系统卡)",
|
||
type: "system",
|
||
effect: () =>
|
||
changeFavor(Math.floor(Math.random() * 6) + 2),
|
||
desc: "随机 +2~7 好感",
|
||
},
|
||
{
|
||
name: "语言暴击(系统卡)",
|
||
type: "system",
|
||
effect: () => changeFavor(8),
|
||
desc: "+8 好感",
|
||
},
|
||
{
|
||
name: "冷场(情绪负面)",
|
||
type: "bad",
|
||
effect: () => changeFavor(-4),
|
||
desc: "-4 好感",
|
||
},
|
||
];
|
||
|
||
// 当前手牌
|
||
let hand = [];
|
||
|
||
/////////////////////////////////////////////////////
|
||
// 功能函数
|
||
/////////////////////////////////////////////////////
|
||
|
||
// 抽牌
|
||
function drawCards(num = 3) {
|
||
hand = [];
|
||
for (let i = 0; i < num; i++) {
|
||
let c =
|
||
cardPool[Math.floor(Math.random() * cardPool.length)];
|
||
hand.push(c);
|
||
}
|
||
render();
|
||
}
|
||
|
||
// 使用卡牌
|
||
function playCard(index) {
|
||
let card = hand[index];
|
||
writeLog(`你使用了【${card.name}】 → ${card.desc}`);
|
||
card.effect();
|
||
systemCheck();
|
||
npcAction();
|
||
drawCards();
|
||
}
|
||
|
||
// 修改好感 / 数值
|
||
function changeFavor(v) {
|
||
npc.favor += v;
|
||
systemTask.progress += v;
|
||
if (npc.favor < 0) npc.favor = 0;
|
||
render();
|
||
}
|
||
|
||
// 系统任务检测
|
||
function systemCheck() {
|
||
if (systemTask.progress >= systemTask.target) {
|
||
writeLog(`📢 系统任务达成:${systemTask.desc}`);
|
||
writeLog(`奖励:获得 500万软妹币(精神上的)`);
|
||
systemTask = {
|
||
desc: "让女生惊讶一次(好感一次增长≥6)",
|
||
target: 6,
|
||
progress: 0,
|
||
};
|
||
}
|
||
}
|
||
|
||
// NPC 回合逻辑(简单演示)
|
||
function npcAction() {
|
||
let r = Math.random();
|
||
if (r < 0.5) {
|
||
writeLog("女生回应:嗯……还不错。");
|
||
} else if (r < 0.8) {
|
||
writeLog("女生:你怎么突然这样?(情绪波动+3)");
|
||
changeFavor(3);
|
||
} else {
|
||
writeLog("女生:无语……你是系统选中的人吗?(好感-2)");
|
||
changeFavor(-2);
|
||
}
|
||
}
|
||
|
||
// 日志输出
|
||
function writeLog(t) {
|
||
let log = document.getElementById("log");
|
||
log.innerHTML += t + "\n";
|
||
log.scrollTop = log.scrollHeight;
|
||
}
|
||
|
||
// UI 渲染
|
||
function render() {
|
||
document.getElementById("stats").innerHTML =
|
||
`女生好感:${npc.favor} ` +
|
||
`任务:${systemTask.desc}(当前进度 ${systemTask.progress}/${systemTask.target})`;
|
||
|
||
let cardDiv = document.getElementById("cards");
|
||
cardDiv.innerHTML = "";
|
||
hand.forEach((c, i) => {
|
||
let div = document.createElement("div");
|
||
div.className = "card";
|
||
div.innerHTML = `<b>${c.name}</b><br>${c.desc}`;
|
||
div.onclick = () => playCard(i);
|
||
cardDiv.appendChild(div);
|
||
});
|
||
}
|
||
|
||
// 下一回合(抽新卡)
|
||
function nextTurn() {
|
||
drawCards();
|
||
}
|
||
|
||
/////////////////////////////////////////////////////
|
||
// 开始
|
||
/////////////////////////////////////////////////////
|
||
writeLog("系统启动:新手引导中……");
|
||
writeLog("任务:让对方情绪波动 +10");
|
||
drawCards();
|
||
</script>
|
||
</body>
|
||
</html>
|