Python实现10x10蛇梯棋Alternating Direction Loop布局方法
10*10蛇梯棋蛇形交替布局实现
不需要编写多组循环暴力实现,仅用Python基础单循环即可完成传统交替方向的棋盘排布。
原有代码的问题是所有行固定从最左侧x=0位置开始从左到右排列,没有对需要反向的行做列坐标翻转,因此只能得到普通逐行左对齐的网格效果。
核心实现逻辑
蛇形排布的核心判断逻辑非常简单:
- 提前计算单个方格的宽、高,无需放在循环内重复运算
- 遍历0-99共100个方格序号,对每个序号计算其所属行号、默认从左到右规则下的列号
- 判断当前行是否需要反向:奇数行(行号从0开始计数)将列号做翻转处理,即原列0对应列9、原列1对应列8,以此类推实现从右到左排布
- 用翻转后的实际列号计算x坐标,y坐标计算逻辑和原有逻辑保持一致
修正后可直接使用的代码
w = WIDTH / 10 h = HEIGHT / 10 boardPlaces = [] for i in range(100): row = i // 10 col = i % 10 # 奇数行做反向排列 if row % 2 == 1: actual_col = 9 - col else: actual_col = col x = actual_col * w y = row * h boardPlaces.append(Rect((x, y), (w, h)))
传统棋盘编号适配
常规蛇梯棋的编号从最底部行开始:最底部行1-10从左到右,向上一行11-20从右到左,直到最顶部行91-100从左到右。如果需要匹配这个规则,只需要把行号计算逻辑做倒序处理即可,替换行计算语句为:
row = 9 - (i // 10)
其余逻辑不需要做任何改动。
内容的提问来源于stack exchange,提问作者Cheesy Pig 88
相关产品推荐
相关产品推荐

