设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Pygame 第5课】 游戏中的运动

[复制链接]

1

主题

0

好友

145

积分

注册会员

Rank: 2

楼主
发表于 2017-3-5 17:13:16 |显示全部楼层
关于文件路径可以直接用 斜杠/ 啊,斜杠/不需要转义,而反斜杠\是需要转义的
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

沙发
发表于 2017-3-5 18:06:46 |显示全部楼层
本帖最后由 brahmagupta 于 2017-3-5 18:19 编辑

crossin老师:
我想问几个问题

1.如何实现“异步”多子弹?
我的想法是在循环中添加一个MouseButtonDown的Event的判断,来让玩家在每次按下鼠标左键的时候都发射一枚子弹。我想到的可以实现的方法只有 提高“载弹量” 。 就是在代码中记录N颗子弹的位置(比如说N=10,就是十颗子弹)然后在检测到“鼠标按下”操作的时候依次绘制这N颗子弹。(我觉得这里子弹可以用之前python基础课中讲的 class 来构造)
但是我觉得这个方法代码上有些臃肿,而且 载弹量必须要事先确定好。 我希望:能实现,每次按下鼠标左键的时候都发射一枚子弹,而且总“载弹量”不确定(示例代码中的载弹量为1,只有在这颗子弹飞出边界的时候才会再次发射。。所以鼠标越靠近上边界射速越快。。。)。就是说我点几次鼠标就发射几颗(可以很多很多,而不是一个确定的数值N),而且这些子弹可以说 可以互不干扰地 “并行” 飞行。(不知道我说清楚没。。)
(就好像C语言中,如果我想要接收一段文字,但不确定他的长度,有没有一种类型的 变量 x或者方法,我可以不用指定这个变量 x的空间大小---例如x[100]这样,给个100单位长度的空间。而是 它接受了多少字符就可以开多少空间。   这种好像在C里没有)

优化问题:
2.如何任意 控制帧率/提高 帧率|画面刷新频率
我好像在之前的教程贴里看到过有人也提出过这个问题。。当时没太在意,现在又找不到了。。。

3.如何解决飞机卡顿问题
我发现,在我仅在您的代码基础上添加了 MouseButtonDown事件来发射子弹 的功能时,在玩的时候有个不好的体验:
在按下鼠标之后的一小段时间(从代码上看应该是 子弹从发射到飞出边界的这段时间),飞机仍然停在按下鼠标的那个位置。。也就是说这段时间
(if event.type==pygame.MOUSEBUTTONDOWN:    绘制飞行的子弹-直到飞出边界为止)飞机是卡住了一样。 我不知道这个怎么解决。
(第三个问题好像和前两个问题有些重复的地方: 不知道怎么样 在代码已经执行到一个if代码块中 的时候,还可以进行这同一个if判断?就好像 我已经 在一个叫做if的坑里了,但是我怎么样在  我还在坑里的时候再跳进来。。。也许这是一个 伪需求。。。)
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

板凳
发表于 2017-3-5 18:15:20 |显示全部楼层
因为我是学硬件的,学过verilog这种硬件语言。这种硬件语言可以实现 “时序逻辑”,就是以硬件上的一个元件(比如石英、振荡器啥的)提供的 ”频率“---即”时间“,作为执行代码的依据---有些代码块可以在同一个时间点下一起同时执行。而不是像解释器一样一行一行执行。
不知道有没有高级编程语言有类似的功能啊
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

地板
发表于 2017-3-5 18:17:44 |显示全部楼层
本帖最后由 brahmagupta 于 2017-3-5 18:27 编辑

貌似可以将 ”MouseButtonDown的判断“ 和  ”绘制子弹“ 分开来进行?
并且我又有一个想法是引入 数字逻辑 里面的 ”有限状态机“0.0 来用 状态转移的 思路来解决 "判断和 绘制子弹"的问题。。(然而还没有想清楚。)

回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

5#
发表于 2017-3-5 18:29:54 |显示全部楼层
我直接去 编程擂台 开一个帖子跟大家慢慢讨论好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 00:46 , Processed in 0.018256 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部