Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- import random
- root = Tk()
- root.title('Виселица')
- # создаём окно
- canvas = Canvas(root, width=600, height=600)
- canvas.pack()
- # рисуем клеточки
- def but():
- y = 0
- while y < 600:
- x = 0
- while x < 600:
- canvas.create_rectangle(x, y, x + 33, y + 33, fill='white', outline='blue')
- x += 33
- y += 33
- # приветствие и правила
- faq = '''Привет, игрок!
- Я хочу сыграть с тобой в одну игру...
- Я загадываю слово и рисую на листе такое
- количество подчёркиваний, сколько букв в слове,
- оставив тебе только две буквы в подсказку.
- Ты начинаешь нажимать на буквы, чтобы
- отгадать слово. Если буква есть в слове,
- то я впишу её на своё место в слово (если
- таких букв несколько — то вписываются все),
- а если нет — то я рисую один элемент твоего
- персонажа (голова, туловище, 2 руки, 2 ноги
- — всего 6 элементов-попыток).
- Ты готов рискнуть?'''
- canvas.create_text(310, 290, text=faq, font='Arial 16', fill='blue')
- # слова для игры
- words = ['смартфон', 'страница', 'лампочка', 'картинка', 'публично']
- # меняем буквы на чёрточки
- def change():
- but()
- gallows()
- word_random = random.choice(words)
- word = word_random[1:-1]
- word_for_game = []
- for i in word:
- word_for_game.append(i)
- a0 = canvas.create_text(282, 40, text=word_random[0], fill='blue', font='Arial 18')
- a1 = canvas.create_text(315, 40, text='_', fill='blue', font='Arial 18')
- a2 = canvas.create_text(347, 40, text='_', fill='blue', font='Arial 18')
- a3 = canvas.create_text(380, 40, text='_', fill='blue', font='Arial 18')
- a4 = canvas.create_text(412, 40, text='_', fill='blue', font='Arial 18')
- a5 = canvas.create_text(444, 40, text='_', fill='blue', font='Arial 18')
- a6 = canvas.create_text(477, 40, text='_', fill='blue', font='Arial 18')
- a7 = canvas.create_text(510, 40, text=word_random[-1], fill='blue', font='Arial 18')
- unknown_letters = [1, 2, 3, 4, 5, 6]
- alphabet = 'абвгдежзийклмнопрстуфхцчшщъыьэюя'
- incorrect = []
- correct = []
- buttons = {}
- # проверка для букв
- def check(a):
- correct_alphabet = alphabet.index(a)
- key = alphabet[correct_alphabet]
- if a in word_for_game:
- ind = word_for_game.index(a)
- b2 = unknown_letters[ind]
- word_for_game[ind] = a
- # размещение по х и у
- def cord():
- if b2 == 1:
- x1, y1 = 315, 40
- if b2 == 2:
- x1, y1 = 347, 40
- if b2 == 3:
- x1, y1 = 380, 40
- if b2 == 4:
- x1, y1 = 412, 40
- if b2 == 5:
- x1, y1 = 444, 40
- if b2 == 6:
- x1, y1 = 477, 40
- return x1, y1
- x1, y1 = cord()
- buttons[key]['bg'] = 'green'
- if a not in word:
- buttons[key]['state'] = 'disabled'
- if a in word and a not in correct:
- correct.append(a)
- ind2 = word.index(a)
- b2 = unknown_letters[ind2]
- x1, y1 = cord()
- canvas.create_text(x1, y1, text=word_for_game[ind2], fill='blue', font='Arial 18')
- if len(correct) == 6:
- canvas.create_text(150, 150, text='Ты победил!', font='Arial 18', fill='blue')
- for i in alphabet:
- buttons[i]['state'] = 'disabled'
- else:
- incorrect.append(a)
- buttons[key]['bg'] = 'red'
- buttons[key]['state'] = 'disabled'
- if len(incorrect) == 1:
- head()
- elif len(incorrect) == 2:
- body()
- elif len(incorrect) == 3:
- right_hand()
- elif len(incorrect) == 4:
- left_hand()
- elif len(incorrect) == 5:
- right_leg()
- elif len(incorrect) == 6:
- left_leg()
- rope()
- canvas.create_text(150, 150, text='Ты проиграл', fill='black', font='Arial 18')
- for i in alphabet:
- buttons[i]['state'] = 'disabled'
- root.update()
- # генерируем кнопки
- def gen_buttons(letter, x, y):
- buttons[letter] = Button(root, text=letter, width=3, height=1, command=lambda: check(letter))
- buttons[letter].place(x=str(x), y=str(y))
- x, y = 265, 110
- for i in alphabet[0:8]:
- gen_buttons(i, x, y)
- x += 33
- x, y = 265, 137
- for i in alphabet[8:16]:
- gen_buttons(i, x, y)
- x += 33
- x, y = 265, 164
- for i in alphabet[16:24]:
- gen_buttons(i, x, y)
- x += 33
- x, y = 265, 191
- for i in alphabet[24:32]:
- gen_buttons(i, x, y)
- x += 33
- # рисуем персонажа и виселицу
- def head():
- canvas.create_oval(79, 59, 120, 80, width=4, fill='white')
- root.update()
- def right_hand():
- canvas.create_line(100, 80, 145, 100, width=4)
- root.update()
- def left_hand():
- canvas.create_line(100, 80, 45, 100, width=4)
- root.update()
- def body():
- canvas.create_line(100, 80, 100, 200, width=4)
- root.update()
- def right_leg():
- canvas.create_line(100, 200, 45, 300, width=4)
- root.update()
- def left_leg():
- canvas.create_line(100, 200, 145, 300, width=4)
- root.update()
- def gallows():
- canvas.create_line(10, 20, 10, 300, width=4)
- canvas.create_line(10, 20, 150, 20, width=4)
- root.update()
- def rope():
- canvas.create_line(75, 20, 100, 80, width=4)
- root.update()
- # кнопка: начать игру
- button_start = Button(root, text='Да!', width=5, height=2, command=lambda: change())
- button_start.place(x=260, y=460)
- button_start['bg'] = 'yellow'
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement