python - 这个算法是如何让pygame中的角色跳跃的?
问题描述
我一直在看 Pygame 教程来学习这个模块,它来到了教练向你展示如何让你的角色跳跃的部分。但是,我发现无法理解他们写下的代码,而且他们也没有很好地解释它。
任何人都可以为我分解下面的代码,以便我确切了解正在发生的事情吗?有没有更简单的方法来编码一个字符的跳转?请记住,我已经将代码设置为按空格键激活此代码的位置。
Isjump = False
Jumpcount = 10
#code for spacebar activation here, turns Isjump to True#
if Jumpcount >= -10:
Neg = 1
if Jumpcount < 0:
Neg = -1
y -= (Jumpcount ** 2) * 0.5 * Neg
Jumpcount -= 1
else:
Isjump = False
Jumpcount = 10
解决方案
开始时Jumpcount
设置为 10。
Jumpcount = 10
跳转一直运行到Jumpcount
小于或等于 -10。因此,一次跳转恰好需要 21 个周期:
if Jumpcount >= -10:
Neg
是 的“符号” Jumpcount
。如果Jumpcount
大于或等于 0,则为 1,否则为 -1:
Neg = 1
if Jumpcount < 0:
Neg = -1
在每一帧中,玩家的y
坐标由二次函数改变(Jumpcount ** 2) * 0.5
。
y -= (Jumpcount ** 2) * 0.5 * Neg
由于该项乘以Neg
,所以Jumpcount
大于 0 为正,为 0
为0 Jumpcount
,否则小于 0 。查看21 个周期中的值:Jumpcount
y
(Jumpcount ** 2) * 0.5 * Neg
50.0, 40.5, 32.0, 24.5, 18.0, 12.5, 8.0, 4.5, 2.0, 0.5, 0.0,
-0.5, -2.0, -4.5, -8.0, -12.5, -18.0, -24.5, -32.0, -40.5, -50.0
一开始,这些值是正数,玩家会跳跃。最后值是负的,玩家摔倒了。
这些值的总和为 0。因此y
- 坐标在末尾与开头具有相同的值。
另请参阅如何在 Pygame 中让角色跳跃?.
推荐阅读
- css - 在自动行中居中网格项目
- java - 在Java中的方形矩阵的上半部分对角循环?
- css - IOS / Safari:CSS 内容重叠问题
- numbers - 如何在 Brainfuck 中打印输入的 ascii 值?
- python - 对一个通道图像使用不同的颜色图 - cv2.imshow()
- azure-devops - Power Automate - Azure DevOps 集成 - 在项目待办事项和区域路径待办事项中创建工作项
- javascript - 如何通过浏览器上的这个发布请求正确发送表单数据?
- postgresql - Postgres RDS 访问在 Mac 上工作,而不是 Win 10
- vb.net - 定时器不停止 VB.NET
- log4j - 模拟静态方法时,突变测试覆盖失败