在python中,我无法让布尔值每秒在true和false之间变化

在python中,我无法让布尔值每秒在true和false之间变化,python,loops,while-loop,pygame,control-flow,Python,Loops,While Loop,Pygame,Control Flow,我正在做一个游戏,在这个游戏中我想让我的角色左右摇摆,但目前我找不到一个方法来做到这一点。我在这里用了一个布尔值来表示他只在哪一边,以使它更简单。我知道我是个傻瓜,如果这是显而易见的,请不要生气 这是我的代码: LeftRight = True Counter1 = 0 while True: if Counter1 <= 10: Left = True else: Left = False Counter1 += 1

我正在做一个游戏,在这个游戏中我想让我的角色左右摇摆,但目前我找不到一个方法来做到这一点。我在这里用了一个布尔值来表示他只在哪一边,以使它更简单。我知道我是个傻瓜,如果这是显而易见的,请不要生气

这是我的代码:

LeftRight = True
Counter1 = 0


while True:
    if Counter1 <= 10:
        Left = True
    else:
        Left = False
    Counter1 += 1

    if Counter1 == 20:
        Counter1 = 0

    print (Left)

它必须处于一个while循环。

正如@DominicKexel所指出的,OP可能不想为了让程序等待一秒钟而停止整个程序。要解决此问题,可以使用pygame.time.Clock,如下所示:

from time import sleep

Left = True
while 1:
    Left = not Left  # flip the boolean
    sleep(1)  # wait one second
import pygame

pygame.init()

timer = pygame.time.Clock()
FPS = 60        #(60 frames per second)
i=0
left = True

while True:     #your main while loop
    timer.tick(FPS)
    if i < FPS:
        i += 1
    else:
        left = not left
        i = 0

正如@DominicKexel所指出的,OP可能不想为了让程序等待一秒钟而停止整个程序。要解决此问题,可以使用pygame.time.Clock,如下所示:

import pygame

pygame.init()

timer = pygame.time.Clock()
FPS = 60        #(60 frames per second)
i=0
left = True

while True:     #your main while loop
    timer.tick(FPS)
    if i < FPS:
        i += 1
    else:
        left = not left
        i = 0

考虑到这必须发生在游戏的主循环中,调用sleep来停止整个游戏一整秒钟是没有多大帮助的,但我承认这个问题不是很清楚。考虑到这必须发生在游戏的主循环中,打电话给sleep让整个游戏停止整整一秒钟是没有多大帮助的,但我承认这个问题不是很清楚。我的回答帮你解决了问题吗?如果是,请随意回答我的答案是否有助于您解决问题?如果是,请随时联系