我是pygame的新手,我试图使游戏在每次单击鼠标时都绘制一个新矩形(而不会删除前一个),而我只是想不出该怎么做...:\
我以前曾经用pygame制作过一个井字游戏,在那里我没有遇到这个问题,而且好像我所做的几乎所有事情都差不多...
因此,我们将不胜感激任何帮助和/或解释。
fscanf(input, " (%d, %d)", &temp1, &temp2) == 2
如果您要测试,则是settings.py文件。
$ ./bin/ptrtoarraystruct < dat/2x8rand.txt
return: 0
content:
17987 1576
12911 4488
30688 5875
25617 16643
8999 26249
29270 31857
8954 2094
21390 27676
答案 0 :(得分:1)
在playing_draw中,当用白色填充窗口时,将删除所有先前的矩形。然后,您仅绘制最近选择的矩形。
要绘制之前选择的所有矩形,您需要跟踪所有矩形。
将self.selected初始化为一个集合。列表也足够,但最终可能会重复。
def __init__(self):
pygame.init()
self.window = pygame.display.set_mode((WIDTH, HEIGHT))
self.running = True
self.grid = testboard
self.selected = set()
self.mousePos = None
self.state = "playing"
self.playingButtons = []
self.endButtons = []
self.loadButtons()
然后,只要检测到点击,就将选择添加到self.selected
def playing_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.running = False
if event.type == pygame.MOUSEBUTTONDOWN:
selected = self.mouseOnGrid()
if selected:
self.selected.add(selected)
else:
print("not on board")
self.selected = None
最后,使用循环在playing_draw中绘制所有选定的矩形。
def playing_draw(self):
self.window.fill(WHITE)
for selected in self.selected:
self.drawSelection(self.window, selected)
self.drawGrid(self.window)
pygame.display.update()