-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgibbet_client_gui.py
More file actions
139 lines (107 loc) · 3.72 KB
/
gibbet_client_gui.py
File metadata and controls
139 lines (107 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# coding: utf-8
# Первая часть интенсива.
# Игра "Виселица" с простым графическим интерфейсом
import turtle
import random
import sys
# Для Python 2.x нужно раскомментировать следующую строку:
# import tkSimpleDialog
# Загадываем число
x = random.randrange(1, 100)
def gotoxy(x,y):
''' Перемещение курсора без оставления следа черепашки
'''
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
def draw_line(from_x, from_y, to_x, to_y):
''' Рисование линии из точки (from_x, from_y) в точку (to_x, to_y)
'''
gotoxy(from_x, from_y)
turtle.goto(to_x, to_y)
def erase():
''' Стирание указанной области
'''
turtle.home()
turtle.begin_poly()
turtle.fd(100)
turtle.left(20)
turtle.fd(30)
turtle.left(60)
turtle.fd(50)
turtle.end_poly()
def draw_gibbet(step):
''' Пошаговое рисование виселицы
'''
turtle.color("blue")
if step == 1:
# вертикальная линия
draw_line(-160, -100, -160, 80)
elif step == 2:
# горизонтальная линия
draw_line(-160, 80, -80, 80)
elif step == 3:
# косая - ребро жесткости
draw_line(-160, 40, -120, 80)
elif step == 4:
# веревка
draw_line(-100,80,-100,40)
elif step == 5:
# голова
gotoxy(-100, 0)
turtle.circle(20)
elif step == 6:
# туловище
draw_line(-100,0,-100,-50)
elif step == 7:
# рука левая
draw_line(-100,-10,-120,-20)
elif step == 8:
# рука правая
draw_line(-100,-10,-80,-20)
elif step == 9:
# нога левая
draw_line(-100,-50,-120,-60)
elif step == 10:
# нога правая
draw_line(-100,-50,-80,-60)
# Основной код программы
answer = turtle.textinput("Играть?", "y/n")
if answer == 'n':
sys.exit()
gotoxy(-200,250)
turtle.write("Я загадал число от 1 до 1000.\nПопробуй угадать?", font=("Arial", 18, "normal"))
turtle.write(x)
try_count = 0
answer = turtle.textinput("Давать подсказки?", "Y/N")
#tkSimpleDialog.askstring("Нарисовать окружность", "Y/N") # для 2.x Python
hints = False
if answer == 'Y':
hints = True
while True:
number = turtle.numinput("Попробуй угадать", "Число", 0, 0, 100)
gotoxy(200, 200 - try_count*11)
turtle.write(number)
gotoxy(-150, 100)
turtle.write("Неверно!", font=("Arial", 28, "normal"))
if hints: # из ДЗ
gotoxy(250, 200 - try_count*11)
if number < x:
turtle.write("Загаданное число больше")
elif number > x:
turtle.write("Загаданное число меньше")
if number == x:
gotoxy(-150, -200)
turtle.write("Ура!", font=("Arial", 28, "normal"))
break
else:
turtle.color("red")
gotoxy(-150, 100)
turtle.write("Неверно!", font=("Arial", 28, "normal"))
try_count += 1
draw_gibbet(try_count)
if try_count == 10:
turtle.color("red")
gotoxy(-150, 100)
elif answer == 'N':
break