Py学习  »  Python

Python只在while循环中运行一次

Caitlin Lamb • 4 年前 • 305 次点击  
import pygame

r_colour = (200, 100,100)
bg_colour = (0,175,200)
(width, height) = (600, 600)

screen = pygame.display.set_mode((width, height))
screen.fill(bg_colour)
pygame.draw.rect(screen, r_colour, (30, 30, 100, 100), 0)

pygame.display.flip()

running = True
while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_s:
                screen.fill(bg_colour)
                pygame.draw.rect(screen, r_colour, (20, 30, 100, 100), 0)
                pygame.display.update()


if running == True:
      for event in pygame.event.get():
          if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_s:
                    screen.fill(bg_colour)
                    pygame.draw.rect(screen, r_colour, (20, 30, 100, 100), 0)
                    pygame.display.update()



while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      break
      running = False



pygame.quit()

试图让红色方块在按下“s”键时移动,不确定为什么它只移动一次然后停止。很新的编程,如果很长/很难阅读,很抱歉。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52779
 
305 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Rabbid76
Reply   •   1 楼
Rabbid76    4 年前

典型的应用程序有一个单独的应用程序循环。应用程序循环执行以下操作:

  • 处理事件并根据事件更改状态
  • 清除显示
  • 绘制场景
  • 更新显示

这个 KEYDOWY 事件在按下键时发生一次,但在按住键时不会连续发生。
对于连续移动,可以通过 pygame.key.get_pressed() :

keys = pygame.key.get_pressed()

e、 g.如果 s公司 按下可由 keys[pygame.K_s] .

添加坐标( x , y )矩形的位置。当按键时,连续操作主应用程序循环中的位置。

例如
增量 如果 被压制和减量 如果 被按下。
增量 是的 如果 s公司 被压制和减量 是的 如果 西 按下:

import pygame

r_colour = (200, 100,100)
bg_colour = (0,175,200)
(width, height) = (600, 600)
x, y = 20, 30

screen = pygame.display.set_mode((width, height))

running = True
while running:

    # handle the events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # change coordinates
    keys = pygame.key.get_pressed()
    if keys[pygame.K_d]:
        x += 1
    if keys[pygame.K_a]:
        x -= 1
    if keys[pygame.K_s]:
        y += 1
    if keys[pygame.K_w]:
        y -= 1

    # clear the display
    screen.fill(bg_colour)
    # draw the scene
    pygame.draw.rect(screen, r_colour, (x, y, 100, 100), 0)
    # update the display
    pygame.display.update()

pygame.quit()