js+css实现调用qwen千问大模型api实现ai中国象棋对战游戏代码

代码语言:html

所属分类:游戏

代码描述:js+css实现调用qwen千问大模型api实现ai中国象棋对战游戏代码,输入apikey,就能使用。其他兼容openai的大模型都行。

代码标签: js css 调用 qwen 千问 大模型 api ai 中国 象棋 对战 游戏 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<title>中国象棋(支持 OpenAI 人机对战)</title>
<style>
  :root{--bg:#0f1217;--panel:#141b22;--line:#314155;--red:#e5534b;--black:#e5e7eb;--hint:#10b981;--sel:#4f46e5}
  html,body{height:100%;margin:0;background:var(--bg);color:#dbeafe;font-family:system-ui,Segoe UI,Helvetica,Arial}
  .wrap{max-width:1040px;margin:0 auto;padding:14px}
  .top{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:10px}
  .panel{background:var(--panel);border:1px solid #223046;border-radius:14px;padding:10px 12px}
  .row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
  input,select,button{background:#0c1117;color:#e5e7eb;border:1px solid #2b3a4f;border-radius:10px;padding:6px 8px}
  button{cursor:pointer}
  button:disabled{opacity:.6;cursor:not-allowed}
  .board-wrap{display:grid;grid-template-columns:720px 1fr;gap:12px}
  svg{width:100%;height:auto;background:#f5e6c6;border-radius:12px;border:1px solid #aa8;box-shadow:inset 0 0 0 2px #caa}
  .stat{line-height:1.6}
  .tag{padding:2px 8px;border-radius:999px;background:#243041;font-size:12px}
  .dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px}
  .red{color:var(--red)}
  .blk{color:#111}
  .hr{height:1px;background:#29384c;margin:8px 0}
  .pill{padding:2px 8px;border-radius:999px;background:#243041}
  .hint{fill:var(--hint);opacity:.45}
  .sel{stroke:var(--sel);stroke-width:3}
</style>
</head>
<body>
<div class="wrap">
  <div class="top">
    <div class="panel row">
      <strong>中国象棋</strong>
      <span class="tag">Z 撤销</span>
      <span class="tag">R 重开</span>
    </div>
    <div class="panel">
      <div class="row">
        <label>AI 扮演
          <select id="aiSide">
            <option value="none">关闭(纯双人)</option>
            <option value="red">红方(先手)</option>
            <option value="black">黑方(后手)</option>
          </select>
        </label>
        <label>Qwen Key
          <input id="apiKey" type="password" placeholder="sk-..." size="16"/>
        </label>
        <label>模型
          <select id="model">
            <option>qwen-max</option>
            <option>qwen-plus</option>
       
          </select>
        </label>
        <label class="row"><input type="checkbox" id="randomAI"/> 用随机AI</label>
        <button id="aiThinkBtn">让AI走一步</button>
      </div>
      <div class="row" style="margin-top:6px">
        <small id="status" class="mono">就绪。</small>
      </div>
    </div>
  </div>

  <div class="board-wrap">
    <div id="boardArea"></div>
    <div class="panel">
      <div class="stat">
        <div>行棋方:
          <span id="turnTag" class="pill"><span class="dot" id="turnDot" style="background:var(--red)"></span><span id="turnText">红方</span></span>
        </div>
        <div>着法记录:</div>
        <div id="moves" class="mono" style="height:420px;overflow:auto;background:#0c1117;border-radius:10px;padding:8px;border:1px solid #2b3a4f"></div>
        <div class="hr"></div>
        <div>提示:</div>
        <ul style="margin-top:6px;padding-left:18px;color:#cbd5e1">
          <li>点击棋子显示可走位置,再点击目标落子。</li>
          <li>将帅不能“照面”;炮吃子需隔一个“炮架”。</li>
          <li>AI 不一定很强:我们会校验其走法合法,否则退回随机合法步。</li>
        </ul>
      </div>
    </div>
  </div>
</div>

<script>
/* ---------- 基础数据结构 ---------- */
const RED = 'r', BLACK='b';
const PIECES = {
  r:{R:'车',H:'马',E:'相',A:'仕',K:'帅',C:'炮',P:'兵'},
  b:{R:'車',H:'馬',E:'象',A:'仕',K:'将',C:'炮',P:'卒'}
};
// 初始布局(9x10,x:0..8 左到右;y:0..9 上黑下红)
const START = [
  "rR rH rE rA rK rA rE rH rR",
  ".  .  .  .  .  .  .  .  .",
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0