PageSourceSearch

https://shike-web.vercel.app/_nuxt/DUrzmXvD.js

js shike-web.vercel.app collected 2026-10-03 07:43:29 UTC 9,480 bytes, 1 lines download raw bytes

1import{J as Z,al as i,a8 as xe,ab as g,B as C,y as s,aw as b,a6 as he,A as G,d as be,am as ge,a5 as _e,z as ee,m as ye,H as B,aY as W,n as we,x as te,r as ke,c as Te,aH as Ce}from"./BRmlP7xU.js";import{u as Se}from"./BVT59sr3.js";import{a as Le,c as Q}from"./4qhZemWT.js";import{_ as Ie}from"./C6IXV3VF.js";import{_ as Fe}from"./Vt_RF1Q8.js";import{_ as je}from"./Y4rNzQtG.js";import{h as Ae,i as Me,j as Pe}from"./CshGXoZE.js";import{G as Be,F as We}from"./Bfedg0NF.js";import{u as He}from"./DPoMep2H.js";import{u as $e}from"./X5ghqqtO.js";import"./DsqdWQfm.js";import"./TDtrdbi3.js";import"./BsvMOEaX.js";import"./D8Y2ukjb.js";import"./B8XgxyKV.js";import"./Bz5BUBp2.js";import"./Bu0Bv7np.js";import"./D_j0JRW0.js";const ze={class:"mx-auto max-w-2xl px-4 py-8"},Oe={class:"rounded-3xl bg-white p-6 shadow-xl ring-1 ring-slate-200"},Ve={class:"mb-5 flex items-center justify-between"},Ee={class:"flex items-center gap-2"},Ge={class:"rounded-full bg-teal-50 px-2.5 py-0.5 text-sm font-semibold text-teal-600"},Ne={class:"text-right"},Ue={class:"font-mono text-lg font-bold text-teal-700"},Je={class:"mb-4 flex flex-wrap gap-2"},qe=["disabled"],De=["disabled"],Ye={key:0,class:"pointer-events-none absolute inset-0 z-20",style:{overflow:"visible"},width:"100%",height:"100%"},Ke=["points"],Re={key:1,class:"pointer-events-none absolute left-1/2 top-3 z-30 -translate-x-1/2"},Xe=["data-cell","disabled","onClick"],Qe={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm"},Ze={class:"win-card mx-4 w-full max-w-sm rounded-3xl bg-white p-8 text-center shadow-2xl"},et={class:"mb-2 text-2xl font-bold text-slate-900"},p=7,u=8,N=3,U=3,tt=Z({__name:"FunLinkUpView",setup(ne){const _=Se(),M=p+2,k=u+2,S=["🍎","🍊","🍋","🍉","🍇","🍓","🥝","🍑","🍒","🥥","🌹","🌻","🌟","⚡"];function H(n){return Math.min(6+(n-1),S.length)}const o=i(D()),r=i(null),y=i(1),L=i(0),c=i(null),P=i(!1),T=i(!1),m=i(null),I=i(null),J=i(null),F=i(N),j=i(U),$=i(!1);function le(n){return Math.floor(Math.random()*n)}function q(n){for(let t=n.length-1;t>0;t--){const e=le(t+1);[n[t],n[e]]=[n[e],n[t]]}return n}function D(){return Array.from({length:M},()=>Array(k).fill(0))}function se(){const t=p*u/2,e=H(y.value),l=[];for(let a=0;a<t;a++){const f=a%e+1;l.push(f,f)}return q(l)}function Y(){const n=se(),t=D();let e=0;for(let l=1;l<=p;l++)for(let a=1;a<=u;a++)t[l][a]=n[e++];o.value=t,r.value=null,c.value=null,m.value=null,I.value=null,P.value=!1,F.value=N,j.value=U,R(!1)}function z(n=!1){n||(y.value=1,Q("linkup:level",1)),L.value=p*u,T.value=!1,Y()}function O(n,t){if(n.r===t.r&&n.c===t.c||o.value[n.r][n.c]!==o.value[t.r][t.c])return null;const e=[[-1,0],[1,0],[0,-1],[0,1]],l=Array.from({length:M},()=>Array.from({length:k},()=>[1/0,1/0,1/0,1/0,1/0])),a=[];for(let d=0;d<4;d++)a.push({r:n.r,c:n.c,dir:d+1,turns:0,prev:null});let f=null;for(;a.length;){const d=a.shift(),[pe,me]=e[d.dir-1],x=d.r+pe,h=d.c+me;if(x<0||x>=M||h<0||h>=k)continue;const X=x===t.r&&h===t.c;if(!(!X&&o.value[x][h]!==0)){for(let w=0;w<4;w++){const A=d.turns+(w+1===d.dir?0:1);if(!(A>2)&&!(l[x][h][w]<=A)){if(l[x][h][w]=A,X){f={r:x,c:h,dir:w+1,turns:A,prev:d};break}a.push({r:x,c:h,dir:w+1,turns:A,prev:d})}}if(f)break}}if(!f)return null;const E=[];let v=f;for(;v;)E.push({r:v.r,c:v.c}),v=v.prev;return E.reverse()}function V(){const n=[];for(let t=1;t<=p;t++)for(let e=1;e<=u;e++)o.value[t][e]!==0&&n.push({r:t,c:e});for(let t=0;t<n.length;t++)for(let e=t+1;e<n.length;e++)if(o.value[n[t].r][n[t].c]===o.value[n[e].r][n[e].c]&&O(n[t],n[e]))return!0;return!1}function K(){const n=[],t=[];for(let e=1;e<=p;e++)for(let l=1;l<=u;l++)o.value[e][l]!==0&&(n.push({r:e,c:l}),t.push(o.value[e][l]));q(t),n.forEach((e,l)=>o.value[e.r][e.c]=t[l]),r.value=null,c.value=null}function oe(){const n=[],t=[];for(let e=1;e<=p;e++)for(let l=1;l<=u;l++)o.value[e][l]!==0&&(n.push({r:e,c:l}),t.push(o.value[e][l]));t.sort((e,l)=>e-l),n.forEach((e,l)=>o.value[e.r][e.c]=t[l]),r.value=null,c.value=null}function R(n=!0){if(V())return;let t=0;for(;!V()&&t<30;)K(),t++;V()||oe(),n&&t>0&&($.value=!0,window.setTimeout(()=>$.value=!1,1600))}function ae(n,t){const e=J.value;if(!e)return{x:0,y:0};const l=getComputedStyle(e),a=parseFloat(l.paddingLeft)||12,f=parseFloat(l.columnGap||l.gap)||6,v=(e.clientWidth-a*2-f*(u-1))/u;return{x:a+(t-1)*(v+f)+v/2,y:a+(n-1)*(v+f)+v/2}}function re(n,t,e){return new Promise(l=>{T.value=!0,I.value=e.map(a=>ae(a.r,a.c)),r.value=null,window.setTimeout(()=>{o.value[n.r][n.c]=0,o.value[t.r][t.c]=0,L.value-=2,I.value=null,T.value=!1,L.value===0?(Q("linkup:level",y.value+1),P.value=!0,_.fireLarge()):R(!0),l()},240)})}function ie(n,t){return new Promise(e=>{T.value=!0,m.value={a:n,b:t},window.setTimeout(()=>{m.value=null,r.value={r:t.r,c:t.c},T.value=!1,e()},420)})}async function ue(n,t){if(T.value||o.value[n][t]===0||P.value)return;if(!r.value){r.value={r:n,c:t},c.value=null;return}if(r.value.r===n&&r.value.c===t){r.value=null;return}const e=r.value,l={r:n,c:t},a=O(e,l);r.value=null,a?await re(e,l,a):await ie(e,l)}
1function ce(){if(F.value<=0)return;const n=[];for(let t=1;t<=p;t++)for(let e=1;e<=u;e++)o.value[t][e]!==0&&n.push({r:t,c:e});for(let t=0;t<n.length;t++)for(let e=t+1;e<n.length;e++)if(o.value[n[t].r][n[t].c]===o.value[n[e].r][n[e].c]&&O(n[t],n[e])){c.value=[n[t],n[e]],F.value-=1;return}c.value=null}function fe(){j.value<=0||(K(),j.value-=1)}function de(){y.value+=1,L.value=p*u,Y()}const ve=te(()=>{const n=[];for(let t=1;t<=p;t++)for(let e=1;e<=u;e++)n.push({r:t,c:e,v:o.value[t][e]});return n});return xe(async()=>{const n=await Le("linkup:level");typeof n=="number"&&n>=1?(y.value=n,z(!0)):z(!1)}),(n,t)=>(g(),C("div",ze,[s("div",Oe,[s("div",Ve,[s("div",null,[s("div",Ee,[t[1]||(t[1]=s("h1",{class:"text-2xl font-bold text-slate-800"},"连连看",-1)),s("span",Ge," 第 "+b(y.value)+" 关 ",1)]),t[2]||(t[2]=s("p",{class:"mt-1 text-sm text-slate-400"},"相同图案 · 连线拐弯不超过两次",-1))]),s("div",Ne,[t[3]||(t[3]=s("p",{class:"text-xs text-slate-400"},"剩余",-1)),s("p",Ue,b(L.value),1)])]),s("div",Je,[s("button",{type:"button",class:"rounded-lg bg-slate-100 px-3 py-1.5 text-sm text-slate-600 transition hover:bg-slate-200 disabled:cursor-not-allowed disabled:opacity-40",disabled:F.value<=0,onClick:ce}," 💡 提示 ("+b(F.value)+") ",9,qe),s("button",{type:"button",class:"rounded-lg bg-slate-100 px-3 py-1.5 text-sm text-slate-600 transition hover:bg-slate-200 disabled:cursor-not-allowed disabled:opacity-40",disabled:j.value<=0,onClick:fe}," 🔀 洗牌 ("+b(j.value)+") ",9,De),s("button",{type:"button",class:"rounded-lg bg-teal-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-teal-700",onClick:t[0]||(t[0]=e=>z(!1))}," 🔄 重开 ")]),s("div",{ref_key:"boardWrap",ref:J,class:"relative grid gap-1.5 rounded-2xl bg-slate-50 p-3",style:he({gridTemplateColumns:`repeat(${u}, minmax(0, 1fr))`})},[I.value?(g(),C("svg",Ye,[s("polyline",{class:"link-line",points:I.value.map(e=>e.x+","+e.y).join(" ")},null,8,Ke)])):G("",!0),$.value?(g(),C("div",Re,[...t[4]||(t[4]=[s("span",{class:"rounded-full bg-slate-900/80 px-3 py-1 text-sm text-white shadow"}," 无可消除,已自动洗牌 🔀 ",-1)])])):G("",!0),(g(!0),C(be,null,ge(ve.value,e=>(g(),C("button",{key:e.r+"-"+e.c,"data-cell":e.r+"-"+e.c,type:"button",class:_e(["flex aspect-square items-center justify-center rounded-lg text-2xl transition",[e.v===0?"invisible":"bg-white ring-1 ring-slate-200 hover:ring-teal-400",r.value&&r.value.r===e.r&&r.value.c===e.c?"!ring-2 !ring-teal-500 bg-teal-50":"",c.value&&(c.value[0].r===e.r&&c.value[0].c===e.c||c.value[1].r===e.r&&c.value[1].c===e.c)?"!ring-2 !ring-amber-400":"",m.value&&(m.value.a.r===e.r&&m.value.a.c===e.c||m.value.b.r===e.r&&m.value.b.c===e.c)?"tile-fail":""]]),disabled:e.v===0,onClick:l=>ue(e.r,e.c)},b(e.v===0?"":S[(e.v-1)%S.length]),11,Xe))),128))],4),s("p",{class:"mt-4 text-xs leading-relaxed text-slate-400"}," 点击两个相同图案,若可用不超过两次拐弯的线连起即可消除。卡住时用「提示」(每关 "+b(N)+" 次),无路可走会自动洗牌或用「洗牌」重排(每关 "+b(U)+" 次)。关卡越高图案种类越多、越难配对;通关进入下一关,进度自动保存。纯本地运行。 ")]),(g(),ee(ye,{to:"body"},[B(we,{name:"fade"},{default:W(()=>[P.value?(g(),C("div",Qe,[s("div",Ze,[t[5]||(t[5]=s("div",{class:"mb-4 text-6xl"},"🎉",-1)),s("h2",et,"第 "+b(y.value)+" 关 通关!",1),t[6]||(t[6]=s("p",{class:"mb-6 text-sm text-slate-500"},"下一关图案更多、挑战更大,继续加油~",-1)),s("div",{class:"flex justify-center"},[s("button",{type:"button",class:"rounded-full bg-teal-600 px-10 py-3 text-sm font-semibold text-white shadow-md transition-all hover:bg-teal-700 hover:shadow-lg active:scale-95",onClick:de}," 下一关 → ")])])])):G("",!0)]),_:1})]))]))}}),nt=ke(tt,[["__scopeId","data-v-9a0c01bb"]]),yt=Z({__name:"index",setup(ne){const _=Te["game/link-up"];return He("fun","game/link-up"),$e(te(()=>({title:Pe(_),description:Me(_),path:"/fun/game/link-up",keywords:Ae(_),ogType:"article",jsonLd:[Be(_),We(_)]}))),Ce({meta:[{name:"theme-color",content:"#f0fdfa"}]}),(M,k)=>{const S=nt,H=Ie,o=Fe,r=je;return g(),ee(r,{width:"main",compact:""},{default:W(()=>[B(H,null,{fallback:W(()=>[...k[0]||(k[0]=[s("div",{class:"py-24 text-center text-sm text-slate-500"}
1,"工具加载中…",-1)])]),default:W(()=>[B(S)]),_:1}),B(o,{kind:"fun",slug:"game/link-up"})]),_:1})}}});export{yt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.