tmp/near.mjs
分割 1 / 1 · 元ファイル 1〜37行付近
let webkit;
try { ({ webkit } = await import('playwright')); }
catch (e) { ({ webkit } = await import('file:///C:/平成ゾンビ学園/node_modules/playwright/index.mjs')); }
import http from 'http'; import fs from 'fs'; import path from 'path';
const ROOT='C:/石とゾンビ';
const pick=u=>{const a=path.join(ROOT,'public',u); return fs.existsSync(a)?a:path.join(ROOT,u);};
const srv=http.createServer((q,r)=>{let u=decodeURIComponent(q.url.split('?')[0]);if(u==='/')u='/index.html';
fs.readFile(pick(u),(e,d)=>{if(e){r.writeHead(404);r.end();return;}
r.writeHead(200,{'Content-Type':u.endsWith('.js')?'text/javascript':'text/html'});r.end(d);});});
await new Promise(ok=>srv.listen(8855,ok));
const b=await webkit.launch(); const p=await b.newPage({viewport:{width:390,height:797}});
const errs=[]; p.on('pageerror',e=>errs.push(String(e.message).slice(0,160)));
await p.goto('http://localhost:8855/index.html',{waitUntil:'load'}); await p.waitForTimeout(900);
const out=await p.evaluate(()=>{
const res=[];
for(const d of [0.44,0.6,0.8,1.0,1.2]){
let kill=0,knock=0,miss=0,angs=[];
for(let a=14;a<=84;a+=2) for(let k=1;k<=10;k++){
const o=window.ZG.trial(d,a,k/10);
if(o.r==='kill'){kill++;angs.push(a);} else if(o.r==='knock')knock++; else miss++;
}
res.push({d,kill,knock,miss,lo:angs.length?Math.min(...angs):0,hi:angs.length?Math.max(...angs):0});
}
// 大岩も見る
let rk=0,rn=0,rm=0;
for(const d of [2,3,4,5]) for(let a=14;a<=84;a+=4) for(let k=2;k<=10;k+=2){
const o=window.ZG.trial(d,a,k/10,true);
if(o.r==='kill')rk++; else if(o.r==='knock')rn++; else rm++;
}
return {res,rock:{rk,rn,rm}};
});
console.log('取り付かれた時の自力脱出(近い距離)');
console.log('距離 倒した 押した 外れ 倒せる角度');
for(const r of out.res) console.log((r.d+'m').padEnd(7)+String(r.kill).padEnd(8)+String(r.knock).padEnd(8)+String(r.miss).padEnd(7)+(r.kill?r.lo+'〜'+r.hi+'度':'—'));
console.log('\n大岩(2〜5m・360通り): 倒した '+out.rock.rk+' / 押した '+out.rock.rn+' / 外れ '+out.rock.rm);
console.log('JSエラー: '+(errs.length?errs.join(' / '):'なし'));
await b.close(); srv.close(); process.exit(0);