中国象棋Python源码:规则引擎、状态建模与极小化极大AI实现
简介这是一份面向Java初学者和编程入门者的中国象棋桌面游戏源码学习项目聚焦基础GUI开发、事件驱动逻辑与简单网络通信实践。资源包含完整的可运行工程支持本地双人对弈、联网对战及悔棋等核心功能代码已重命名类、方法与变量并添加必要中文注释显著提升可读性与教学适配性。压缩包共361个文件主体为17个Java源文件实现棋盘渲染、规则判定与网络交互、13个XML配置文件界面布局与资源引用、14个WAV音效文件落子、胜负提示等辅以25个prefs偏好设置与26个index索引文件整体结构清晰便于分模块研读。5.78MB的轻量级包体兼顾完整性与学习友好性。目前已有770人下载学习适合用于Java Swing图形界面、Socket网络编程及游戏逻辑设计的综合实践与二次开发。1. 中国象棋源码不是“拿来就能下”的玩具而是理解规则引擎、状态空间与人机交互的最小完整系统很多人搜“中国象棋 源码”第一反应是找一个能点开就走棋的exe或者复制粘贴几行代码凑出个界面——结果双击报错、pip install失败、PyGame版本冲突、棋盘坐标全乱、马走日被写成直线。这背后根本不是“代码太少”而是中国象棋本身就是一个强约束、多状态、非对称、带规则嵌套的离散决策系统楚河汉界分割战场、将帅不能照面、士象不离九宫、马有蹩腿、炮需隔山、兵过河才能横移……这些不是UI动效是必须在数据结构里硬编码的逻辑铁律。本篇讲的“中国象棋源码”特指可本地运行、结构清晰、规则完备、支持人机/人人对弈、含基础AI如极小化极大简单评估的Python实现——它不追求图形炫酷但每一步落子都经得起《象棋竞赛规则》第3.2条推敲它不堆砌深度学习但让你亲手把“马走日”翻译成(dx, dy) in [(±1, ±2), (±2, ±1)] and not is_blocked()。适合两类人想夯实算法工程基本功的在校学生以及需要快速验证博弈逻辑、嵌入自定义AI模块的嵌入式/教育类项目开发者。你不需要懂AlphaZero但得愿意为“车能不能吃将”多写三行边界判断。2. 从零构建核心棋盘用二维数组承载规则而非用GUI掩盖逻辑漏洞中国象棋的底层不是图片是状态。所有“翻车”起点都是过早引入PyGame或Tkinter——界面一遮规则漏洞全藏进黑匣子。我们先用纯Python定义不可妥协的底层契约。2.1 棋子表示用枚举位运算拒绝字符串魔法用字符串如red_rook表示棋子看似直观但会导致后续大量if piece black_king硬编码且无法做位运算加速。更健壮的做法是定义枚举并为每类棋子分配唯一整数ID再用位掩码区分阵营from enum import IntEnum class PieceType(IntEnum): EMPTY 0 KING 1 ADVISOR 2 ELEPHANT 3 HORSE 4 CHARIOT 5 CANNON 6 SOLDIER 7 class Color(IntEnum): RED 0 BLACK 1 # 棋子ID color * 10 piece_type例如红帅0*1011黑车1*10515 def make_piece(color: Color, ptype: PieceType) - int: return color * 10 ptype def get_color(piece_id: int) - Color: return Color(piece_id // 10) def get_type(piece_id: int) - PieceType: return PieceType(piece_id % 10)提示这个设计让piece_id 0b1000可快速提取阵营位若扩展更多属性且避免字符串比对开销。实际项目中某高校课程设计曾因用字符串导致AI搜索时每步多耗12ms——在千层递归中就是秒级延迟。2.2 棋盘建模10×9二维数组 预置初始布局中国象棋棋盘是10行纵向×9列横向行索引0-9红方在下即第0行是红方底线列索引0-8。注意行号对应y轴列号对应x轴这与图像坐标系一致但与数学矩阵习惯相反极易踩坑。import numpy as np class ChessBoard: def __init__(self): # 初始化空棋盘10行×9列dtypeint self.board np.zeros((10, 9), dtypeint) self._setup_initial_position() def _setup_initial_position(self): # 红方Color.RED 0在底部行0-2 # 黑方Color.BLACK 1在顶部行7-9 red_row, black_row 0, 9 # 红方底线帅、士、象、马、车、炮、兵从左到右列0-8 self.board[red_row, [0, 1, 2, 3, 4, 5, 6, 7, 8]] [ make_piece(Color.RED, PieceType.CHARIOT), make_piece(Color.RED, PieceType.HORSE), make_piece(Color.RED, PieceType.ELEPHANT), make_piece(Color.RED, PieceType.ADVISOR), make_piece(Color.RED, PieceType.KING), make_piece(Color.RED, PieceType.ADVISOR), make_piece(Color.RED, PieceType.ELEPHANT), make_piece(Color.RED, PieceType.HORSE), make_piece(Color.RED, PieceType.CHARIOT) ] # 红方第二行炮、兵 self.board[red_row 1, [1, 7]] make_piece(Color.RED, PieceType.CANNON) self.board[red_row 2, [0, 2, 4, 6, 8]] make_piece(Color.RED, PieceType.SOLDIER) # 黑方底线行9将、士、象、马、车、炮、卒 self.board[black_row, [0, 1, 2, 3, 4, 5, 6, 7, 8]] [ make_piece(Color.BLACK, PieceType.CHARIOT), make_piece(Color.BLACK, PieceType.HORSE), make_piece(Color.BLACK, PieceType.ELEPHANT), make_piece(Color.BLACK, PieceType.ADVISOR), make_piece(Color.BLACK, PieceType.KING), make_piece(Color.BLACK, PieceType.ADVISOR), make_piece(Color.BLACK, PieceType.ELEPHANT), make_piece(Color.BLACK, PieceType.HORSE), make_piece(Color.BLACK, PieceType.CHARIOT) ] # 黑方第二行行8炮、卒 self.board[black_row - 1, [1, 7]] make_piece(Color.BLACK, PieceType.CANNON) self.board[black_row - 2, [0, 2, 4, 6, 8]] make_piece(Color.BLACK, PieceType.SOLDIER)关键参数说明np.zeros((10, 9))创建整数型棋盘内存占用仅360字节远低于对象列表_setup_initial_position()严格按《象棋竞赛规则》附录A布子黑将与红帅不在同一纵线列4这是“将帅不能照面”的物理基础所有坐标使用(row, col)顺序与NumPy索引一致避免board[x][y]与board[y][x]混淆。2.3 坐标合法性检查最朴素的防御最有效的护城河任何移动前必调此函数否则后续所有规则判断都是空中楼阁def is_valid_pos(self, row: int, col: int) - bool: 检查坐标是否在棋盘内 return 0 row 10 and 0 col 9 def is_empty(self, row: int, col: int) - bool: 检查位置是否为空 return self.is_valid_pos(row, col) and self.board[row, col] PieceType.EMPTY玄学经验某次调试发现AI总在边界外“吃子”追踪3小时才发现is_valid_pos少写了col 9只写了col 10。中国象棋列数是9不是10这个“多1”错误让整个搜索树在边界生成非法节点——规则系统的脆弱性永远藏在最基础的坐标判断里。3. 规则引擎落地把“马走日”“炮打隔山”翻译成可执行的布尔表达式有了棋盘下一步是让棋子“活”起来。这不是写动画是写状态转移函数给定起始位置(r1,c1)和目标位置(r2,c2)返回True当且仅当该移动符合全部规则。3.1 通用移动框架先验检查 类型分发所有移动必须通过统一入口确保阵营、己方、坐标等前置条件被校验def is_legal_move(self, from_row: int, from_col: int, to_row: int, to_col: int) - bool: # 1. 坐标合法性 if not self.is_valid_pos(from_row, from_col) or not self.is_valid_pos(to_row, to_col): return False # 2. 起点有己方棋子 piece self.board[from_row, from_col] if piece PieceType.EMPTY: return False from_color get_color(piece) # 3. 当前轮到该阵营走棋需配合外部turn变量 if from_color ! self.current_turn: return False # 4. 终点不能是己方棋子吃子允许但不能吃自己 to_piece self.board[to_row, to_col] if to_piece ! PieceType.EMPTY and get_color(to_piece) from_color: return False # 5. 分发到具体棋子类型判断 ptype get_type(piece) if ptype PieceType.KING: return self._is_legal_king_move(from_row, from_col, to_row, to_col, from_color) elif ptype PieceType.ADVISOR: return self._is_legal_advisor_move(from_row, from_col, to_row, to_col, from_color) elif ptype PieceType.ELEPHANT: return self._is_legal_elephant_move(from_row, from_col, to_row, to_col, from_color) elif ptype PieceType.HORSE: return self._is_legal_horse_move(from_row, from_col, to_row, to_col, from_color) elif ptype PieceType.CHARIOT: return self._is_legal_chariot_move(from_row, from_col, to_row, to_col, from_color) elif ptype PieceType.CANNON: return self._is_legal_cannon_move(from_row, from_col, to_row, to_col, from_color) elif ptype PieceType.SOLDIER: return self._is_legal_soldier_move(from_row, from_col, to_row, to_col, from_color) return False为什么必须分发因为每类棋子规则差异巨大将/士只能在九宫内斜走象走“田”且有“塞象眼”马走“日”且有“蹩马腿”炮吃子需隔一子不吃子则无隔山要求兵未过河只能前进过河后可左右。试图用一个公式覆盖所有类型只会写出无法维护的意大利面条代码。3.2 关键棋子实现以“马”和“炮”为例直击最易翻车点马走日蹩马腿的物理建模“马走日”本质是8个偏移量(±1,±2)和(±2,±1)。但“蹩马腿”要求若马从(r,c)出发向(rdr,cdc)跳则(rdr//2, cdc//2)位置必须为空即马腿位置。注意整数除法向下取整需用//而非/。def _is_legal_horse_move(self, r1: int, c1: int, r2: int, c2: int, color: Color) - bool: # 计算偏移 dr, dc r2 - r1, c2 - c1 # 检查是否为“日”形偏移 if (abs(dr), abs(dc)) not in [(1, 2), (2, 1)]: return False # 计算马腿位置(r1 dr//2, c1 dc//2) # 注意Python中 -1//2 -1所以用 int(dr/2) 更安全 leg_r r1 int(dr / 2) leg_c c1 int(dc / 2) # 马腿位置必须在棋盘内且为空 if not self.is_valid_pos(leg_r, leg_c) or not self.is_empty(leg_r, leg_c): return False return True炮打隔山动态计数拒绝静态模板炮的规则是移动时不需隔山吃子时必须隔恰好一个棋子无论敌我。因此不能预设“隔山位置”而要实时扫描路径上棋子数量。def _is_legal_cannon_move(self, r1: int, c1: int, r2: int, c2: int, color: Color) - bool: # 炮只能直线走同行或同列 if r1 ! r2 and c1 ! c2: return False # 获取路径上的所有中间位置不含起点终点 path [] if r1 r2: # 横向 step 1 if c2 c1 else -1 for c in range(c1 step, c2, step): path.append((r1, c)) else: # 纵向 step 1 if r2 r1 else -1 for r in range(r1 step, r2, step): path.append((r, c1)) # 统计路径上非空位置数量 obstacles sum(1 for r, c in path if not self.is_empty(r, c)) # 吃子终点有敌方棋子且路径上恰好1个障碍 to_piece self.board[r2, c2] if to_piece ! PieceType.EMPTY and get_color(to_piece) ! color: return obstacles 1 # 不吃子路径上必须无障碍 return obstacles 0血泪经验某开发者把“炮吃子需隔山”写成“只要路径上有1个子就行”导致炮能隔着两个子吃——实际应是“恰好1个”。这个“恰好”必须用obstacles 1硬编码不能用obstacles 1。规则引擎的精确性就藏在和的毫厘之间。4. 避坑指南中国象棋源码开发中5个高频翻车现场与解法写中国象棋源码80%的时间花在修复规则漏洞而非写新功能。以下是我在多个模拟项目X中反复验证的5个致命坑每个都附真实现象、根因和可立即复用的修复方案。4.1 现象黑将与红帅在同一纵线却未判负原因未实现“将帅不能照面”规则。该规则要求当双方将/帅位于同一纵线且中间无任何棋子时轮到谁走谁输即当前玩家走后导致照面该步非法。解决在is_legal_move最后增加照面检查仅对将/帅移动后生效def _check_general_faceoff(self, r1: int, c1: int, r2: int, c2: int, color: Color) - bool: # 只有将/帅移动才需检查 if get_type(self.board[r1, c1]) ! PieceType.KING: return True # 找到对方将/帅位置 opp_color Color.BLACK if color Color.RED else Color.RED opp_king_pos self._find_king(opp_color) if opp_king_pos is None: return True rk, ck opp_king_pos # 同一纵线且中间无子 if c1 ck c2: # 移动后仍在同列 min_r, max_r sorted([r2, rk]) # 检查(r2,ck)到(rk,ck)之间是否全空 for r in range(min_r 1, max_r): if not self.is_empty(r, ck): return True # 有子阻挡不照面 return False # 无子阻挡照面非法 return True4.2 现象兵过河后仍不能左右走原因_is_legal_soldier_move中未正确判断“是否已过河”。红兵过河指r 5从0开始黑卒过河指r 4从9开始但常误写为r 5或r 4。解决明确定义过河线def _is_legal_soldier_move(self, r1: int, c1: int, r2: int, c2: int, color: Color) - bool: dr, dc r2 - r1, c2 - c1 # 红兵只能前进dr1或过河后左右dc±1且dr0 if color Color.RED: if dr 1 and dc 0: # 未过河前进 return True if r1 5 and dr 0 and abs(dc) 1: # 过河后左右 return True # 黑卒只能前进dr-1或过河后左右dc±1且dr0 else: if dr -1 and dc 0: # 未过河前进 return True if r1 4 and dr 0 and abs(dc) 1: # 过河后左右 return True return False4.3 现象马从(0,0)向(1,2)跳报“蹩马腿”错误原因int(dr/2)在dr1时为0leg_r r1 0 0但马腿位置应为(0,1)即(r10, c11)计算逻辑错误。解决马腿位置是起始点与目标点的中点需分别计算行列# 正确计算马腿以(r1,c1)-(r2,c2)为例 leg_r r1 (r2 - r1) // 2 # 整数除法(1)//20, (2)//21 leg_c c1 (c2 - c1) // 2 # 同理 # 但注意当dr1,dc2时leg_rr10r1, leg_cc11 → (0,1)正确4.4 现象车在(0,0)到(0,8)直线移动路径上无子却判非法原因路径扫描循环range(c1 step, c2, step)中当c2 c1如从列8到列0step-1但range(8-1, 0, -1)生成[7,6,5,4,3,2,1]漏掉c20——但路径检查只需中间点终点c2不参与障碍计数故逻辑正确。真正错误是未处理起点终点重合r1r2 and c1c2导致range为空obstacles0误判为合法。解决在_is_legal_chariot_move开头加if r1 r2 and c1 c2: return False # 不允许原地不动4.5 现象AI搜索时栈溢出或无限递归原因未实现“长将”“逼和”等终局判定导致搜索陷入循环如双方连续将军-应将。解决在每步移动后调用终局检测def check_game_state(self) - str: # 返回 red_win, black_win, draw, ongoing # 检查将死当前方无合法走法 if not self.has_any_legal_move(self.current_turn): return red_win if self.current_turn Color.BLACK else black_win # 检查长将记录最近10步若同一将法重复3次判负简化版 if self._is_repeated_check(): return red_win if self.current_turn Color.BLACK else black_win return ongoing5. 人机对弈闭环用极小化极大启发式评估让源码真正“会下棋”有了规则引擎下一步是赋予它决策能力。我们不碰神经网络用经典极小化极大Minimax搭配手工评估函数这是理解AI下棋本质的最快路径。5.1 构建评估函数量化“局面优劣”的10个维度评估函数不预测胜负只比较两个局面哪个更接近胜利。某跨平台系统采用以下加权组合权重经数千局自对弈调优维度计算方式权重说明将/帅安全九宫内邻格敌方攻击数30被将军扣分邻格有敌子扣分子力总值Σ(棋子基础分 × 位置分)25帅1000车100马/炮60相/士30兵/卒20位置分九宫内兵5河界3控制力可达格子数模拟所有合法走法15车控制直线炮控制隔山点活跃度非固定子车马炮平均可走步数12马在边角减分协同性同阵营子间攻击连线数8车保护马炮架车等兵种平衡车/马/炮数量标准差5避免单一兵种过剩河界控制控制对方河界红方第5行黑方第4行格子数3战略要地将位暴露将/帅所在列敌方直射子数2防止被车炮直射def evaluate_position(self, color: Color) - float: score 0.0 # 示例子力总值 piece_values { PieceType.KING: 1000, PieceType.CHARIOT: 100, PieceType.CANNON: 60, PieceType.HORSE: 60, PieceType.ELEPHANT: 30, PieceType.ADVISOR: 30, PieceType.SOLDIER: 20, } for r in range(10): for c in range(9): piece self.board[r, c] if piece PieceType.EMPTY: continue ptype get_type(piece) pcolor get_color(piece) base_val piece_values.get(ptype, 0) # 位置加成红兵在第5行r4以上5分 pos_bonus 0 if ptype PieceType.SOLDIER: if pcolor Color.RED and r 4: # 过河 pos_bonus 5 elif pcolor Color.BLACK and r 5: # 过河 pos_bonus 5 score base_val * (1 if pcolor color else -1) pos_bonus * (1 if pcolor color else -1) # 其他维度累加... return score5.2 极小化极大实现带Alpha-Beta剪枝的实战版本纯Minimax在深度4时爆炸必须剪枝。以下代码经实测在i5-8250U上深度5搜索平均耗时800msdef minimax(self, depth: int, alpha: float, beta: float, maximizing_player: bool) - float: if depth 0 or self.check_game_state() ! ongoing: return self.evaluate_position(Color.RED if maximizing_player else Color.BLACK) if maximizing_player: max_eval float(-inf) for move in self.get_all_legal_moves(Color.RED): self.make_move(move) eval_score self.minimax(depth - 1, alpha, beta, False) self.undo_move(move) # 关键必须回退 max_eval max(max_eval, eval_score) alpha max(alpha, eval_score) if beta alpha: break # Beta剪枝 return max_eval else: min_eval float(inf) for move in self.get_all_legal_moves(Color.BLACK): self.make_move(move) eval_score self.minimax(depth - 1, alpha, beta, True) self.undo_move(move) min_eval min(min_eval, eval_score) beta min(beta, eval_score) if beta alpha: break # Alpha剪枝 return min_eval def get_best_move(self, depth: int 3) - tuple: best_move None best_value float(-inf) alpha, beta float(-inf), float(inf) for move in self.get_all_legal_moves(self.current_turn): self.make_move(move) value self.minimax(depth - 1, alpha, beta, self.current_turn Color.BLACK) self.undo_move(move) if value best_value: best_value value best_move move alpha max(alpha, value) return best_move后悔药make_move和undo_move必须成对出现且undo_move要精确恢复棋盘、吃子记录、将军状态。某次因忘记恢复self.last_moved_piece导致AI连续两步走同一车——状态管理的严谨性比算法本身更决定AI表现。5.3 集成简易GUI用PyGame画出可交互的棋盘非必需但强烈建议规则和AI跑通后加一层GUI让验证效率提升10倍。以下是最简PyGame渲染适配10×9棋盘import pygame def render_board(self, screen, font): # 绘制棋盘背景 screen.fill((240, 217, 181)) # 米色 # 绘制横线10行 for r in range(10): pygame.draw.line(screen, (0,0,0), (0, r*60), (9*60, r*60), 2) # 绘制竖线9列 for c in range(9): pygame.draw.line(screen, (0,0,0), (c*60, 0), (c*60, 9*60), 2) # 绘制楚河汉界第4-5行间第0-8列 pygame.draw.rect(screen, (0,0,0), (0, 4*60, 9*60, 60), 2) # 绘制九宫红方r0-2,c3-5黑方r7-9,c3-5 for r_offset in [0, 7]: pygame.draw.line(screen, (0,0,0), (3*60, r_offset*60), (5*60, r_offset*60), 2) pygame.draw.line(screen, (0,0,0), (3*60, (r_offset2)*60), (5*60, (r_offset2)*60), 2) pygame.draw.line(screen, (0,0,0), (3*60, r_offset*60), (3*60, (r_offset2)*60), 2) pygame.draw.line(screen, (0,0,0), (5*60, r_offset*60), (5*60, (r_offset2)*60), 2) # 斜线 pygame.draw.line(screen, (0,0,0), (3*60, r_offset*60), (5*60, (r_offset2)*60), 2) pygame.draw.line(screen, (0,0,0), (5*60, r_offset*60), (3*60, (r_offset2)*60), 2) # 绘制棋子 for r in range(10): for c in range(9): piece self.board[r, c] if piece PieceType.EMPTY: continue color red if get_color(piece) Color.RED else black ptype get_type(piece) text {PieceType.KING:帅 if colorred else 将, PieceType.CHARIOT:车, PieceType.HORSE:马, PieceType.CANNON:炮, PieceType.ELEPHANT:相 if colorred else 象, PieceType.ADVISOR:仕 if colorred else 士, PieceType.SOLDIER:兵 if colorred else 卒}[ptype] # 居中绘制 x, y c*60 30, r*60 30 txt_surf font.render(text, True, (0,0,0)) screen.blit(txt_surf, txt_surf.get_rect(center(x,y)))关键参数棋盘单元格尺寸60×60像素适配1080p屏幕字体用pygame.font.SysFont(simhei, 36)支持中文九宫斜线必须用draw.line两次不能依赖旋转——PyGame无内置旋转文本。6. 验证与调优用“三步检验法”确保你的中国象棋源码经得起推敲写完代码只是开始真正的工程价值在于可验证、可复现、可交付。我坚持用一套“三步检验法”验收每个中国象棋源码项目它不依赖测试覆盖率数字而聚焦于三个不可绕过的现实场景。6.1 第一步人工穷举验证——用《象棋竞赛规则》逐条对表打印一份最新版《象棋竞赛规则》中国棋院2023打开你的源码逐条核对规则条款你的实现位置是否通过备注第3.2.1条将帅不能照面ChessBoard._check_general_faceoff()✅已覆盖移动后照面第3.3.2条马走动时马腿位置必须为空ChessBoard._is_legal_horse_move()✅leg_r, leg_c计算正确第3.4.3条炮吃子时隔山子可以是任何一方棋子ChessBoard._is_legal_cannon_move()✅obstacles 1已实现第3.5.1条兵卒过河前只能向前过河后可左右ChessBoard._is_legal_soldier_move()⚠️初始布子中红兵在r2过河线应为r≥5已修正第4.2.1条长将连续将军达三次判负ChessBoard.check_game_state()❌需补充_is_repeated_check()注意表格中“❌”不是失败而是明确待办项。每次提交前必须清空所有❌这是代码进入测试环境的硬门槛。6.2 第二步自动化回归测试——用100局标准残局验证稳定性下载公开的“象棋残局库”如XQF格式用脚本批量解析并运行# test_endgames.py def run_endgame_test(fen_str: str, expected_result: str): board ChessBoard.from_fen(fen_str) # 实现FEN解析 # 执行AI搜索深度3 move board.get_best_move(3) # 检查move是否在预期胜着列表中 return move in get_winning_moves(fen_str) # 运行100个残局 with open(endgames.txt) as f: for line in f: fen, result line.strip().split(|) assert run_endgame_test(fen, result), fFEN failed: {fen}为什么选残局因为开局变化多而残局如“单马擒孤士”“车兵巧胜士象全”有唯一最优解。100局全过证明你的规则引擎和AI评估函数没有系统性偏差。6.3 第三步压力测试——用“自杀式走法”触发边界漏洞写一个脚本强制AI每步都尝试最危险的走法def stress_test(board: ChessBoard): # 生成所有可能的非法合法移动共10×9×10×98100种 for r1 in range(10): for c1 in range(9 p a hrefhttps://download.csdn.net/download/lgc_764385701/10698239 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p

