Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.89 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import scrolledtext, messagebox
  3. from random import randint
  4. from time import time
  5. import csv
  6.  
  7.  
  8. number = 0
  9. answer = 0
  10. attempt = 0
  11. time_start = 0
  12.  
  13.  
  14. def show_records():
  15.     def close_window():
  16.         window2.destroy()
  17.  
  18.     window2 = Toplevel(window)
  19.     lbl = Label(window2, text='Легкий')
  20.     easy_rec = Text(window2)
  21.     btnOk = Button(window2, text='Ок', command=close_window)
  22.     lbl.pack()
  23.     easy_rec.pack()
  24.     btnOk.pack(pady=50)
  25.     with open('test.csv') as file:
  26.         reader = csv.reader(file)
  27.         for line in reader:
  28.             easy_rec.insert(END, ' '.join(line) + '\n')
  29.     easy_rec.configure(state='disabled')
  30.  
  31.  
  32. def start_game():
  33.     global number
  34.     global answer
  35.     global attempt
  36.     global time_start
  37.     n = game_level.get()
  38.     # Загадывание числа
  39.     number = randint(0, n)
  40.     # вывод ответа для отладки
  41.     print(number)
  42.     answer = -1  # ответ пользователя
  43.     attempt = 0
  44.     time_start = time()
  45.     history.configure(state='normal')
  46.     history.delete(1.0, END)
  47.     history.insert(END, f'Начинаем новую игру. Загадано число от 1 до {n}\n')
  48.     history.configure(state='disabled')
  49.  
  50.  
  51. def turn():
  52.     global number
  53.     global answer
  54.     global attempt
  55.     global time_start
  56.     answer = number_input.get()
  57.     attempt += 1
  58.     if answer.isdigit():
  59.         answer = int(answer)
  60.         history.configure(state='normal')
  61.         if answer < number:
  62.             history.insert(END, f'Попытка: {attempt}, названное число: {answer}, загаданное число больше\n')
  63.         elif answer > number:
  64.             history.insert(END, f'Попытка: {attempt}, названное число: {answer}, загаданное число меньше\n')
  65.         else:
  66.             # win
  67.             pass
  68.         history.configure(state='disabled')
  69.     else:
  70.         messagebox.showerror('Ошибка', 'Нужно вводить числа')
  71.  
  72.  
  73.  
  74.  
  75. window = Tk()
  76. window.title('Игра "Угадай число"')
  77. window.geometry('800x600')
  78. upper_frame = LabelFrame(window, bg='Lavender', height=200, width=800, text='Игра')
  79. middle_frame = LabelFrame(window, bg='silver', height=200, width=800, text='История ходов')
  80. down_frame = LabelFrame(window, bg='DarkOrange', height=200, width=800, text='Настройки игры')
  81.  
  82. upper_frame.pack()
  83. upper_frame.pack_propagate(False)
  84. middle_frame.pack()
  85. middle_frame.pack_propagate(False)
  86. down_frame.pack()
  87. down_frame.pack_propagate(False)
  88.  
  89. title = Label(upper_frame, text='Введите ваше число')
  90. title.pack()
  91.  
  92. number_input = Entry(upper_frame)
  93. number_input.pack(pady=20)
  94. number_input.focus()
  95.  
  96. btn_turn = Button(upper_frame, text='OK', command=turn)
  97. btn_turn.pack()
  98.  
  99. history = scrolledtext.ScrolledText(middle_frame, state='disabled')
  100. history.pack(pady=10)
  101.  
  102. level_frame = LabelFrame(down_frame, text='Уровень сложности')
  103. game_level = IntVar()
  104. game_level.set(100)
  105. lev1 = Radiobutton(level_frame, text='Легкий (число от 1 до 100)', value=100, variable=game_level)
  106. lev2 = Radiobutton(level_frame, text='Средний (число от 1 до 1000)', value=1000, variable=game_level)
  107. lev3 = Radiobutton(level_frame, text='Сложный (число от 1 до 1 000 000', value=1000000, variable=game_level)
  108. lev1.pack()
  109. lev2.pack()
  110. lev3.pack()
  111. level_frame.pack(side='left', padx=50)
  112.  
  113. btn_new_game = Button(down_frame, text='Новая игра', command=start_game)
  114. btn_new_game.pack(side='left')
  115.  
  116. records_frame = LabelFrame(down_frame, text='Статистика')
  117. btn_show_rec = Button(records_frame, text='Показать таблицу рекордов', command=show_records)
  118. btn_show_rec.pack()
  119. records_frame.pack(side='right', padx=50)
  120. start_game()
  121. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement