第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓這個graphics.py代碼中的動作更加流暢呢?

如何讓這個graphics.py代碼中的動作更加流暢呢?

慕容708150 2023-06-27 18:35:25
我剛剛開始使用graphics.py,并試圖制造一些移動的雨。from graphics import *import random as rrects = []colorList = [color_rgb(255, 170, 204), color_rgb(255, 187, 204), color_rgb(255, 204, 204),              color_rgb(255, 221, 204), color_rgb(255, 238, 204)]def main():    r.seed()    win = GraphWin("Random Squares", 800, 800)    win.setBackground("black")    for i in range(3000):        x1 = r.randint(0,800)        x2 = r.randint(0,10)        y1 = x1+5        y2 = x2+20        var = Rectangle(Point(x1,x2), Point(y1,y2))        rects.append(var)        rects[i].setFill(r.choice(colorList))        rects[i].draw(win)        for i in range(len(rects)):            rects[i].move(0,r.randint(10,100))            update(10000)    win.getMouse()    win.close()if __name__ == '__main__':    main()我認(rèn)為我遇到的問題是,添加每個新矩形時都會發(fā)生移動更新。誰能幫我想出更好的方法來做到這一點(diǎn)?
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個贊

我的建議是忘記autoflush并update()直到你的算法以最快的速度運(yùn)行。具體來說,您最終會得到 3000 個要更新的矩形,盡管屏幕上一次最多不會超過 15 個。你最好去掉從底部掉下來的矩形:


from random import seed, randint, choice

from graphics import *


WIDTH, HEIGHT = 800, 800


colorList = [

    color_rgb(255, 170, 204),

    color_rgb(255, 187, 204),

    color_rgb(255, 204, 204),

    color_rgb(255, 221, 204),

    color_rgb(255, 238, 204)

    ]


def main():

    seed()


    win = GraphWin("Random Squares", WIDTH, HEIGHT)

    win.setBackground("black")


    rects = []


    for _ in range(3000):

        for rect in list(rects):  # iterate over a shallow copy

            rect.move(0, randint(10, 100))


            if rect.getP1().getY() > HEIGHT:

                rect.undraw()

                rects.remove(rect)


        x1 = randint(0, WIDTH - 5)

        y1 = randint(0, 10)


        rect = Rectangle(Point(x1, y1), Point(x1 + 5, y1 + 20))

        rect.setFill(choice(colorList))

        rect.draw(win)


        rects.append(rect)


    win.getMouse()

    win.close()


if __name__ == '__main__':

    main()

現(xiàn)在我們只跟蹤大約 15 個矩形,而不是數(shù)百或數(shù)千。只有在優(yōu)化算法之后,才考慮autoflush性能update()是否不符合您的喜好:


def main():

    seed()


    win = GraphWin("Random Squares", WIDTH, HEIGHT, autoflush=False)

    win.setBackground("black")


    rects = []


    for _ in range(3000):

        for rect in list(rects):  # iterate over a shallow copy

            rect.move(0, randint(10, 100))


            if rect.getP1().getY() > HEIGHT:

                rect.undraw()

                rects.remove(rect)


        x1 = randint(0, WIDTH - 5)

        y1 = randint(0, 10)


        rect = Rectangle(Point(x1, y1), Point(x1 + 5, y1 + 20))

        rect.setFill(choice(colorList))

        rect.draw(win)


        update()


        rects.append(rect)


    win.getMouse()

    win.close()


查看完整回答
反對 回復(fù) 2023-06-27
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號