Python 通过传递坐标在棋盘上显示白色方块

Python 通过传递坐标在棋盘上显示白色方块,python,python-3.x,pygame,blit,Python,Python 3.x,Pygame,Blit,我的问题是我不能正确地blit在正确的位置放置几个方块 我已经写了一些代码来显示棋盘。这些方块不是精灵,而是pygame。表面物体 我的项目目前包含两个.py文件: display.py 协调员.py 协调器是一个函数,它返回一个包含两个元组列表的列表,一个用于偶数列,另一个用于奇数列。元组是我传递给blit方法的实际坐标 在这个阶段,我只处理白色方块 py文件是实际显示,目前还包含square类和chessboard类 这是我的coordinator.py: #返回一个包含两个元组列表的列

我的问题是我不能正确地
blit
在正确的位置放置几个方块

我已经写了一些代码来显示棋盘。这些方块不是精灵,而是pygame。表面物体

我的项目目前包含两个.py文件:

  • display.py
  • 协调员.py
协调器是一个函数,它返回一个包含两个元组列表的列表,一个用于偶数列,另一个用于奇数列。元组是我传递给blit方法的实际坐标

在这个阶段,我只处理白色方块

py文件是实际显示,目前还包含square类和chessboard类

这是我的coordinator.py:

#返回一个包含两个元组列表的列表,一个用于偶数列(白色方块),另一个用于
#一个用于奇数列(白色正方形)。
#需要实现相同的黑色方块。
def协调器():
奇数列=白色奇数列()
偶数列=白色偶数列()
列=[奇数列,偶数列]
#打印(列)
返回列
#打印('奇数列:'+str(奇数列))
#打印('偶数列:'+str(偶数列))
#返回带有坐标的列表
#对于奇数列中的白色正方形
def白色_奇数_列():
奇数_坐标=[]
对于范围(0、800、200)内的x:
y=0
对于范围(0,5)中的第一个_列:
奇数_坐标。附加((x,y))
y+=200
#打印('这应该是奇数坐标'+str(奇数_坐标))的完整列表)
返回奇数坐标
#返回带有坐标的列表
#对于偶数列中的白色正方形
def白色偶数列()
偶数_坐标=[]
对于范围(100800200)内的x:
y=100
对于范围(0,4)中的第一个_列:
偶数_坐标。追加((x,y))
y+=200
#打印('这应该是偶数坐标'+str(偶数坐标)的完整列表))
返回偶数坐标
#白色偶数列()
#白色或奇数列()
协调员()
这是我的display.py:

导入pygame
导入系统
来自协调员导入协调员
#设置显示
pygame.init()
窗口大小=(800800)
game\u window=pygame.display.set\u模式(大小=窗口大小)
pygame.display.set_标题(“我的游戏”)
#事件循环(外部)
而1:
白色列=协调器()
#打印(白色列)
奇数列=白色列[0]
#打印(奇数列、白色列)
偶数白色列=白色列[1]
#打印(偶数列)
l=len(偶数列)
#印刷品(l)
n=0
对于范围(l+1)内的n:
x=奇数列(白色列)[n]
打印(x)
#事件循环(内部)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
sys.exit()
类白色正方形:
高度=int(窗口大小[0]/8)
宽度=int(窗口大小[1]/8)
a=高度
b=宽度
白色方格=pygame.曲面((a,b))
白色方形填充((255,255,255),)
ws=WhiteSquare()
布莱克斯广场:
高度=int(窗口大小[0]/8)
宽度=int(窗口大小[1]/8)
a=高度
b=宽度
黑方=pygame.曲面((a,b))
黑色正方形填充((0,0,255),)
bs=黑方()
类棋盘:
游戏窗口。blit(W.white_square,x)#测试
游戏窗口。blit(bs.black_square,(01100))测试
cb=棋盘()
pygame.display.update()
请不要考虑以下因素:

game_window.blit(bs.black_square,(01100))
这只是为了确保当我传递一些坐标时,我实际上可以
blit
squares

困扰我的是第61行的以下内容:

game_window.blit(ws.white_square,x)
事实上,我正在尝试访问协调器返回的每个元组,代码从第21行开始:

l=len(偶数列)
#印刷品(l)
n=0
对于范围(l+1)内的n:
x=奇数列(白色列)[n]
打印(x)
我打印元组只是为了确保它们都是正确的元组。嗯,他们很好

我不明白的是,为什么在运行代码时,显示的唯一一个白色方块看起来就是(200600)那个方块

我觉得这与存储元组或更新显示有关,但目前看来,这与我无关

有人能解释一下我做错了什么吗?我可能也做了一些错误的事情,通过这种方式迭代并试图传递坐标

或者我必须使用blit,而不是blit,这样我才能传递一系列blit。如果是这样的话,我实际上无法理解如何使用这个方法,就像在堆栈溢出的示例中,它只是作为一个函数显示的那样


谢谢您的帮助。

我建议您阅读和的概念

无论如何,在类
BlackSquare
WhiteSquare
中添加一个构造函数,并将其移动到主游戏循环之前。e、 g:

class BlackSquare:
定义初始化(自):
self.height=int(窗口大小[0]/8)
self.width=int(窗口大小[1]/8)
self.black_square=pygame.Surface((self.width,self.height))
自黑方填充((0,0,255))
类白色正方形:
定义初始化(自):
self.height=int(窗口大小[0]/8)
self.width=int(窗口大小[1]/8)
self.white_square=pygame.Surface((self.width,self.height))
自白方填充((255,255,255))
将类
ChessBoard
移动到主游戏循环之前,并添加一个构造函数,其中包含白方块、黑方块和白列的参数(稍后还需要添加黑列)。
添加(
draw
),可以绘制白色正方形(
self)。