You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Pyglet开发Tic-tac-toe井字棋网格GUI异常求助

问题原因

  • 你的窗口大小仅设置为500*500,但绘制线条时用了最大600的坐标值,超出窗口显示范围的线条会被截断,自然看不到完整的3*3井字棋网格
  • Pyglet中图形的opacity属性取值范围是0~255,你设置的400属于非法值,可能导致渲染异常
  • 井字棋只需要2条竖线和2条横线就能分割出3*3的格子,你的循环逻辑生成了过多超出需求的线条

如果要保留你原本100像素间隔的画线逻辑,直接把窗口大小修改为600*600,同时把opacity改为255也可以正常显示网格。

修正后可正常运行的代码

import pyglet
from pyglet import shapes

title = "Tic-tac-toe"
window = pyglet.window.Window(500, 500, title)
batch = pyglet.graphics.Batch()

def drawBoard(shape_list, batch=None):
    # 500宽度的窗口,画2条竖线分割为三等分,每份约166像素
    for i in range(166, 500, 166):
        linex = shapes.Line(i, 0, i, 500, width=3, color=(0, 230, 0), batch=batch)
        linex.opacity = 255
        shape_list.append(linex)
        liney = shapes.Line(0, i, 500, i, width=3, color=(0, 230, 0), batch=batch)
        liney.opacity = 255
        shape_list.append(liney)

shape_list = []
drawBoard(shape_list, batch=batch)

@window.event
def on_draw():
    window.clear()
    batch.draw()

pyglet.app.run()

内容的提问来源于stack exchange,提问作者DSG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:24:02