加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 结合pygame和扭曲

发布时间:2020-12-20 12:19:11 所属栏目:Python 来源:网络整理
导读:After yesterdays选择不当的问题我再试一次. 我的作品中有一个tic tac toe program纯粹是为了学习网络游戏. 我对twisted的理解是我应该让服务器类运行reactor,然后让每个玩家作为客户端连接到它(服务器是一个单独的实体).鉴于我在上一个问题中的评论,我怀疑
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读