2015-10-08 1 views
0

Итак, у меня есть этот блок кода, если пользователь правильно набирает то, что на экране.Как остановить блок кода после нажатия некорректного ключа

words = ["Games","Development","Keyboard","Speed","Typer","Anything","Alpha","Zealous","Accurate","Basics","Shortcut","Purpose","Window","Counter","Fortress","Modification","Computer","Science","History","Football","Basketball","Solid","Phantom","Battlefield","Advanced","Warfare","Download","Upload","Antidisestablishmentarianism","Supercalifragilisticexpialidocious","Discomobobulation","Liberated","Assassin","Brotherhood","Revelation","Unity","Syndicate","Victory"] 
wordcount = 0 
maxwords = 12   
skips = 0 

def nextWord(): 
     global score 
     global wordcount 
     global skips 
     global maxwords 
     global name 
     global high_score 

     entry.focus_set() 

     if entry.get().lower() == words[1].lower(): 
      score += 1 
      wordcount += 1 
      wordcounter.config(text="Words: " + str(wordcount)) 

И я хотел бы знать, как остановить этот блок кода от работы, если они не печатайте то, что на экране:

 for i in range(maxwords): 
      entry.delete(0, tkinter.END) 
      random.shuffle(words) 
      label.config(text=str(words[1])) 
      scoreLabel.config(text="Time: " + str(score)+ "s") 

Это продолжается, даже если они не печатайте это правильно из-за:

def startGame(event): 
    nextWord() 

root.bind("<Return>", startGame) 

настоящее время у меня это:

elif entry.get().lower() != words[1].lower(): 
      wronglabel.config(text="WRONG!") 
      time.sleep(0.6) 
      wronglabel.delete(0, tkinter.END) 

Что это в настоящее время делает делает

wronglabel = tkinter.Label(root, text="", font =("Helvetica, 14")) 
wronglabel.pack() 

Скажем так, но я хотел бы знать, как сделать это не случайно перетасовать и получить элементы из списка, если они пользователь не введет правильное слово. Спасибо.

Все вместе, это делает это: (размещение только соответствующий код):

#Add words to this list to include them in the game 
words = ["Games","Development","Keyboard","Speed","Typer","Anything","Alpha","Zealous","Accurate","Basics","Shortcut","Purpose","Window","Counter","Fortress","Modification","Computer","Science","History","Football","Basketball","Solid","Phantom","Battlefield","Advanced","Warfare","Download","Upload","Antidisestablishmentarianism","Supercalifragilisticexpialidocious","Discombobulation","Liberated","Assassin","Brotherhood","Revelation","Unity","Syndicate","Victory"] 
wordcount = 0 
maxwords = [len(words)]  

def nextWord(): 
     global score 
     global wordcount 
     global maxwords 
     global name 
     global high_score 

     entry.focus_set() 

     if entry.get().lower() == words[1].lower(): 
      score += 1 
      wordcount += 1 
      wordcounter.config(text="Words: " + str(wordcount)) 

     elif entry.get().lower() != words[1].lower(): 
       wronglabel.config(text="WRONG!") 

     for i in words[len(maxwords)]: 
      entry.delete(0, tkinter.END) 
      random.shuffle(words) 
      label.config(text=str(words[1])) 
      scoreLabel.config(text="Time: " + str(score)+ "s") 

def startGame(event): 
    nextWord() 

wronglabel = tkinter.Label(root, text="", font =("Helvetica, 14")) 
wronglabel.pack() 

(я редактировал некоторые незначительные вещи в коде, чтобы решить другую проблему)

+0

Рассмотрите возможность размещения всего своего сценария, маловероятно, что кто-то захочет попробовать и собрать все это вместе. –

ответ

0

Я могу быть просто не понимаю это правильно, но не можете ли вы переместить цикл for внутри оператора if так?

if entry.get().lower() == words[1].lower(): 
    score += 1 
    wordcount += 1 
    wordcounter.config(text="Words: " + str(wordcount)) 

    for i in words[len(maxwords)]: 
     entry.delete(0, tkinter.END) 
     random.shuffle(words) 
     label.config(text=str(words[1])) 
     scoreLabel.config(text="Time: " + str(score)+ "s") 
+0

Я пробовал это, но потом он не отображает случайное перетасованное слово. Это код, который я использую для отображения слова, и я хотел знать, как его сортировать, перестроить его так, чтобы он мог работать. – Inkblot

+0

Если честно, я не совсем понимаю, что вы хотите сделать для цикла for. Кажется странным повторять этот код за X раз, когда нужно только один раз сделать это. Хотя это происходит только один раз, потому что 'maxwords = [len (words)]' - это список с единственным значением 'len (maxwords)', тогда будет возвращено 1 и поэтому 'для i в словах [len (maxwords)]:' i = слово в индексе 1 каждый раз. Но вы даже не используете i в цикле. Поэтому я не уверен, что вы пытаетесь сделать точно –

+0

О, извините, я уже исправил эту проблему и забыл закрыть вопрос. То, что я там делал, в любом случае совершенно неверно, но спасибо за помощь. – Inkblot