Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';在我的乒乓球比赛中球不会反弹吗?_Python_Pygame_Pong - Fatal编程技术网

Python 为什么';在我的乒乓球比赛中球不会反弹吗?

Python 为什么';在我的乒乓球比赛中球不会反弹吗?,python,pygame,pong,Python,Pygame,Pong,我正试图在Pygame中复制一个乒乓球。我是Python新手,遇到了一些问题。该程序应使两个挡板可移动,球在屏幕边缘反弹,但球不反弹。为什么? bif="bg.jpg" import pygame, sys from pygame.locals import * pygame.init() pygame.display.set_caption("Griffin West's Python Pong") pygame.mixer.init() sounda= pygame.mixer.Soun

我正试图在Pygame中复制一个乒乓球。我是Python新手,遇到了一些问题。该程序应使两个挡板可移动,球在屏幕边缘反弹,但球不反弹。为什么?

bif="bg.jpg"

import pygame, sys
from pygame.locals import *

pygame.init()
pygame.display.set_caption("Griffin West's Python Pong")
pygame.mixer.init()
sounda= pygame.mixer.Sound("Music.wav")

sounda.play()

screen=pygame.display.set_mode((1280,720),0,32)
background=pygame.image.load(bif).convert()

color1=(255,255,255)
color2=(255,255,0)
color3=(0,0,255)
color4=(0,255,0)
pos1=(640,0)
pos2=(640,720)
pos3=(640,360)
pos4=(0,360)
pos5=(1280,360)
radius=(100)
x1,y1=75,0
x2,y2=1175,0
x3,y3=0,0
clock=pygame.time.Clock()
speed=750
movex1, movey1=0,0
movex2, movey2=0,0



while True:


    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type==KEYDOWN:
            if event.key==K_w:
                movey1=-2
            elif event.key==K_s:
                movey1=+2
            if event.key==K_UP:
                movey2=-2
            elif event.key==K_DOWN:
                movey2=+2
        if event.type==KEYUP:
            if event.key==K_w:
                movey1=0
            elif event.key==K_s:
                movey1=0
            if event.key==K_UP:
                movey2=0
            elif event.key==K_DOWN:
                movey2=0

    x1+=movex1
    y1+=movey1
    x2+=movex2
    y2+=movey2


    milli=clock.tick()
    seconds=milli/1000.0
    dm=seconds*speed
    x3+=dm
    y3+=dm

    if x3>1280: 
        x3+=-dm
    if y3>720:
        y3+=-dm
    if x3<0:
        x3+=dm
    if y3<0:
        y3+=dm

    screen.blit(background, (0,0))

    screen.lock()
    pygame.draw.line(screen, color1, pos1, pos2, 1)
    pygame.draw.circle(screen, color1, pos3, radius, 1)
    pygame.draw.circle(screen, color1, pos4, radius, 1)
    pygame.draw.circle(screen, color1, pos5, radius, 1)
    pygame.draw.rect(screen, color3, Rect((x1,y1),(30,100)))
    pygame.draw.rect(screen, color2, Rect((x2,y2),(30,100)))
    pygame.draw.circle(screen, color4, (int(x3),int(y3)), 15)

    screen.unlock()
    myfont = pygame.font.SysFont("Press Start 2P", 50)
    label = myfont.render("Python", 1, (255,0,0))
    screen.blit(label, (494, 115))
    myfont = pygame.font.SysFont("Press Start 2P", 50)
    label = myfont.render("Pong", 1, (255,0,0))
    screen.blit(label, (544, 175))
    pygame.display.update()
bif=“bg.jpg”
导入pygame,sys
从pygame.locals导入*
pygame.init()
pygame.display.set_标题(“格里芬·韦斯特的Python Pong”)
pygame.mixer.init()
sounda=pygame.mixer.Sound(“Music.wav”)
sounda.play()
screen=pygame.display.set_模式((1280720),0,32)
background=pygame.image.load(bif.convert())
颜色1=(255255)
颜色2=(255255,0)
颜色3=(0,0255)
颜色4=(0255,0)
pos1=(640,0)
位置2=(640720)
位置3=(640360)
位置4=(0360)
位置5=(1280360)
半径=(100)
x1,y1=75,0
x2,y2=1175,0
x3,y3=0,0
clock=pygame.time.clock()
速度=750
movex1,movey1=0,0
movex2,movey2=0,0
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()
如果event.type==KEYDOWN:
如果event.key==K_w:
移动1=-2
elif event.key==K_s:
移动1=+2
如果event.key==K\u UP:
movey2=-2
elif event.key==K_DOWN:
movey2=+2
如果event.type==KEYUP:
如果event.key==K_w:
移动1=0
elif event.key==K_s:
移动1=0
如果event.key==K\u UP:
movey2=0
elif event.key==K_DOWN:
movey2=0
x1+=x1
y1+=移动y1
x2+=movex2
y2+=移动y2
milli=时钟滴答声()
秒=毫/1000.0
dm=秒*速度
x3+=dm
y3+=dm
如果x3>1280:
x3+=-dm
如果y3>720:
y3+=-dm

如果x3免责声明:我不是pyGame的家伙。但是,我认为这是一个逻辑问题

我猜,按照目前的编码,球从左上角(0,0)移动到右下角(1280720),然后就停留在那里

您希望确保球在撞到墙时改变方向,因此,您需要的不是速度,而是x和y的单独速度(这在以后您希望球以不同角度移动时也会有所帮助,具体取决于桨的打击)。然后,当球碰到墙时,你改变了移动的方向

替换此项:

dm=seconds*speed
x3+=dm
y3+=dm

if x3>1280: 
    x3+=-dm
if y3>720:
    y3+=-dm
if x3<0:
    x3+=dm
if y3<0:
    y3+=dm
dm=秒*速度
x3+=dm
y3+=dm
如果x3>1280:
x3+=-dm
如果y3>720:
y3+=-dm
如果是x3720:
y3+=-dy
斯皮蒂=-斯皮蒂

如果x3免责声明:我不是pyGame的家伙。但是,我认为这是一个逻辑问题

我猜,按照目前的编码,球从左上角(0,0)移动到右下角(1280720),然后就停留在那里

您希望确保球在撞到墙时改变方向,因此,您需要的不是速度,而是x和y的单独速度(这在以后您希望球以不同角度移动时也会有所帮助,具体取决于桨的打击)。然后,当球碰到墙时,你改变了移动的方向

替换此项:

dm=seconds*speed
x3+=dm
y3+=dm

if x3>1280: 
    x3+=-dm
if y3>720:
    y3+=-dm
if x3<0:
    x3+=dm
if y3<0:
    y3+=dm
dm=秒*速度
x3+=dm
y3+=dm
如果x3>1280:
x3+=-dm
如果y3>720:
y3+=-dm
如果是x3720:
y3+=-dy
斯皮蒂=-斯皮蒂

如果你能描述一下球应该弹起时的动作吗?它到底在做什么?这将有助于理解这个问题。也许你也可以在代码中添加一些注释,说明哪些线控制球以及球的反弹。我假设
如果x3>1280:x3+=-dm
线是你使球反弹的代码?我认为它不会反弹,因为在下一步,
dm
将被添加回
x3
。你能描述一下球应该反弹时的动作吗?它到底在做什么?这将有助于理解这个问题。也许你也可以在代码中添加一些注释,说明哪些线控制球以及球的反弹。我假设
如果x3>1280:x3+=-dm
线是你使球反弹的代码?我认为它不会反弹,因为在下一步,
dm
将被添加回
x3