第一次尝试用python写游戏遇到的一些问题和思考

本文探讨了使用Pygame进行游戏开发时,窗口刷新机制的工作原理。通过对比两种不同的代码实现,阐述了pygame.display.flip()与不断调用pygame.display.set_mode()的区别,前者能有效更新并展示窗口内容,而后者则会导致内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跟着《python从入门到实践》已经有一段时间了,终于到了刺激的游戏制作环节,但是教材里的代码进度比较快,所有的代码都要慢慢熟悉

import sys
import pygame
def run_practice():
    pygame.init()
    screen = pygame.display.set_mode((1200,800))
    pygame.display.set_caption("practice project")
    while True:
        pygame.display.flip()
run_practice()

这段代码里前面几段都没多大问题,写多了大概也就也就理解了,直到

    while True:
        pygame.display.flip()

教材里说是会把之前绘制的窗口显示出来,这个时候我就挺纳闷,那为什么不把制作窗口放到循环里,就是把上两行代码换成

while True:
        screen = pygame.display.setmode((1200,800))

利用主循环就会不停地绘制出我想要的尺寸的窗口。
事实证明,我这样写同样能够显示窗口,可是过了大概三分钟我没有关闭代码的运行过程电脑就说python执行的程序正在占用大量的内存。

原来

 while True:
        pygame.display.flip()

这个代码的准确作用是擦去旧的窗口再重新显示新的窗口,就是屏幕显示的永远只有一个窗口,而

while True:
        screen = pygame.display.setmode((1200,800))

会不同绘制出新的窗口,旧的窗口电脑还依旧保存着,所以运行的时候会出现内存不足的状况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值