我希望pygame界面在按下右侧提示按钮时切换到新页面(从随机确定的页面顺序)。初始化时,页面不会过渡到for循环中所述的下一页。另外,将所有内容都放入while true循环中,就可以在func1和func2的内容之间无休止地循环,而与按键无关。任何见识将不胜感激。
在Python 3x和pygame 1.9.5上运行
import pygame
from pygame.locals import *
import random
control1 = 0
control2= 0
pygame.init()
display_width = 500
display_height = 500
black = (0,0,0)
white = (255,255,255)
gd = pygame.display.set_mode((display_width,display_height))
myfont = pygame.font.SysFont("Arial", 30)
pygame.event.pump()
def func1():
global control1
control1 = 1
gd.fill(white)
letter = myfont.render("Press w",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
def func2():
global control2
control2 = 1
gd.fill(white)
letter = myfont.render("Press d",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
my_sample = random.sample(range(2), 2)
for i in my_sample:
if my_sample[i] == 0:
func1()
if control1 == 0:
continue
if my_sample[i] == 1:
func2()
if control2 == 0:
continue
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w and control1 == 1:
control1 = 0
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_d and control2 == 1:
control2 = 0
pygame.display.update()
答案 0 :(得分:0)
我不确定目标是什么,但是我可以解决您遇到的问题。这些页面不会转换,因为即使您正在注册按键,也不会更新while循环中要显示的页面。正确的做法是,将所有内容放入while循环中都会在func1()和func2()之间无限循环,因为您还需要标记来指示要显示的内容。您希望拥有所有零件,只是不一定要在正确的位置。
import pygame
from pygame.locals import *
pygame.init()
display_width = 500
display_height = 500
black = (0,0,0)
white = (255,255,255)
gd = pygame.display.set_mode((display_width,display_height))
myfont = pygame.font.SysFont("Arial", 30)
pygame.event.pump()
def func1():
global control1
control1 = 1
gd.fill(white)
letter = myfont.render("Press d",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
def func2():
global control2
control2 = 1
gd.fill(white)
letter = myfont.render("Press s",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
def func3():
global control2
control2 = 1
gd.fill(white)
letter = myfont.render("Press w",0,(black))
gd.blit(letter,(100,100))
pygame.display.flip()
page1 = True
page2 = False
page3 = False
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
page1 = True
page2 = False
page3 = False
if event.key == pygame.K_d:
page1 = False
page2 = True
page3 = False
if event.key == pygame.K_s:
page1 = False
page2 = False
page3 = True
if page1:
func1()
elif page2:
func2()
elif page3:
func3()
pygame.display.update()
我取出了所有随机的东西,并修改了代码,向您展示了一个简单的页面切换程序,用户可以在其中按下按钮并切换显示的页面。从那里,您可以添加回随机的东西。要注意的关键是页面被标记为知道要显示的页面。