用pygame在python上进行蒙特卡洛,但最终窗口冻结。为什么呢?[重复]


这是代码,我在Atom上工作。我使用pygame很长时间了,但很少发生这种情况。我一直不知道问题出在哪里,但我从来不需要知道,直到现在。

import pygame
from random import randint as rnd
from colorama import Cursor
import math
import os
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (600,90)


pygame.init()
xsize, ysize = 700, 700
screen = pygame.display.set_mode((xsize, ysize))
screen.fill((0, 0, 0))

def dis(p1, a1):
    return math.sqrt((p1[0] - a1[0])**2 + (p1[1] - a1[1])**2)

inner = 0
tot = 0
pygame.draw.circle(screen, (255, 255, 255), (350, 350), 350, 2)

while True:
    pos = (rnd(0, xsize), rnd(0, ysize))
    if dis((350, 350), pos) < 350:
        color = (50, 255, 50)
        inner += 1
    else:
        color = (50, 50, 250)
    tot += 1
    pygame.draw.circle(screen, color, pos, 2)
    print(" pi = " + str(4 * inner / tot) + "\nnº dots: " + str(tot), Cursor.UP(2))
    pygame.display.flip()

解决方案:

窗口冻结,因为你没有处理事件。你必须通过以下两种方式处理事件 pygame.event.pump()pygame.event.get(),以保持窗口的响应。

例如,添加一个事件循环。

run = True
while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # [...]

给TA打赏
共{{data.count}}人
人已打赏
未分类

点击一个州,就可以在牛郎星图中看到该州的郡县。

2022-9-9 4:02:21

未分类

Java Android,循环浏览所有的获取者

2022-9-9 4:13:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索