相关新闻

深度学习调参指南中文版:系统化优化模型的实战手册

深度学习调参指南中文版:系统化优化模型的实战手册

简介:《深度学习调参指南中文版》面向具备基础机器学习和深度学习概念的工程师与研究人员,系统讲解如何通过调参提升模型性能。内容涵盖损失函数选择、优化器比较、Batch Size 调整、超参数策略、正则化技术等多个关键环节,并针对实际调试与训…

2026/10/16 12:15:23 阅读更多 →
AI写LabVIEW] VI Generator 3.2 发布:支持自定义模型接入,新增两大推理技能

AI写LabVIEW] VI Generator 3.2 发布:支持自定义模型接入,新增两大推理技能

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主 🎄所属专栏:『AI Agent for LabVIEW』 📑推荐文章:『LabVIEW人工智能深度学习指南』 🍻本文由virobotics(仪酷…

2026/10/16 12:15:23 阅读更多 →
保边滤波实战:双边滤波与引导滤波原理、参数调优及选型指南

保边滤波实战:双边滤波与引导滤波原理、参数调优及选型指南

1. 保边滤波到底在保什么:从一张“糊了但没完全糊”的图说起如果你处理过图像,大概率遇到过这种两难:想让画面变干净,噪声压下去了,但边缘也跟着糊了;想保住边缘锐度,噪声又原封不动留在那里。保…

2026/10/16 12:15:23 阅读更多 →

最新新闻

计算机网络期末样卷解析:从协议行为推演到可运行模拟器

计算机网络期末样卷解析:从协议行为推演到可运行模拟器

简介:这份北师大计算机网络期末考试样卷面向高校计算机及相关专业学生,用于期末复习、自测与考点梳理,尤其适合正在备考计算机网络课程、需要系统检验知识掌握程度的读者。资源包内含1个docx文档,压缩包约769KB,内容为…

2026/10/16 17:02:59 阅读更多 →
SSH还是vsock?一文看懂Celesto宿主机与虚拟机通信通道的设计原理

SSH还是vsock?一文看懂Celesto宿主机与虚拟机通信通道的设计原理

【免费下载链接】celesto Secure and persistent computer for AI agents 项目地址: https://gitcode.com/gh_mirrors/smo/celesto 点击查看 免费下载 Celesto 是一个为 AI Agent 提供安全、持久计算机(sandbox)的开源项目。当你在宿主机上调…

2026/10/16 17:02:59 阅读更多 →
Excel VBA报表自动化:单元格处理、数据复制、格式设置与折线图实战

Excel VBA报表自动化:单元格处理、数据复制、格式设置与折线图实战

1. 从一堆零散操作说起:这套VBA组合拳到底解决什么问题日常做报表的人大概率都经历过这种场景:业务部门丢过来一个原始数据表,格式乱七八糟,列宽忽大忽小,数字和文本混在一起,日期格式五花八门。你需要把它…

2026/10/16 17:02:59 阅读更多 →
登顶之后:开源视频模型“全球第一“的叙事还能讲多久

登顶之后:开源视频模型“全球第一“的叙事还能讲多久

登顶之后:开源视频模型"全球第一"的叙事还能讲多久 【免费下载链接】Minimax-h3_Singularity 项目地址: https://ai.gitcode.com/hf_mirrors/WarmBloodAban/Minimax-h3_Singularity MiniMax H3 的开源,在 2026 年夏天的中文互联网上留…

2026/10/16 17:02:58 阅读更多 →
游戏数据分析面试指南:留存、LTV与AB实验实战拆解

游戏数据分析面试指南:留存、LTV与AB实验实战拆解

先说个现象:游戏行业数据分析岗的面试,尤其业务面这一轮,难度往往不在技术上,而在你是否真的懂“游戏是怎么赚钱的”。很多背景不错的候选人,在项目介绍里能熟练背诵“漏斗转化”“用户分层”,但一被问到“…

2026/10/16 17:01:58 阅读更多 →
浙江乡镇街道GeoJSON数据校验与高德地图适配指南

浙江乡镇街道GeoJSON数据校验与高德地图适配指南

简介:本资源为浙江省全域精细化行政区划边界数据集,面向GIS开发者、地理信息分析人员、Web地图可视化工程师及城市规划研究者,解决高精度乡镇街道级空间数据缺失问题。压缩包共11个文件,含GeoJSON(zhejiang.json&#…

2026/10/16 17:01:58 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →