Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2014 12:59:27

AZJIO
Зарегистрирован: 2014-08-27
Сообщения: 53
Репутация: +  -5  -
Профиль   Отправить e-mail  

Небольшая игра

Kasta_neda
Общая критика игры:
1. Правило игры можно сделать кнопкой в главном окне. Если я знаю правила, то меня напрягает закрывать окно при каждом запуске, а если подзаюыл, то заставляетм меня перезапускать игру, чтобы подсмотреть правила.
2. Угадываемые слова не должны быть жёстко заданы в коде. Например сделать ввиде окна для ввода списка слов и сохранение их в шифрованном виде в файл. А программа при запуске проверяет наличие файла и при успешности загружает из него.
3. Кнопки-буквы друг на друге налеплены.
4. Цвета везде яркие, клетки не квадратные.



_________________________________________
Python_Examples.7z

Офлайн

#2 Авг. 31, 2014 13:09:51

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Небольшая игра

кнопки-буквы налеплены? в каком смысле? может координаты на разных мониторах смещаются?

Офлайн

#3 Авг. 31, 2014 13:42:43

AZJIO
Зарегистрирован: 2014-08-27
Сообщения: 53
Репутация: +  -5  -
Профиль   Отправить e-mail  

Небольшая игра

4kpt_II
AZJIO
Тут вообще ни if ни elif не нужен
Ну сама конструкция if, elif тоже должны быть правильные. Конечно можно всю программу переписать красивее и компактнее, но для текущих использованных конструкций они не совершенны.

Kasta_neda
кнопки-буквы налеплены? в каком смысле? может координаты на разных мониторах смещаются?
btn[u] = Button(root , text = u, width=3, height=1, command = lambda: a(u))
Ширина 3 высота 1, значит это уже не квадрат. А размешение кнопок идёт по клеткам. А клетки почти квадратные 27x33, в любом случае это не как не соотношение 1 к 3.

Вместо 4-х циклов можно использовать один цикл
	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



_________________________________________
Python_Examples.7z

Отредактировано AZJIO (Авг. 31, 2014 15:09:10)

Офлайн

#4 Авг. 31, 2014 14:56:05

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Небольшая игра

за это спасибо, поначалу ломал голову, как сократить красиво

        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

Офлайн

#5 Авг. 31, 2014 15:03:23

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Небольшая игра

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

#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'водитель']
pobed = 0
poraj = 0
        
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="white", outline="blue")
                
                x=x+33
            y = y + 27
            
    def arr(): #основная функция
        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'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
        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)
        er = [] # ошибки
        win = [] # угаданные слова
        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 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]
                    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"))
                    pobed =+1
                    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")
                    end()
                    poraj =+1
                    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 end():
            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' 
        return pobed, poraj
    def butCallback():
        mainWindow2()
    but1 = Button(root,
                        text = "-> Help",
                        command = butCallback )    
    but1.pack()
    btn01 = Button(root , text = 'Start', width=3, height=1, command = arr)
    btn01.place(x=298,y=542)
    btn01["bg"] = "red"
    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 ="-> Game",
                        command = butCallback )    
    but1.pack()  
    root.mainloop()
    
if __name__ == '__main__':
    mainWindow1()

Офлайн

#6 Авг. 31, 2014 15:36:29

AZJIO
Зарегистрирован: 2014-08-27
Сообщения: 53
Репутация: +  -5  -
Профиль   Отправить e-mail  

Небольшая игра

Цвет клеток #B0D0FF (сетки)
Цвет кнопки

btn01 = Button(root , text = 'Играть сначала', width=11, height=1, command = arr, bg="#FFD0A0", fg="#000077")
Тексты “Правила игры”, “Закрыть”. Стрелки на кнопках “->” зачем?
Функцию arr можно выполнять при старте. В любом случае это придётся сделать пользователя вручную.



_________________________________________
Python_Examples.7z

Отредактировано AZJIO (Авг. 31, 2014 15:38:07)

Офлайн

#7 Авг. 31, 2014 18:13:58

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Небольшая игра

#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'водитель']
pobed = 0
poraj = 0
        
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(): #основная функция
        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 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]
                    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"))
                    pobed =+1
                    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")
                    end()
                    poraj =+1
                    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 end():
            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' 
        return pobed, poraj
    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=298,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()

Офлайн

#8 Сен. 5, 2014 21:21:37

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Небольшая игра

Не получается передать из одной функции в другую (arr >> a), переменные, побед-поражений, пришлось файл статистики по несколько раз считывать, подскажите варианты

файл foo.txt

0
0
#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()

Отредактировано Kasta_neda (Сен. 6, 2014 09:14:37)

Офлайн

#9 Сен. 6, 2014 09:30:19

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Небольшая игра

почему бы не написать примерно так:

def skeleton():
    pass
def secret_word():
    pass
def grid():
    pass
def gallows():
    pass
def alphabet():
    pass
def start_but():
    pass
#------------------------
# нарисовать главное окно
# нарисовать сетку
# нарисовать виселицу
# нарисовать алфавит
# итд.
#
#

а по вопросу как то так можно:
def f():
    var = a + 1
    return var
a = 0
print a
a = f()
print a

и из личного не богатого опыта:
усложнять скрипт не владея основами - ещё больше себя запутывать и бесполезно терять время

Офлайн

#10 Сен. 6, 2014 10:20:37

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

Небольшая игра

vrabey
а по вопросу как то так можно:
да, счетчик вызовов функции, я думал применить, но скорее всего вы правы, надо полностью переделать программу

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version