python pygame中的无效冲突检测 导入pygame pygame.init() pygame.display.set_标题(“…SHON…PONG…”) icon=pygame.image.load('icon.png')) pygame.display.set_图标(图标) FPS=50 fpscall=pygame.time.Clock() 屏幕H=500 屏幕W=300 screen=pygame.display.set_模式((屏幕H,屏幕W)) 黑色=((0,0,0)) palle1=pygame.image.load('palle1.png') palle1_rect=palle1.get_rect() 桨叶1_y=100 桨叶1_x=10 palle2=pygame.image.load('palle2.png') paile2_rect=paile1.get_rect() 桨叶2_y=100 桨叶2_x=471 ball=pygame.image.load('player.png') ball\u rect=ball.get\u rect() 球x=240 球y=130 球速=2 球速=2 速度=15 桨叶1_rect.x=桨叶1_x 桨叶1_rect.y=桨叶1_y 桨叶2_rect.x=桨叶2_x 桨叶2_-rect.y=桨叶2_-y ball_rect.x=ball_x ball_rect.y=ball_y def ball_移动(): 全球球速,球速,球速 球速 球y+=球y速度 def ball_collide_屏幕(): 全球球速,球速,球速 如果球y+屏幕W>=600: 球速=-2 如果ball_y+screenw
在移动对象之后和碰撞检测之前,您必须更新对象的位置:python pygame中的无效冲突检测 导入pygame pygame.init() pygame.display.set_标题(“…SHON…PONG…”) icon=pygame.image.load('icon.png')) pygame.display.set_图标(图标) FPS=50 fpscall=pygame.time.Clock() 屏幕H=500 屏幕W=300 screen=pygame.display.set_模式((屏幕H,屏幕W)) 黑色=((0,0,0)) palle1=pygame.image.load('palle1.png') palle1_rect=palle1.get_rect() 桨叶1_y=100 桨叶1_x=10 palle2=pygame.image.load('palle2.png') paile2_rect=paile1.get_rect() 桨叶2_y=100 桨叶2_x=471 ball=pygame.image.load('player.png') ball\u rect=ball.get\u rect() 球x=240 球y=130 球速=2 球速=2 速度=15 桨叶1_rect.x=桨叶1_x 桨叶1_rect.y=桨叶1_y 桨叶2_rect.x=桨叶2_x 桨叶2_-rect.y=桨叶2_-y ball_rect.x=ball_x ball_rect.y=ball_y def ball_移动(): 全球球速,球速,球速 球速 球y+=球y速度 def ball_collide_屏幕(): 全球球速,球速,球速 如果球y+屏幕W>=600: 球速=-2 如果ball_y+screenw,python,pygame,Python,Pygame,在移动对象之后和碰撞检测之前,您必须更新对象的位置: def ball_movement(): 全球球速,球速,球速 球速 球y+=球y速度 ball_rect.x=ball_x ball_rect.y=ball_y running=True 运行时: # [...] 对于pygame.event.get()中的事件: 如果event.type==pygame.QUIT: 运行=错误 pygame.quit() 如果event.type==pygame.KEYDOWN: 如果event.key
def ball_movement():
全球球速,球速,球速
球速
球y+=球y速度
ball_rect.x=ball_x
ball_rect.y=ball_y
running=True
运行时:
# [...]
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
pygame.quit()
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_w:
桨叶1_y-=速度
如果event.key==pygame.K_z:
桨叶1_y+=速度
如果event.key==pygame.K\u UP:
桨叶2_y-=速度
如果event.key==pygame.K_向下:
桨叶2_y+=速度
桨叶1_rect.x=桨叶1_x
桨叶1_rect.y=桨叶1_y
桨叶2_rect.x=桨叶2_x
桨叶2_-rect.y=桨叶2_-y
注意,您根本不需要变量
ball\u x
,ball\u y
,palle1\u x
,palle1\u y
,palle2\u x
和palle2\u y
。改用
ball\u rect.x
,ball\u rect.y
,paile1\u rect.x
,paile1\u rect.y
,paile2\u rect.x
和paile2\u rect.y
导入pygame
pygame.init()
pygame.display.set_标题(“…SHON…PONG…”)
#icon=pygame.image.load('icon.png'))
#pygame.display.set_图标(图标)
FPS=50
fpscall=pygame.time.Clock()
屏幕H=500
屏幕W=300
screen=pygame.display.set_模式((屏幕H,屏幕W))
黑色=((0,0,0))
#palle1=pygame.image.load('palle1.png')
桨1=pygame.Surface((5,50))
1.填充((255、255、255))
桨叶1右=桨叶1。获取右(左上=(10100))
#palle2=pygame.image.load('palle2.png')
桨叶2=pygame.曲面((5,50))
桨叶2.填充((255、255、255))
桨叶2右=桨叶1。获取右(左上方=(471100))
#ball=pygame.image.load('player.png')
球=pygame.表面((5,5))
填充球((255,255,255))
ball_rect=ball.get_rect(左上方=(240130))
球速=2
球速=2
速度=15
def ball_移动():
球速x+=球速x
球速y+=球速
def ball_collide_屏幕():
全球球速,球速
如果ball_rect.left=screen.get_width():
球速=-2
如果ball_rect.top=screen.get_height():
球速=-2
def球_碰撞_桨()
如果浆1右-球右-球左,问题解决了吗?
import pygame
pygame.init()
pygame.display.set_caption('...SHON...PONG...')
icon=pygame.image.load('icon.png')
pygame.display.set_icon(icon)
FPS=50
fpsClock=pygame.time.Clock()
screenh=500
screenw=300
screen=pygame.display.set_mode((screenh,screenw))
black =((0,0,0))
paddle1=pygame.image.load('paddle1.png')
paddle1_rect=paddle1.get_rect()
paddle1_y=100
paddle1_x=10
paddle2=pygame.image.load('paddle2.png')
paddle2_rect=paddle1.get_rect()
paddle2_y=100
paddle2_x=471
ball=pygame.image.load('player.png')
ball_rect=ball.get_rect()
ball_x=240
ball_y=130
ball_y_speed=2
ball_x_speed=2
speed=15
paddle1_rect.x=paddle1_x
paddle1_rect.y=paddle1_y
paddle2_rect.x=paddle2_x
paddle2_rect.y=paddle2_y
ball_rect.x=ball_x
ball_rect.y=ball_y
def ball_movement():
global ball_x, ball_y, ball_x_speed, ball_y_speed
ball_x -=ball_x_speed
ball_y +=ball_y_speed
def ball_collide_screen():
global ball_x, ball_y, ball_x_speed, ball_y_speed
if ball_y + screenw >= 600:
ball_y_speed = -2
if ball_y + screenw <= 300:
ball_y_speed = -2
def ball_collide_paddles():
global ball_rect, paddle1_rect, paddle2_rect
if paddle1_rect.right - ball_rect.left <= 0:
print('ho')
running=True
while running:
screen.fill((0,0,0))
screen.blit(paddle1, (paddle1_x,paddle1_y))
screen.blit(paddle2, (paddle2_x,paddle2_y))
screen.blit(ball, (ball_x, ball_y))
ball_collide_screen()
ball_movement()
ball_collide_paddles()
pygame.display.update()
fpsClock.tick(FPS)
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
pygame.quit()
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_w:
paddle1_y-= speed
if event.key==pygame.K_z:
paddle1_y+=speed
if event.key==pygame.K_UP:
paddle2_y-=speed
if event.key==pygame.K_DOWN:
paddle2_y+=speed