Форум сайта python.su
Всем привет , я новичок в питоне делаю игру , принцип игры такой, появляется объект на экране к примеру круг или квадрат и через 1 секунду он должен появиться уже в другом месте и так далее человек должен кликать на этот объект , за это он получает 1 очко сверху будет надпись Score и сколько очков на данный момент заработал так же идет таймер до окончания игры за 30 секунд к примеру он должен максимально сколько сможет кликнуть на объект который появляется в разных точках , после окончания таймера игра заканчивается и выходит окно начать заново игру или выйти из игры.
Код не много написан сделал меню . во 2 окне только оформление не знаю с чего начать и как написать буду рад если поможете
from tkinter import * import math from tkinter.messagebox import * import math import random def playd(): win.destroy() win2=Tk() canva2=Canvas(win2,width=400,height=400,bg="Green") # fon okna canva2.pack(expand=YES,fill=BOTH) c=Canvas(win2,width=50,height=50) #razmer c.pack(expand=YES,fill=BOTH) img=PhotoImage(file='blue.png') #objekt c.create_image(0, 0, image=img, anchor=NW) c.place(x=200,y=500) cz=Canvas(win2,width=50,height=50) #razmer cz.pack(expand=YES,fill=BOTH) imgz=PhotoImage(file='yellow.png') #objekt cz.create_image(0, 0, image=imgz, anchor=NW) cz.place(x=600,y=100) labb=Label(win2, text="Score: \n", font="Arrial 17", bg="Green" ) labb.place(x=350,y=10) win2.title("Catch a square") win2.resizable(width=FALSE,height=FALSE) win2.minsize(width=800,height=600) win2.mainloop() def close(): if askyesno("Exit","Are you sure?"): win.destroy() win=Tk() win.title("Start Menu") canva=Canvas(win,width=400,height=400,bg="Light Blue") canva.pack(expand=YES,fill=BOTH) win.minsize(width=400,height=400) win.resizable(width=FALSE,height=FALSE) but=Button(win, text="Начать игру" ,width=25,height=5, bg="green", command=playd) but.place(x=100,y=100) but2=Button(win, text="Выйти из игры" ,width=25,height=5, bg="green", command=close) but2.place(x=100,y=200) lab=Label(win, text="Catch a square \n", font="Arrial 17", bg="Light Blue" ) lab.place(x=120,y=20)
Отредактировано vladik_kurochkin@mail.ru (Март 12, 2016 18:06:22)
Офлайн
[code python][/code]
Офлайн
извиняюсь исправил)
Отредактировано vladik_kurochkin@mail.ru (Март 12, 2016 18:06:54)
Офлайн
vladik_kurochkin@mail.ru
Готовьтесь к люлям от 4pkt
Офлайн
FishHook
Тут не знаешь за что вывешивать начинать.
vladik_kurochkin@mail.ru
Что у Вас конкретно не получается?
Есть функция .after(). С помощью нее задаете момент остановки игры. Дальше. Пишите функцию, которая будет отображать фигуры на экране (лучше для фигур использовать стандартные фигуры Canvas). На нажатие на фигуру вешаете событие .tag_bind() которое пишет счетчик количества попаданий…
Теперь по Вашему коду конкретно:
1. Не используйте конструкцию from tkinter import никогда!!!
2. Называйте переменные так, чтобы их можно было читать. lab, but, c, canvas2 ни о чем Вам не скажут через 10-15 дней
3. place использовать нужно и можно, вот только он не для этого случая. У него специальное назначение. Ну и даже в этом случае попиксельно привязываться все равно нельзя. Смотрите в сторону методов grid и pack.
4. Создавать заново окно нельзя. В этом случае Вы теряете весь поток событий, который Вы на него повесили. Правильнее делать следующим образом: создаете окно. На нем с помощью двух рамок размещаете меню и рабочую область. Рабочую область (рамку) можно удалять и создавать заново. Можно просто скрывать (зависит от задачи).
Еще ошибок море, но это самые серьезные. Исправьте их перед тем, как выкладывать следующий код…
Офлайн