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
相关产品推荐
相关产品推荐

