我想用回溯模拟n皇后问题。我每次调用这个drawboard()函数时都使用一个列表作为参数,如下所示
def show_columns(x): print "columns:", x if len(x)!=0: draw_board(x)
所以每次它都显示在单独的窗口中。下一个窗口只有在遮盖第一个窗口后才显示,以此类推...
我如何在一个窗口中制作这些东西,或者如何在特定的时间间隔后自动关闭这些窗口,以便这些窗口一个接一个地显示
我绘制棋盘的函数如下
def draw_board(the_board): pygame.init() colors = [(255,178,102), (255,255,255)] surface_sz = 480 sq_sz = surface_sz // n surface_sz = n * sq_sz surface = pygame.display.set_mode((surface_sz, surface_sz)) ball = pygame.image.load("queen.png") while True: ev = pygame.event.poll() if ev.type == pygame.QUIT: break; for row in range(n): c_indx = row % 2 for col in range(n): the_square = (col*sq_sz, row*sq_sz, sq_sz, sq_sz) surface.fill(colors[c_indx], the_square) c_indx = (c_indx + 1) % 2 for (col, row) in enumerate(the_board): surface.blit(ball, (col*sq_sz+ball_offset,row*sq_sz+ball_offset)) pygame.display.flip() pygame.quit()
您可能需要稍微更改一下程序的原型,以使其与持久化UI一起工作。与其让模拟代码调用UI来更新,不如让它以相反的方式工作,UI从SIM卡请求新的板状态。
您还没有显示任何sim代码,所以我不确定它的实现是什么,但也许您可以将它重构为一个生成器,一个接一个地产生值?
然后将UI设置为:
def app():
pygame.init()
colors = [(255,178,102), (255,255,255)]
surface_sz = 480
sq_sz = surface_sz // n
surface_sz = n * sq_sz
surface = pygame.display.set_mode((surface_sz, surface_sz))
ball = pygame.image.load("queen.png")
the_sim = sim_generator() # start the simulation
for the_board in the_sim: # loop over the values yielded from the simulation
ev = pygame.event.poll()
if ev.type == pygame.QUIT:
break;
for row in range(n):
c_indx = row % 2
for col in range(n):
the_square = (col*sq_sz, row*sq_sz, sq_sz, sq_sz)
surface.fill(colors[c_indx], the_square)
c_indx = (c_indx + 1) % 2
for (col, row) in enumerate(the_board):
surface.blit(ball,
(col*sq_sz+ball_offset,row*sq_sz+ball_offset))
pygame.display.flip() # you might want to add a frame delay
pygame.quit()
一旦模拟产生最后一个值,这将立即退出。如果希望最终结果在关闭之前一直在屏幕上,可以添加一个额外的循环,该循环只检查窗口是否关闭,而不重新绘制任何内容。
我正在为平台游戏做教程,但我的Pygame窗口显示一个黑屏。 我不知道怎么解决这个问题。 我尝试再次关闭和打开Visual Studio Code,但没有任何结果。
我一直在尝试使用pygame来显示游戏场景,但它似乎已经停止了对我的工作:在pygame关闭之前,它只在我创建的任何屏幕上显示一个灰色框,然后屏幕上应该显示的内容在退出之前短暂闪烁。例如,下面的最小代码显示灰色屏幕5秒钟,然后快速闪烁黑色并退出: 这似乎是屏幕显示的问题,而不是pygame本身的问题,因为我可以使用pg.image制作曲面并将其保存到图像文件中。save(),它们在那里看起来很好。
当我运行我的pyplay程序的游戏窗口显示没有反应,我也写了退出功能,但我不知道为什么它再次广告再次显示没有反应,我的笔记本电脑是Windows 8和32位
这是我的代码,请记住,我在几天前学习了python,所以我的代码可能制作不正确,等等。我正在尝试制作一个窗口,该窗口将显示一些文本(测试版),并将显示两个小矩形,我想成为按钮。
这是完整的代码,这是一个滚动程序的原型,它被打破了(尽管如此),但是每当我试图点击它时,我都会看到没有响应的窗口
问题内容: 我正在遵循上的示例,但无法在出现的窗口中成功显示字符串。尺寸和标题设置正确,并显示窗口。如果我在控制台上使用paint()方法输出一个字符串,我会看到它实际上被调用了几次,但是该字符串没有出现在我的应用程序窗口中。我看不到与示例有何不同;我实际上少了一些代码(他们添加了鼠标侦听器和按键侦听器):\ 问题答案: 您遇到的问题是您直接在框架顶部绘画。框架还包括框架边框,因此位置0、0(或者