如何让对象在 Pygame 中到达屏幕末尾?
How to make objects go to the end of the screen in Pygame?
我对 Python 和编程还很陌生 overall.I 正在 Pygame 上制作 Pong 游戏,但在屏幕上出现乒乓球(横条)时遇到问题。这是代码:
if Move_Down:
pong1_posY += 10
if Move_Up:
pong1_posY -= 10
if Move_Down2:
pong2_posY += 10
if Move_Up2:
pong2_posY -= 10
if pong1_posY + pong_size[1] >= ScreenH:
pong1_posY -= 10
elif pong1_posY <= 0:
pong1_posY += 10
if pong2_posY + pong_size[1] >= ScreenH:
pong2_posY -= 10
elif pong2_posY <= 0:
pong2_posY += 10
请注意,每个带有“2”的变量都指的是正确的乒乓球。如果什么都没有指左边的乒乓球
代码运行良好。乒乓球没有离开屏幕,但也没有到达屏幕的尽头。
这就是酒吧的极限了。为什么会这样,我怎样才能让它们一直到屏幕的顶部或底部?
我在 space 入侵者类型的游戏中遇到了类似的问题。似乎您正在跳过屏幕边缘的像素,因为您一次将桨的位置更改 10 个像素。尝试:
if pong1_posY + pong_size[1] >= ScreenH:
pong1_posY = ScreenH - pong_size[1]
elif pong1_posY <= 0:
pong1_posY = 0
if pong2_posY + pong_size[1] >= ScreenH:
pong2_posY = ScreenH - pong_size[1]
elif pong2_posY <= 0:
pong2_posY = 0
这是假设桨的坐标是桨图像的左上角
def clamp(value, vmin, vmax):
return max(vmin, min(vmax, value))
movePong(posY, moveDown, moveUp):
if moveDown:
posY += 10
if moveUp:
posY -= 10
return posY
pong1_posY = movePong(pong1_posY, Move_Down, Move_Up)
pong1_posY = clamp(pong1_posY, 0, ScreenH-pong_size[1])
pong2_posY = movePong(pong2_posY, Move_Down2, Move_Up2)
pong2_posY = clamp(pong2_posY, 0, ScreenH-pong_size[1])
我对 Python 和编程还很陌生 overall.I 正在 Pygame 上制作 Pong 游戏,但在屏幕上出现乒乓球(横条)时遇到问题。这是代码:
if Move_Down:
pong1_posY += 10
if Move_Up:
pong1_posY -= 10
if Move_Down2:
pong2_posY += 10
if Move_Up2:
pong2_posY -= 10
if pong1_posY + pong_size[1] >= ScreenH:
pong1_posY -= 10
elif pong1_posY <= 0:
pong1_posY += 10
if pong2_posY + pong_size[1] >= ScreenH:
pong2_posY -= 10
elif pong2_posY <= 0:
pong2_posY += 10
请注意,每个带有“2”的变量都指的是正确的乒乓球。如果什么都没有指左边的乒乓球
代码运行良好。乒乓球没有离开屏幕,但也没有到达屏幕的尽头。
这就是酒吧的极限了。为什么会这样,我怎样才能让它们一直到屏幕的顶部或底部?
我在 space 入侵者类型的游戏中遇到了类似的问题。似乎您正在跳过屏幕边缘的像素,因为您一次将桨的位置更改 10 个像素。尝试:
if pong1_posY + pong_size[1] >= ScreenH:
pong1_posY = ScreenH - pong_size[1]
elif pong1_posY <= 0:
pong1_posY = 0
if pong2_posY + pong_size[1] >= ScreenH:
pong2_posY = ScreenH - pong_size[1]
elif pong2_posY <= 0:
pong2_posY = 0
这是假设桨的坐标是桨图像的左上角
def clamp(value, vmin, vmax):
return max(vmin, min(vmax, value))
movePong(posY, moveDown, moveUp):
if moveDown:
posY += 10
if moveUp:
posY -= 10
return posY
pong1_posY = movePong(pong1_posY, Move_Down, Move_Up)
pong1_posY = clamp(pong1_posY, 0, ScreenH-pong_size[1])
pong2_posY = movePong(pong2_posY, Move_Down2, Move_Up2)
pong2_posY = clamp(pong2_posY, 0, ScreenH-pong_size[1])