pygame怎样做页面切换功能,思路方法是什么
Admin 2022-07-30 群英技术资讯 820 次浏览
import sys, pygame import os import random pygame.init() # 初始化pygame类 screen = pygame.display.set_mode((600, 600)) # 设置窗口大小 pygame.display.set_caption('美丽的屏保') # 设置窗口标题 tick = pygame.time.Clock() fps = 10 # 设置刷新率,数字越大刷新率越高 fcclock = pygame.time.Clock() bglist = [] flag = 0 runimage = None nextimage = None def init_image(): path = './image/' files = [] dirs = os.listdir(path) for diretion in dirs: files.append(path + diretion) for file in files: picture = pygame.transform.scale(pygame.image.load(file), (600, 600)) dSurface = picture # dSurface = pygame.image.load(file).convert() bglist.append(dSurface) def reset(): global flag,runimage,nextimage flag = 0 if nextimage is None: nextimage = random.choice(bglist) if runimage is None: runimage = random.choice(bglist) else: runimage = nextimage nextimage = random.choice(bglist) def run(): global flag,runimage reset() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.K_F1: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() if event.key == pygame.K_SPACE: reset() if event.type == pygame.MOUSEBUTTONDOWN: reset() screen.fill((255, 255, 255)) # 设置背景为白色 screen.blit(nextimage, (0, 0)) screen.blit(runimage, (0, 0)) fcclock.tick(fps) pygame.display.flip() # 刷新窗口 # time.sleep(10) if __name__ == '__main__': init_image() run()
实际就是使用了runimage和nextimage保存两个图片,然后先黏贴nextimage,再黏贴runimage,让runimage显示在最前端。
并通过监听鼠标和键盘操作,每点击一次,切换一次页面。
并调用reset函数
def reset(): global flag,runimage,nextimage flag = 0 if nextimage is None: nextimage = random.choice(bglist) if runimage is None: runimage = random.choice(bglist) else: runimage = nextimage nextimage = random.choice(bglist)
import sys, pygame import os import random pygame.init() # 初始化pygame类 WIDTH = 600 HEIGHT = 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口大小 pygame.display.set_caption('美丽的屏保') # 设置窗口标题 tick = pygame.time.Clock() fps = 60 # 设置刷新率,数字越大刷新率越高 fcclock = pygame.time.Clock() bglist = [] flag = 0 runimage = None nextimage = None flag = False # FALSE没有切屏 TRUE 切屏 flag2 = False i = 0 j = 0 step = 10 def init_image(): path = './image/' files = [] dirs = os.listdir(path) for diretion in dirs: files.append(path + diretion) for file in files: picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT)) dSurface = picture # dSurface = pygame.image.load(file).convert() bglist.append(dSurface) def reset(): global flag,runimage,nextimage,flag2,i,j flag = False # FALSE没有切屏 TRUE 切屏 flag2 = False i = 0 j = 0 if nextimage is None: nextimage = random.choice(bglist) if runimage is None: runimage = random.choice(bglist) else: runimage = nextimage nextimage = random.choice(bglist) def run(): global flag,runimage,flag2,nextimage,i,j reset() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.K_F1: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() if event.key == pygame.K_SPACE: if flag is False:# FALSE没有切屏 TRUE 切屏 flag = True flag2 = False # if event.type == pygame.MOUSEBUTTONDOWN: # reset() screen.fill((255, 255, 255)) # 设置背景为白色 if flag: screen.blit(nextimage, (0, 0)) screen.blit(runimage, (i, j)) i -= step if i <= -WIDTH: flag2 = True else: screen.blit(nextimage, (0, 0)) screen.blit(runimage, (0, 0)) if flag2: reset() fcclock.tick(fps) pygame.display.flip() # 刷新窗口 # time.sleep(10) if __name__ == '__main__': init_image() run()
实现上下左右效果
import sys, pygame import os import random pygame.init() # 初始化pygame类 WIDTH = 600 HEIGHT = 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口大小 pygame.display.set_caption('美丽的屏保') # 设置窗口标题 tick = pygame.time.Clock() fps = 60 # 设置刷新率,数字越大刷新率越高 fcclock = pygame.time.Clock() bglist = [] flag = 0 runimage = None nextimage = None flag = False # FALSE没有切屏 TRUE 切屏 flag2 = False i = 0 j = 0 step = 10 choose = 0 def init_image(): path = './image/' files = [] dirs = os.listdir(path) for diretion in dirs: files.append(path + diretion) for file in files: picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT)) dSurface = picture # dSurface = pygame.image.load(file).convert() bglist.append(dSurface) def reset(): global flag,runimage,nextimage,flag2,i,j,choose flag = False # FALSE没有切屏 TRUE 切屏 flag2 = False i = 0 j = 0 choose = random.randint(0,3) if nextimage is None: nextimage = random.choice(bglist) if runimage is None: runimage = random.choice(bglist) else: runimage = nextimage nextimage = random.choice(bglist) def run(): global flag,runimage,flag2,nextimage,i,j,choose reset() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.K_F1: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() if event.key == pygame.K_SPACE: if flag is False:# FALSE没有切屏 TRUE 切屏 flag = True flag2 = False screen.fill((255, 255, 255)) # 设置背景为白色 if flag: screen.blit(nextimage, (0,0)) print(i+WIDTH,j+HEIGHT) screen.blit(runimage, (i, j)) if choose==0: i -= step if i <= -WIDTH: flag2 = True elif choose==1: i += step if i >= WIDTH: flag2 = True elif choose==2: j -= step if j <= -HEIGHT: flag2 = True elif choose==3: j += step if j >= HEIGHT: flag2 = True else: screen.blit(nextimage, (0, 0)) screen.blit(runimage, (0, 0)) if flag2: reset() # print(choose) fcclock.tick(fps) pygame.display.flip() # 刷新窗口 # time.sleep(10) if __name__ == '__main__': init_image() run()
if flag: if choose==0: i -= step screen.blit(nextimage, (i+WIDTH, 0)) if i <= -WIDTH: flag2 = True elif choose==1: screen.blit(nextimage, (i-WIDTH, 0)) i += step if i >= WIDTH: flag2 = True elif choose==2: screen.blit(nextimage, (0, j+HEIGHT)) j -= step if j <= -HEIGHT: flag2 = True elif choose==3: screen.blit(nextimage, (0, j-HEIGHT)) j += step if j >= HEIGHT: flag2 = True screen.blit(runimage, (i, j)) else: screen.blit(nextimage, (0, 0)) screen.blit(runimage, (0, 0))
import sys, pygame import os import random pygame.init() # 初始化pygame类 WIDTH = 600 HEIGHT = 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口大小 pygame.display.set_caption('美丽的屏保') # 设置窗口标题 tick = pygame.time.Clock() fps = 60 # 设置刷新率,数字越大刷新率越高 fcclock = pygame.time.Clock() bglist = [] flag = 0 runimage = None nextimage = None flag = False # FALSE没有切屏 TRUE 切屏 flag2 = False i = 0 j = 0 step = 10 choose = 0 def init_image(): path = './image/' files = [] dirs = os.listdir(path) for diretion in dirs: files.append(path + diretion) for file in files: picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT)) dSurface = picture # dSurface = pygame.image.load(file).convert() bglist.append(dSurface) def reset(): global flag,runimage,nextimage,flag2,i,j,choose flag = False # FALSE没有切屏 TRUE 切屏 flag2 = False i = 0 j = 0 choose = random.randint(0,3) if nextimage is None: nextimage = random.choice(bglist) if runimage is None: runimage = random.choice(bglist) else: runimage = nextimage nextimage = random.choice(bglist) def run(): global flag,runimage,flag2,nextimage,i,j,choose reset() while True: for event in pygame.event.get(): if event.type == pygame.QUIT or event.type == pygame.K_F1: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() if event.key == pygame.K_SPACE: if flag is False:# FALSE没有切屏 TRUE 切屏 flag = True flag2 = False screen.fill((255, 255, 255)) # 设置背景为白色 if flag: if choose==0: i -= step screen.blit(nextimage, (i+WIDTH, 0)) if i <= -WIDTH: flag2 = True elif choose==1: screen.blit(nextimage, (i-WIDTH, 0)) i += step if i >= WIDTH: flag2 = True elif choose==2: screen.blit(nextimage, (0, j+HEIGHT)) j -= step if j <= -HEIGHT: flag2 = True elif choose==3: screen.blit(nextimage, (0, j-HEIGHT)) j += step if j >= HEIGHT: flag2 = True screen.blit(runimage, (i, j)) else: screen.blit(nextimage, (0, 0)) screen.blit(runimage, (0, 0)) if flag2: reset() # print(choose) fcclock.tick(fps) pygame.display.flip() # 刷新窗口 # time.sleep(10) if __name__ == '__main__': init_image() run()
Ok,V1和V2版本,两个版本,任君选择,比较简单,大家将就着看看啊。后面会有修订和更多有趣的案例,欢迎关注,感谢支持!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家介绍的是关于Python内置函数zip的使用。对于zip()函数,是用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个原则,再返回由这些元组组成的列表。那么具体Python内置函数zip如何使用呢?下面一起来看看。
这篇文章主要介绍了Python打印数据类型的全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
天我们来了解一下关于pandas数值排序的内容,对于筛选和排序是Excel中使用频率最多的功能,下面我们就来看看pandas怎样实现一列和多列的数值排序,感兴趣的朋友就继续往下看吧。
这篇文章主要介绍了Python迭代器的实现原理,文章基于python的相关资料展开对Python迭代器的详细介绍,需要的小伙伴可以参考一下
这篇文章主要介绍了Python异步处理返回进度——使用Flask实现进度条,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008