python – 结合pygame和扭曲
After yesterdays选择不当的问题我再试一次.
我的作品中有一个tic tac toe program纯粹是为了学习网络游戏. 我对twisted的理解是我应该让服务器类运行reactor,然后让每个玩家作为客户端连接到它(服务器是一个单独的实体).鉴于我在上一个问题中的评论,我怀疑我是以完全错误的方式解决这个问题. 我应该做什么以及我应该关注哪些教程或文档? 解决方法
将pygame与twisted相结合的难点在于谁控制了主循环.这通常需要将任何类型的UI(GTK,Tkinter等)mainloop与Twisted结合起来,PyGame也不例外.
我建议,因为网络延迟是重要的,因为twisted有一个非常好的调度框架,你是让扭曲的反应堆运行并控制主循环,然后使用LoopingCall允许你处理来自pygame的事件. 在最基本的: from twisted.internet.task import LoopingCall DESIRED_FPS = 30.0 # 30 frames per second def game_tick(): events = pygame.events.get() for event in events: # Process input events redraw() # Set up a looping call every 1/30th of a second to run your game tick tick = LoopingCall(game_tick) tick.start(1.0 / DESIRED_FPS) # Set up anything else twisted here,like listening sockets reactor.run() # Omit this if this is a tap/tac file 虽然这起初看起来很简单,但它带来了危险.如果你花费大量时间在游戏滴答中进行处理,那么你就有可能使扭曲的反应堆挨饿,使其无法处理事件.如果您需要定时事件,请不要阻止,而是使用像reactor.callLater这样的扭曲工具.您可以越多地避免阻止,您的应用程序响应越快.在一些段落中要描述的内容太多了,因为如果你从未对异步或非阻塞库进行编程,那么对于twisted的编程是一种真正需要习惯的思维模式. 有关更完整的示例,请查看“gam3”以获取用于连接扭曲的游戏库(包括用于模拟事件的世界时钟)和由其中一个扭曲的开发人员制作的示例游戏,以展示如何集成扭曲和pygame. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |