<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 SLBrowser/9.0.6.2081 SLBChan/130 SLBVPV/64-bit" version="26.1.3">
  <diagram name="第 1 页" id="-rbfjg048uUnFwLdS9Qo">
    <mxGraphModel dx="1221" dy="742" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="9Ebc9e9nHDDUEK741GDo-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="9Ebc9e9nHDDUEK741GDo-1" target="9Ebc9e9nHDDUEK741GDo-2">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-6" value="&lt;div&gt;【传递指令】&lt;/div&gt;&lt;div&gt;调用流程：&lt;/div&gt;&lt;div&gt;1. 接收scanf输入 (main.c#L317)&lt;/div&gt;&lt;div&gt;2. 触发gameLoop()&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="9Ebc9e9nHDDUEK741GDo-5">
          <mxGeometry x="-0.2" y="1" relative="1" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-1" value="&lt;span style=&quot;background-color: var(--ds-md-inline-code-color,#ececec); font-family: var(--ds-font-family-code); color: rgb(64, 64, 64); text-align: left;&quot;&gt;&lt;b style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;用户界面层（CLI）&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="320" y="80" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="9Ebc9e9nHDDUEK741GDo-2" target="9Ebc9e9nHDDUEK741GDo-4">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-8" value="&lt;div&gt;【数据交互】&lt;/div&gt;&lt;div&gt;参数传递：&lt;/div&gt;&lt;div&gt;- GameState结构体 (L24)&lt;/div&gt;&lt;div&gt;- 当前玩家标识currentPlayer&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="9Ebc9e9nHDDUEK741GDo-7">
          <mxGeometry x="-0.0737" y="-3" relative="1" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-2" value="&lt;span style=&quot;background-color: var(--ds-md-inline-code-color,#ececec); font-family: var(--ds-font-family-code); color: rgb(64, 64, 64); text-align: left;&quot;&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;游戏控制层&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="320" y="230" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-3" value="&lt;span style=&quot;background-color: var(--ds-md-inline-code-color,#ececec); color: rgb(64, 64, 64); font-family: var(--ds-font-family-code); text-align: start;&quot;&gt;&lt;b style=&quot;&quot;&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;数据持久层&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="320" y="525" width="120" height="60" as="geometry" />
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="9Ebc9e9nHDDUEK741GDo-4" target="9Ebc9e9nHDDUEK741GDo-3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-10" value="&lt;div&gt;【数据流向】&lt;/div&gt;&lt;div&gt;保存：history数组 → game.dat&lt;/div&gt;&lt;div&gt;读取：config.ini → difficulty&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="9Ebc9e9nHDDUEK741GDo-9">
          <mxGeometry x="-0.0235" y="-2" relative="1" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="9Ebc9e9nHDDUEK741GDo-4" value="&lt;span style=&quot;background-color: var(--ds-md-inline-code-color,#ececec); font-family: var(--ds-font-family-code); color: rgb(64, 64, 64); text-align: left;&quot;&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;核心逻辑层&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
          <mxGeometry x="320" y="380" width="120" height="60" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
