Прямо сейчас, я работаю над небольшой RPG с 3 классами и возможностью иметь собственное имя пользователя. У меня проблема с моим основным скриптом. Проблема заключается в том, что выражение bolded if
должно быть циклом while, чтобы добавить следующее следующее меню - главное меню. Однако, когда я пытаюсь использовать ключевое слово while, это заставляет игру перестать отвечать. Заранее благодарим любого, кто помогает в любом случае.Двойной пока петли не отвечают
Вот мой код:
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameDisplay.fill(green)
while User_name == None:
User_name = Username.ask(gameDisplay,"username")
print User_name + "'s run/dio"
if Class_Choice == None:
Choice_wall().paint(gameDisplay)
Class_Choice = Choice_wall().Choice(pygame.mouse.get_pos(
[0],0,pygame.mouse.get_pressed()[0],0,0)
pygame.display.update()
clock.tick(30)
Вот функции:
def Choice(self, c1,c2 , p1,p2,p3):
while p1 == 0:
if 0 <= c1 <= 319 and p1 == 1 :
return "warrior"
elif 320 <= c1 <= 639 and p1 == 1:
return "archer"
elif 640 <= c1 <= 960 and p1 == 1:
return "mage"
def get_key():
while 1:
event = pygame.event.poll()
if event.type == KEYDOWN:
return event.key
else:
pass
def display_box(screen, message):
"Print a message in a box in the middle of the screen"
fontobject = pygame.font.Font(None,18)
pygame.draw.rect(screen, (0,0,0),
((screen.get_width()/2) - 100,
(screen.get_height()/2) - 10,
200,20), 0)
pygame.draw.rect(screen, (255,255,255),
((screen.get_width()/2) - 102,
(screen.get_height()/2) - 12,
204,24), 1)
if len(message) != 0:
screen.blit(fontobject.render(message, 1, (255,255,255)),
((screen.get_width()/2) - 100, (screen.get_height()/2) - 10))
pygame.display.flip()
def ask(screen, question):
"ask(screen, question) -> answer"
pygame.font.init()
current_string = []
display_box(screen, question + ": " + string.join(current_string,""))
while 1:
inkey = get_key()
if inkey == K_BACKSPACE:
current_string = current_string[0:-1]
elif inkey == K_RETURN:
break
elif inkey == K_MINUS:
current_string.append("_")
elif inkey <= 127:
current_string.append(chr(inkey))
display_box(screen, question + ": " + string.join(current_string,""))
return string.join(current_string,"")
Какой полужирный «если»? Последняя часть вашего кода не подходит в коде, а отступы выглядят так, как будто это испортилось. – ShadowMitia
Не могли бы вы уточнить, что происходит? Замораживает ли он до или после ввода вашего имени пользователя? – UnsignedByte
У вас уже есть игровой цикл, у вас нет другого внутри него. – Natecat