Не получается передать из одной функции в другую (arr >> a), переменные, побед-поражений, пришлось файл статистики по несколько раз считывать, подскажите варианты
#coding: utf-8
from Tkinter import *
import random
faq = '''
Принцип игры
Андроид загадывает слово — пишет на бумаге
первую и последнюю букву слова и отмечает
места для остальных букв, например чертами .
Также рисуется виселица.
Игрок предлагает букву, которая может входить
в это слово.Если такая буква есть в слове,
то Андроид пишет её над соответствующими этой
букве чертами — столько раз, сколько она
встречается в слове.Если такой буквы нет, то
к виселице добавляется круг в петле,изображающий
голову.Игрок продолжает отгадывать буквы до тех
пор,пока не отгадает всё слово.За каждый
неправильный ответ Андроид добавляет одну часть
туловища к виселице(их 6: голова, туловище, 2
руки и 2 ноги).Если туловище в виселице нарисовано
полностью, то отгадывающий игрок проигрывает,
считается повешенным.
Если игроку удаётся угадать слово, он выигрывает.
'''
slova = [u'виселица',u'смартфон',u'маргарин',u'мегагерц',u'страница',u'креветка',u'микрофон',u'квартира',u'скорость',u'художник',u'жидкость',u'карантин',u'интернет',u'документ',u'мембрана',u'радиация',u'мавзолей',u'терминал',u'водитель']
w = None
p = None
def mainWindow1(*w,**kw):
root = Tk()
root.title(u'Виселица')
canvas = Canvas(root, width=600, height=600)
canvas.pack(fill=BOTH)
def but(): #рисуем сетку
y = 0
while y < 600:
x=0
while x < 600:
canvas.create_rectangle(x,y,x+33,y+27, fill="#B0D0FF", outline="blue")
x=x+33
y = y + 27
def arr(): #основная функция
f = open('foo.txt', 'r')
data = f.readlines()
f.close
pobed = data[0]
poraj = data[1]
print pobed,poraj
but()
word = random.choice(slova) # выбираем рандомно слово
#word = u'микрофон'
wo = word[1:-1] # отрезаем от слова первую и последнюю букву
wor = []
for i in wo:
wor.append(i)
a0 = canvas.create_text(282,40, text=word[0], fill="purple", font=("Helvectica", "18")) # распологаем буквы на поле
a1 = canvas.create_text(315,40, text='_', fill="purple", font=("Helvectica", "18"))
a2 = canvas.create_text(347,40, text='_', fill="purple", font=("Helvectica", "18"))
a3 = canvas.create_text(380,40, text='_', fill="purple", font=("Helvectica", "18"))
a4 = canvas.create_text(412,40, text='_', fill="purple", font=("Helvectica", "18"))
a5 = canvas.create_text(444,40, text='_', fill="purple", font=("Helvectica", "18"))
a6 = canvas.create_text(477,40, text='_', fill="purple", font=("Helvectica", "18"))
a6 = canvas.create_text(510,40, text=word[-1], fill="purple", font=("Helvectica", "18"))
list1 = [1,2,3,4,5,6]
alfabet = u'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
er = [] # ошибки
win = [] # угаданные слова
canvas.create_line(10,10,200,10,width=4) # рисуем виселицу
canvas.create_line(10,10,10,400,width=4)
canvas.create_line(50,10,10,100,width=4)
canvas.create_text(75,500, text = u'Побед ', fill="purple", font=("Helvectica", "18"))
dl = canvas.create_text(120,500, text = pobed, fill="purple", font=("Helvectica", "18"))
canvas.create_text(100,550, text = u'Поражений ', fill="purple", font=("Helvectica", "18"))
dl2 = canvas.create_text(170,550, text = poraj, fill="purple", font=("Helvectica", "18"))
def delete():
#canvas.delete(dl)
#canvas.delete(dl2)
dat = '%s\n' % '0'
data = '%s\n' % '0'
f = open('foo.txt', 'w')
f.writelines(dat)
f.writelines(data)
f.close
dl = canvas.create_text(120,500, text = '0', fill="purple", font=("Helvectica", "18"))
dl2 = canvas.create_text(170,550, text = '0', fill="purple", font=("Helvectica", "18"))
btn02 = Button(root , text = 'Очистить', width=7, height=1, command = delete, bg="#FFD0A0", fg="#000077")
btn02.place(x=50,y=570)
btn02["bg"] = "red"
def a(v):
ind_alf = alfabet.index(v)
key = alfabet[ind_alf]
if v in wor:
ind = wor.index(v)
b2 = list1[ind]
wor[ind]='1'
def kord(): # функция координат букв
flst = (315,347,380,412,444,477)
y1 = 40
x1 = flst[b2 -1]
return x1,y1
x1,y1 = kord()
win.append(v)
a2 = canvas.create_text(x1,y1, text=wo[ind], fill="purple", font=("Helvectica", "18")) # располагаем угаданную букву на поле
btn[key]["bg"] = "green"
if not v in wor: # если нет нажатой буквы в слове, кнопку делаем неактивной
btn[key]['state'] = 'disabled'
if v in wor:
win.append(v)
ind2 = wor.index(v)
b2 = list1[ind2]
btn[key]['state'] = 'disabled'
x1,y1 = kord()
canvas.create_text(x1,y1, text=wo[ind2], fill="purple", font=("Helvectica", "18"))# если две одинаковые буквы, то добавляем
if len (win) == 6: # если угадали правильно 6 букв
canvas.create_text(150,150, text="You win", fill="purple", font=("Helvectica", "16"))
f = open('foo.txt', 'r')
data = f.readlines()
f.close
pobed = int(data[0]) + 1
f = open('foo.txt', 'r')
data = f.readlines()
data[0] = '%s\n' % str(pobed)
f.close
f = open('foo.txt', 'w')
f.writelines(data)
f.close
canvas.delete(dl)
canvas.create_text(120,500, text=pobed, fill="purple", font=("Helvectica", "18"))
for i in alfabet:
btn[i]['state'] = 'disabled'
else: # иначе рисуем человечка
er.append(v)
btn[key]["bg"] = "red"
btn[key]['state'] = 'disabled'
err = len(er)
men = ('100,80,100,200','100,80,145,100','100,80,45,100','100,200,45,300','100,200,145,300')
try:
sj = men[int(err)-1]
sj = sj.split(',')
canvas.create_line(sj,width=4)
except: pass
if err == 6: # если ошибок 6
canvas.create_oval(79,59,120,80, width=4, fill="white")
canvas.create_text(150,150, text="The end", fill="purple", font=("Helvectica", "16"))
canvas.create_line(100,10,100,60,width=4)
for i in alfabet:
btn[i]['state'] = 'disabled'
f = open('foo.txt', 'r')
data = f.readlines()
f.close
poraj = int(data[1]) + 1
f = open('foo.txt', 'r')
data = f.readlines()
data[1] = '%s\n' % str(poraj)
f.close
f = open('foo.txt', 'w')
f.writelines(data)
f.close
canvas.delete(dl2)
canvas.create_text(170,550, text=poraj, fill="purple", font=("Helvectica", "18"))
root.update()
btn = {}
def gen(u,x,y): # генерация букв-алфавита
btn[u] = Button(root , text = u, width=3, height=1, command = lambda: a(u))
btn[u].place(x=str(x),y=str(y))
x = 265
y = 110
z = 0
for i in alfabet[0:33]:
if ((z == 8) or (z == 16) or (z == 24)):
y += 27
x = 265
gen(i,x,y)
z+=1
x+=33
def butCallback():
mainWindow2()
but1 = Button(root,
text = "Правила игры",
command = butCallback )
but1.pack()
btn01 = Button(root , text = 'Играть', width=7, height=1, command = arr, bg="#FFD0A0", fg="#000077")
btn01.place(x=275,y=542)
btn01["bg"] = "red"
x0 = 10
y0 = 50
x1 = 60
y1 = 100
i = 0
deltax = 2
deltay = 3
which = canvas.create_oval(x0,y0,x1,y1,fill="red", tag='redBall')
while 1:
canvas.move('redBall', deltax, deltay)
canvas.after(20)
canvas.update()
if x1 >= 600:
deltax = -2
if x0 < 0:
deltax = 2
if y1 > 600:
deltay = -3
if y0 < 0:
deltay = 3
x0 += deltax
x1 += deltax
y0 += deltay
y1 += deltay
root.mainloop()
def mainWindow2(*w,**kw):
root = Tk()
root.title('Help')
canvas = Canvas(root, width=600, height=600)
canvas.pack(fill=BOTH)
canvas.create_text(310,240, text=faq, fill="purple", font=("Helvectica", "14"))
def butCallback():
root.destroy()
but1 = Button(root,
text ="Закрыть",
command = butCallback )
but1.pack()
root.mainloop()
if __name__ == '__main__':
mainWindow1()