社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python只在while循环中运行一次

Caitlin Lamb • 5 年前 • 585 次点击  
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
 
585 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Rabbid76
Reply   •   1 楼
Rabbid76    5 年前

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

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

这个 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()