当前位置: 首页 > news >正文

自由型象棋分析程序

Screenshot_20251007_164231

可以键盘操作。比如鼠标移到某个位置,按r出来个黑车。空格删掉棋子。还可以自己吃自己,空白吃自己等,我感觉摆残局最方便。

程序很乱。鄙人之前所发贴的拼凑版。再贴部分代码:

httpd.py

# !/usr/bin/python3
from ee import *
from http.server import *
from threading import *
from urllib.parse import unquote
from random import randintclass HTTPReqHandler (SimpleHTTPRequestHandler):def __init__ (m, r, c, s): super().__init__(r, c, s, directory='www')def do_GET (m):def _200 ():m.send_response(200)m.send_header('Content-type', 'text/plain')m.end_headers()path = m.requestline.split(' ')[1]if path.startswith('/ucci?'):ee.send(unquote(path[6:]))_200()m.wfile.write(ee.recv().encode())elif path.startswith('/rpu'):n = randint(0, 6812)f = open('pu.txt', 'rb')for i in range(n): f.readline()_200()m.wfile.write(f.readline())f.close()else: super().do_GET()def do_HEAD (m): super().do_HEAD()def do_POST (m): super().do_POST()def end_headers (m): # callbackm.send_header('Cache-Control', 'no-store')super().end_headers()def httpd_thread ():port = 8000svr_addr = ('', port)httpd = ThreadingHTTPServer(svr_addr, HTTPReqHandler)print('Listening at', port)httpd.serve_forever()Thread(daemon=1, target=httpd_thread).start()try:while True: input()
except BaseException: pass
View Code

JS

function ajax(req, param, cb){let ax = window.XMLHttpRequest ?  new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP')ax.onreadystatechange = function(){if(ax.readyState != 4 || ax.status != 200) returncb(ax.responseText)}ax.open('GET', req + encodeURIComponent(param), true); ax.send()
}function move (who, mv) {ucciout.innerText = 'busy'ajax('/ucci?', 'position fen ' + _brd2fen() + ' ' + who + '\ngo 999', (s)=>{ucciout.innerText = slet i = s.indexOf('\nbestmove')if(i === -1) return// 'b' - 'a'=NaN; '9' - '0'=9let a = 'a'.charCodeAt(0)fx = s.charCodeAt(i+10) - atx = s.charCodeAt(i+12) - afy = '9' - s.charAt(i+11)ty = '9' - s.charAt(i+13)//console.log(fx, fy, tx, ty)if (mv) { // 走棋而不是仅分析
      recMove(fx, fy, tx, ty)_brd[ty][tx] = _brd[fy][fx]; _brd[fy][fx] = ' '; draw_all()}})
}function rpu () {ajax('/rpu', '', (s)=>{pad.value = sloadUBB()})
}let dic = JSON.parse(`{"r":"车", "n":"马", "c":"炮", "b":"象", "B":"相",
"a":"士", "A":"仕", "k":"将", "K":"帅", "p":"卒", "P":"兵"}`)
dic['R'] = dic['r']; dic['N'] = dic['n']; dic['C'] = dic['c']function recMove(fx, fy, tx, ty) {let c = _brd[fy][fx]if (c === ' ') returnlet isRed = c < 'a'let d = fy - tyif (d < 0) d = -ds = dic[c]if (isRed) {let x = "九八七六五四三二一"s += x[fx]if (fy === ty)s += "平" + x[tx]else {s += (fy > ty) ? "进" : "退"if ("RCPK".includes(c))s += "零一二三四五六七八九"[d]elses += x[tx]}}else {let x = "123456789"s += x[fx]if (fy === ty)s += "平" + x[tx]else {s += (fy < ty) ? "进" : "退"if ("rcpk".includes(c))s += "0123456789"[d]elses += x[tx]}}if (!moves.value.length) mc = 0moves.value += s + ' '
}
View Code

 

http://www.hskmm.com/?act=detail&tid=26179

相关文章:

  • 前端HTML contenteditable 属性使用指南 - 教程
  • luogu P1648 看守
  • 题解:P11219 【MX-S4-T3】「yyOI R2」youyou 的序列 II
  • Seismic Unix 基础使用
  • 2025实验室净化厂家/实验室装修厂家/实验室建设厂家权威推荐榜:专业设计与洁净技术实力之选
  • 修改注册表,实现电脑小键盘开机自启(NumLock灯常亮)
  • 完整教程:nav2笔记-250603
  • Bartender打印乱序条码教程
  • 多Agent协作入门:基于A2A协议的Agent通信
  • 时尚产品需求预测与库存优化模型解析
  • 自制带得分和推荐走法的象棋视频
  • DP分析黑科技——闫氏DP分析法
  • MUGEN游戏引擎等一系列相关杂谈
  • # 20232313 2025-2026-1 《网络与系统攻防技术》实验一实验报告 - 20232313
  • 一生一芯学习:PA2:输入输出
  • vector使用中的一个小问题
  • OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering() - 指南
  • 2025.10.7——2绿
  • 完整教程:无人机避障——感知部分(Ubuntu 20.04 复现Vins Fusion跑数据集)胎教级教程
  • 我真的博了
  • 2025.10.6——1绿1蓝
  • 深入解析:人工智能-Chain of Thought Prompting(思维链提示,简称CoT)
  • 年龄排序
  • 二分图最大匹配 输出具体方案
  • 我的联想小新潮7000笔记本的优化
  • Go语言之接口与多态 -《Go语言实战指南》 - 指南
  • 地球科学概论
  • 2025多校冲刺CSP模拟赛4 总结
  • 多路归并、败者树、置换-选择排序、最佳归并树
  • 看vue文档记录(未整理)