Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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_Python 3.7 - Fatal编程技术网

Python 我应该将暂停键放在哪里或放在哪里?

Python 我应该将暂停键放在哪里或放在哪里?,python,pygame,python-3.7,Python,Pygame,Python 3.7,好的,我今天开始了一个项目,我创造了太空入侵者。我个人唯一的问题是暂停和取消暂停按钮。我正在使用Python 3.7.4和Pygame 1.9.6 paused = False running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN:

好的,我今天开始了一个项目,我创造了太空入侵者。我个人唯一的问题是暂停和取消暂停按钮。我正在使用Python 3.7.4和Pygame 1.9.6

paused = False
running = True
while running:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_p:  # Pausing
            paused = True
        if event.key == pygame.K_u:  # Unpausing
            paused = False
if not paused:
    # RGB =  Red, Green, Blue
    screen.fill((0, 0, 0))
    # Background Image
    screen.blit(background, (0, 0))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

            # if keystroke is pressed check whether its right or left
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                playerX_change = -5
            if event.key == pygame.K_RIGHT:
                playerX_change = 5
            if event.key == pygame.K_SPACE:
                if bullet_state is "ready":
                    bullet_Sound = mixer.Sound('laser.wav')
                    bullet_Sound.play()
                    # Get the current x coordinate of the spaceship
                    bulletX = playerX
                    fire_bullet(bulletX, bulletY)

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                playerX_change = 0
所以我不知道我是否应该先按下暂停按钮

我试过:

while running:
    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False
         if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_p:  # Pausing
                paused = True
            if event.key == pygame.K_u:  # Unpausing
                paused = False
    if not paused:
        while running:
         '''The rest of the code'''
if event.key == pygame.K_p:
    paused = not paused  # for pause and unpausing
其中#暂停是:

我试过:

while running:
    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False
         if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_p:  # Pausing
                paused = True
            if event.key == pygame.K_u:  # Unpausing
                paused = False
    if not paused:
        while running:
         '''The rest of the code'''
if event.key == pygame.K_p:
    paused = not paused  # for pause and unpausing
没有“u”键。
所以我不知道该把它放在哪里。所以有人帮忙会很好。我看了看问题:寻求帮助。还有什么事请告诉我。

这里有一个关于球移动的最简单、完整的例子。您可以通过按P暂停和取消暂停其移动。您可以使用更改其速度←↑→↓. 按空格键将重置速度

import pygame

WIDTH = 640
HEIGHT = 480
FPS = 30


class Ball(pygame.sprite.Sprite):
    """Moving ball sprite"""

    def __init__(self, color="white", size=20, speedx=-5, speedy=-5):
        pygame.sprite.Sprite.__init__(self)
        self.color = pygame.color.Color(color)
        # instead of loading an image from file, draw a circle.
        self.image = pygame.Surface((size * 2, size * 2), pygame.SRCALPHA)
        pygame.draw.circle(self.image, self.color, (size, size), size)
        self.rect = self.image.get_rect()
        # start ball in the middle of the screen
        self.rect.x = WIDTH / 2 - self.rect.width / 2
        self.rect.y = HEIGHT / 2 - self.rect.height / 2
        self.speedx = speedx
        self.speedy = speedy
        self.size = size

    def update(self):
        # reverse direction if out of bounds
        if not (0 < self.rect.x < WIDTH - self.size*2):
            self.speedx *= -1
        if not (0 < self.rect.y < HEIGHT - self.size*2):
            self.speedy *= -1
        # update position
        self.rect.x += self.speedx
        self.rect.y += self.speedy


pygame.init()
window = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

ball = Ball()
balls = pygame.sprite.Group()
balls.add(ball)


paused = False
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_p:
                paused = not paused
            elif event.key == pygame.K_UP:
                ball.speedy += 5
            elif event.key == pygame.K_DOWN:
                ball.speedy -= 5
            if event.key == pygame.K_RIGHT:
                ball.speedx += 5
            elif event.key == pygame.K_LEFT:
                ball.speedx -= 5
            elif event.key == pygame.K_SPACE:
                # reset speed
                ball.speedx = 2
                ball.speedy = 0
    # update game elements
    if not paused:
        pygame.display.set_caption('Running')
        ball.update()
    else:
        pygame.display.set_caption('Paused')
    # draw surface - fill background
    window.fill(pygame.color.Color("grey"))
    ## draw sprites
    balls.draw(window)
    # show surface
    pygame.display.update()
    # limit frames
    clock.tick(FPS)
pygame.quit()
导入pygame
宽度=640
高度=480
FPS=30
班级舞会(pygame.sprite.sprite):
“移动球精灵”
def uuu init uuuu(self,color=“white”,size=20,speedx=-5,speedy=-5):
pygame.sprite.sprite.\uuuuu init\uuuuuuu(自我)
self.color=pygame.color.color(颜色)
#不要从文件中加载图像,而是画一个圆。
self.image=pygame.Surface((大小*2,大小*2),pygame.SRCALPHA)
pygame.draw.circle(self.image,self.color,(大小,大小),大小)
self.rect=self.image.get_rect()
在屏幕中部启动球
self.rect.x=宽度/2-self.rect.WIDTH/2
self.rect.y=高度/2-self.rect.HEIGHT/2
self.speedx=speedx
迅速的
self.size=大小
def更新(自我):
#如果超出边界,则反转方向
如果不是(0

请注意,暂停时,事件仍在处理中,因此您仍可以调整速度。要更改此行为,您需要在
暂停

时放弃特定事件,您应该只在一个位置处理事件。通常,游戏循环应该是:处理事件⇛ 更新游戏状态⇛ 画屏幕。然后,您应该在暂停时忽略非退出事件