How to simulate Jumping in Pygame for this particular code(如何为此特定代码在 Pygame 中模拟跳跃)
问题描述
我一直在尝试模拟 Pygame 代码中的跳转,但未能成功实现.有一个尺寸为 10 x 10 的矩形,我希望该矩形在按下 SPACE 时跳转.我暂时保持这段代码不受重力影响.
I have been trying to simulate the jump in the Pygame code but haven't been able to successfully implement it. There is a rectangle of dimension 10 by 10 and I want that rectangle to jump when SPACE is press. I am keeping this code independent of gravity for now.
import pygame
pygame.init()
ScreenLenX = 1000
ScreenLenY = 500
win = pygame.display.set_mode((ScreenLenX, ScreenLenY))
pygame.display.set_caption("aman")
run = True
Xcord = 100
Ycord = 100
length = 10
height = 10
vel = 2
xmove = 1
ymove = 1
while run:
#pygame.time.delay(1)
for event in pygame.event.get():
print(event)
if event.type ==pygame.QUIT:
run = False
if keys[pygame.K_RIGHT] and Xcord <= ScreenLenX-length:
Xcord += vel
if keys[pygame.K_LEFT] and Xcord >= 0:
Xcord -= vel
if keys[pygame.K_UP] and Ycord >= 0:
Ycord -= vel
if keys[pygame.K_DOWN] and Ycord <= ScreenLenY - height:
Ycord += vel
win.fill((0, 0, 0))
pygame.draw.rect(win, (255, 0, 0), (Xcord, Ycord, length, height))
keys = pygame.key.get_pressed()
pygame.display.update()
pygame.quit()
推荐答案
在主循环之前添加一个变量jump并将其初始化为0:
Add a variable jump and initialize it by 0, before the main loop:
jump = 0
while run:
# [...]
只有在允许玩家跳跃并停留在地面上时,才对 pygame.K_SPACE 做出反应.如果满足,则将 jump 设置为所需的跳跃"高度:
Only react on pygame.K_SPACE, if player is allowed to jump and stays on the ground. If this is fulfilled then set jump to the desired "jump" height:
if keys[pygame.K_SPACE] and Ycord == ScreenLenY - height:
jump = 300
只要 jump 大于 0,在主循环中向上移动玩家并减少 jump 相同的量.
如果玩家没有跳到黎明,直到他落地:
As long as jump is greater than 0, move the player upwards and decease jump by the same amount, in the main loop.
If the player is not jumping that let him fall dawn, till he reaches the ground:
if jump > 0:
Ycord -= vel
jump -= vel
elif Ycord < ScreenLenY - height:
Ycord += 1
查看演示,我将建议应用于您的代码:
See the demo, where I applied the suggestions to your code:
import pygame
pygame.init()
ScreenLenX, ScreenLenY = (1000, 500)
win = pygame.display.set_mode((ScreenLenX, ScreenLenY))
pygame.display.set_caption("aman")
Xcord, Ycord = (100, 100)
length, height = (10, 10)
xmove, ymove = (1, 1)
vel = 2
jump = 0
run = True
clock = pygame.time.Clock()
while run:
#clock.tick(60)
for event in pygame.event.get():
print(event)
if event.type ==pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT] and Xcord <= ScreenLenX-length:
Xcord += vel
if keys[pygame.K_LEFT] and Xcord >= 0:
Xcord -= vel
if keys[pygame.K_SPACE] and Ycord == ScreenLenY - height:
jump = 300
if jump > 0:
Ycord -= vel
jump -= vel
elif Ycord < ScreenLenY - height:
Ycord += 1
win.fill((0, 0, 0))
pygame.draw.rect(win, (255, 0, 0), (Xcord, Ycord, length, height))
pygame.display.update()
这篇关于如何为此特定代码在 Pygame 中模拟跳跃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何为此特定代码在 Pygame 中模拟跳跃
基础教程推荐
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
